catchAdmin/modules/User/Http/Controllers/AuthController.php

57 lines
1.4 KiB
PHP
Raw Normal View History

2022-12-05 23:01:12 +08:00
<?php
namespace Modules\User\Http\Controllers;
use Catch\Base\CatchController as Controller;
use Catch\Exceptions\FailedException;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Event;
2023-02-21 09:12:24 +08:00
use Illuminate\Support\Facades\Hash;
2022-12-05 23:01:12 +08:00
use Modules\User\Events\Login;
use Modules\User\Models\User;
2022-12-05 23:01:12 +08:00
class AuthController extends Controller
{
/**
* @param Request $request
* @return array
*/
public function login(Request $request): array
2022-12-05 23:01:12 +08:00
{
/* @var User $user */
$user = User::query()->where('email', $request->get('email'))->first();
2022-12-05 23:01:12 +08:00
2024-02-01 10:09:47 +08:00
Event::dispatch(new Login($request, $user ? ($user->isDisabled() ? null : $user) : null));
2022-12-05 23:01:12 +08:00
2024-02-01 10:09:47 +08:00
if ($user) {
if ($user->isDisabled()) {
throw new FailedException('账号被禁用,请联系管理员');
}
if (Hash::check($request->get('password'), $user->password)) {
$token = $user->createToken('token')->plainTextToken;
return compact('token');
}
2022-12-05 23:01:12 +08:00
}
2023-02-20 16:15:54 +08:00
throw new FailedException('登录失败!请检查邮箱或者密码');
2022-12-05 23:01:12 +08:00
}
/**
* logout
*
* @return array
2022-12-05 23:01:12 +08:00
*/
public function logout(): array
2022-12-05 23:01:12 +08:00
{
/* @var User $user */
$user = Auth::guard(getGuardName())->user();
2022-12-05 23:01:12 +08:00
$user->currentAccessToken()->delete();
return [];
2022-12-05 23:01:12 +08:00
}
}