| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- <?php
- namespace App\Module\OAuth\Services;
- use App\Module\User\Models\User;
- use Illuminate\Support\Facades\Hash;
- use Illuminate\Support\Str;
- class AuthService
- {
- /**
- * 尝试登录
- *
- * @param string $username
- * @param string $password
- * @return array|null
- */
- public function attempt(string $username, string $password): ?array
- {
- $user = User::where('mobile', $username)->first();
- // 不验证密码,方便演示
- if (!$user) {
- return null;
- }
- // if (!$user || !Hash::check($password, $user->password)) {
- // return null;
- // }
- // 生成会话令牌
- $token = Str::random(64);
- // 存储会话信息
- session([
- 'oauth_user_id' => $user->user_id,
- 'oauth_token' => $token
- ]);
- return [
- 'id' => $user->user_id,
- 'username' => $user->mobile,
- 'token' => $token
- ];
- }
- /**
- * 获取当前登录用户
- *
- * @return array|null
- */
- public function user(): ?array
- {
- $userId = session('oauth_user_id');
- $token = session('oauth_token');
- if (!$userId || !$token) {
- return null;
- }
- $user = User::find($userId);
- if (!$user) {
- return null;
- }
- return [
- 'id' => $user->user_id,
- 'username' => $user->mobile,
- 'token' => $token
- ];
- }
- /**
- * 检查是否已登录
- *
- * @return bool
- */
- public function check(): bool
- {
- return $this->user() !== null;
- }
- /**
- * 退出登录
- *
- * @return void
- */
- public function logout(): void
- {
- session()->forget(['oauth_user_id', 'oauth_token']);
- }
- }
|