Files
AI-Chat/app/Controllers/AuthController.php

70 lines
1.9 KiB
PHP

<?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']
]
]);
}
}