validate( rules: [ 'username' => ['bail', 'required'], 'password' => ['bail', 'required'], ], attributes: [ 'username' => '账号', 'password' => '密码', ], ); $adminUser = AdminUser::where('username', $validated['username'])->first(); if (! Hash::check($validated['password'], (string) $adminUser?->password)) { throw ValidationException::withMessages([ 'username' => ['账号或密码错误'], ]); } $employee = Employee::where('admin_user_id', $adminUser->id)->first(); if (is_null($employee)) { throw new RuntimeException('员工未找到'); } if ($employee->isResigned()) { throw new RuntimeException('员工已离职'); } $employee->tokens()->delete(); /** @var \Laravel\Sanctum\NewAccessToken */ $accessToken = $employee->createToken( name: 'api', expiresAt: now()->addDays(15), ); return [ 'token' => $accessToken->plainTextToken, ]; } public function destroy(Request $request) { /** @var Employee */ if ($employee = $this->guard()->user()) { $employee->tokens()->delete(); } return response()->noContent(); } }