validate([ 'token' => ['required', 'string', 'max:512'], 'platform' => ['nullable', 'string', 'max:32'], 'device_name' => ['nullable', 'string', 'max:120'], ]); $user = $request->user(); $now = now(); UserPushToken::updateOrCreate( ['token' => $data['token']], [ 'user_id' => $user->id, 'platform' => $data['platform'] ?? 'android', 'device_name' => $data['device_name'] ?? $user->currentAccessToken()?->name, 'last_seen_at' => $now, ], ); $user->update(['last_app_active_at' => $now]); return response()->json(['data' => ['registered' => true]]); } public function destroy(Request $request): JsonResponse { $data = $request->validate([ 'token' => ['required', 'string', 'max:512'], ]); $request->user() ->pushTokens() ->where('token', $data['token']) ->delete(); return response()->json(['data' => ['removed' => true]]); } }