Files
lgp-admin-plus-api/app/Http/Controllers/Api/LoginController.php

90 lines
2.1 KiB
PHP
Raw Normal View History

2025-05-12 00:19:35 +08:00
<?php
namespace App\Http\Controllers\Api;
use App\BaseApp\BaseController;
use App\Service\LoginService;
use Illuminate\Http\JsonResponse;
class LoginController extends BaseController
{
/**
* 登录控制器注册在免登录组里,继承来的 CRUD 会变成 /api/list/api/create 这种
* 无需鉴权、指向 LoginService根本没有这些方法的路由必须排除
*/
protected array $exceptRoute = ['list', 'option', 'detail', 'create', 'update', 'delete'];
2025-05-12 00:19:35 +08:00
public function __construct()
{
parent::__construct();
$this->service = LoginService::getInstance();
}
/**
* 登录
* @Method POST
* @return JsonResponse
* @throws \Exception
*/
public function login()
{
$this->insertField = [
2025-05-12 16:13:46 +08:00
'account', 'password'
2025-05-12 00:19:35 +08:00
];
$param = $this->checkRequiredFields(request()->post());
return jok(
2025-05-12 16:13:46 +08:00
$this->service->login($param['account'], $param['password']),
2025-05-12 00:19:35 +08:00
'登录成功'
);
}
/**
* 注册
* @Method POST
* @return JsonResponse
* @throws \Exception
*/
public function register()
{
$this->insertField = [
2025-05-12 09:04:46 +08:00
'phone', 'password', 'email', 'code'
2025-05-12 00:19:35 +08:00
];
$param = $this->checkRequiredFields(request()->post());
return jok(
2025-05-12 09:04:46 +08:00
$this->service->register($param['phone'], $param['password'], $param['email'], $param['code']),
2025-05-12 00:19:35 +08:00
'登录成功'
);
}
/**
* 退出登录
* @Method POST
* @throws \Exception
*/
public function logout(): JsonResponse
2025-05-12 16:13:46 +08:00
{
return jok(
$this->service->logout(),
2025-05-12 16:13:46 +08:00
'退出成功'
);
}
/**
* 续签 token
*
* 前端拦截器在 401 时调用,此时 token 已过期,所以只能放在免登录组里,
* LoginService::refresh 自己校验签名与 Redis 会话。
* @Method POST
* @throws \Exception
*/
public function refresh(): JsonResponse
2025-05-12 16:13:46 +08:00
{
return jok(
$this->service->refresh(),
'续签成功'
2025-05-12 16:13:46 +08:00
);
}
2025-05-12 00:19:35 +08:00
}