77 lines
1.7 KiB
PHP
77 lines
1.7 KiB
PHP
|
|
<?php
|
|||
|
|
|
|||
|
|
namespace app\common\service;
|
|||
|
|
|
|||
|
|
use app\common\logic\AuthLogic;
|
|||
|
|
use app\common\model\User;
|
|||
|
|
use support\Db;
|
|||
|
|
|
|||
|
|
class AuthService
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 登录,支持多类型
|
|||
|
|
*/
|
|||
|
|
public function login(array $data): array
|
|||
|
|
{
|
|||
|
|
$loginType = $data['login_type'] ?? 'upwd';
|
|||
|
|
$logic = new AuthLogic();
|
|||
|
|
|
|||
|
|
return match ($loginType) {
|
|||
|
|
'feishu' => $logic->feishuLogin($data),
|
|||
|
|
'qrcode' => $logic->qrCodeLogin($data),
|
|||
|
|
default => $logic->uPwdLogin($data),
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 用户注册
|
|||
|
|
*/
|
|||
|
|
public function register(array $data)
|
|||
|
|
{
|
|||
|
|
$logic = new AuthLogic();
|
|||
|
|
try {
|
|||
|
|
Db::beginTransaction();
|
|||
|
|
$result = $logic->register($data);
|
|||
|
|
Db::commit();
|
|||
|
|
return $result;
|
|||
|
|
} catch (\Throwable $e) {
|
|||
|
|
Db::rollback();
|
|||
|
|
throw $e;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 校验token
|
|||
|
|
*/
|
|||
|
|
public function verifyToken(string $token, string $systemCode): array
|
|||
|
|
{
|
|||
|
|
return (new AuthLogic())->verifyToken($token, $systemCode);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 刷新token
|
|||
|
|
* @param string $refreshToken
|
|||
|
|
* @param string|null $systemCode
|
|||
|
|
*/
|
|||
|
|
public function refreshToken(string $refreshToken, string $systemCode): array
|
|||
|
|
{
|
|||
|
|
return (new AuthLogic())->refreshToken($refreshToken, $systemCode);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 登出(失效token)
|
|||
|
|
*/
|
|||
|
|
public function logout(?string $token, string $systemCode): void
|
|||
|
|
{
|
|||
|
|
(new AuthLogic())->logout($token, $systemCode);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 强制拉黑token
|
|||
|
|
*/
|
|||
|
|
public function blockToken(string $token, string $systemCode): void
|
|||
|
|
{
|
|||
|
|
(new AuthLogic())->blockToken($token, $systemCode);
|
|||
|
|
}
|
|||
|
|
}
|