初始化仓库及v1.0.0提交
This commit is contained in:
69
app/Controllers/AuthController.php
Normal file
69
app/Controllers/AuthController.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controllers;
|
||||
|
||||
use App\Models\User;
|
||||
use App\Config\AppConfig;
|
||||
use Firebase\JWT\JWT;
|
||||
use Firebase\JWT\Key;
|
||||
|
||||
class AuthController
|
||||
{
|
||||
public static function login(): void
|
||||
{
|
||||
$input = json_decode(file_get_contents('php://input'), true);
|
||||
$username = $input['username'] ?? '';
|
||||
$password = $input['password'] ?? '';
|
||||
|
||||
if (!$username || !$password) {
|
||||
http_response_code(400);
|
||||
echo json_encode(['success' => false, 'message' => '用户名和密码不能为空']);
|
||||
return;
|
||||
}
|
||||
|
||||
$user = User::findByUsername($username);
|
||||
if (!$user || !User::verifyPassword($username, $password)) {
|
||||
http_response_code(401);
|
||||
echo json_encode(['success' => false, 'message' => '用户名或密码错误']);
|
||||
return;
|
||||
}
|
||||
|
||||
$jwtSecret = AppConfig::get('jwtSecret');
|
||||
$jwtExpiry = AppConfig::get('jwtExpiry', 86400);
|
||||
|
||||
$payload = [
|
||||
'userId' => $user['id'],
|
||||
'username' => $user['username'],
|
||||
'role' => $user['role'],
|
||||
'iat' => time(),
|
||||
'exp' => time() + $jwtExpiry
|
||||
];
|
||||
|
||||
$token = JWT::encode($payload, $jwtSecret, 'HS256');
|
||||
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'data' => [
|
||||
'token' => $token,
|
||||
'user' => [
|
||||
'id' => $user['id'],
|
||||
'username' => $user['username'],
|
||||
'role' => $user['role']
|
||||
]
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
public static function me(): void
|
||||
{
|
||||
$user = $GLOBALS['auth_user'];
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'data' => [
|
||||
'id' => $user['userId'],
|
||||
'username' => $user['username'],
|
||||
'role' => $user['role']
|
||||
]
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user