validate([ 'name' => 'nullable|string', 'email' => 'required|email', 'password' => 'required|string', ]); $user = User::where('email', $request->input('email'))->first(); // 检测用户是否存在 if (! $user) { $user = User::create([ 'email' => $request->input('email'), 'password' => bcrypt($request->input('password')), ]); return $this->created($user); } $credentials = $request->only(['email', 'password']); if (! auth()->attempt($credentials)) { return $this->error('Invalid credentials.', 401); } // 用户是否验证了邮箱 if (! $user->hasVerifiedEmail()) { return $this->error('Please verify your email.', 401); } $token = auth()->user()->createToken($request->input('name', 'Api Login'))->plainTextToken; return $this->success(['token' => $token]); } public function session(): JsonResponse { $random = Str::random(64); Cache::put('session_login:'.$random, auth()->user()->id, 60); return $this->success(['url' => route('auth.fast-login', ['token' => $random])]); } public function index(Request $request): JsonResponse { $user = $request->user()->load('user_group'); return $this->success($user); } public function update(Request $request): JsonResponse { $user = $request->user('sanctum'); $user->update($request->only(['name'])); return $this->success($user); } }