bug fix for login and llm providers
This commit is contained in:
parent
24daddff7b
commit
e900ebc957
6 changed files with 125 additions and 8 deletions
|
|
@ -43,10 +43,32 @@ public function login(Request $request): JsonResponse
|
||||||
'password' => 'required|string',
|
'password' => 'required|string',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
// 添加請求日誌
|
||||||
|
Log::info('Login attempt details', [
|
||||||
|
'email' => $validated['email'],
|
||||||
|
'request_data' => $request->all()
|
||||||
|
]);
|
||||||
|
|
||||||
/** @var Admin|null $admin */
|
/** @var Admin|null $admin */
|
||||||
$admin = Admin::where('email', $validated['email'])->first();
|
$admin = Admin::where('email', $validated['email'])->first();
|
||||||
|
|
||||||
|
// 添加用戶查詢日誌
|
||||||
|
Log::info('Admin query result', [
|
||||||
|
'admin_found' => $admin ? 'yes' : 'no',
|
||||||
|
'admin_data' => $admin ? [
|
||||||
|
'id' => $admin->id,
|
||||||
|
'email' => $admin->email,
|
||||||
|
'role' => $admin->role
|
||||||
|
] : null
|
||||||
|
]);
|
||||||
|
|
||||||
if (!$admin || !Hash::check($validated['password'], $admin->password)) {
|
if (!$admin || !Hash::check($validated['password'], $admin->password)) {
|
||||||
|
// 添加密碼驗證日誌
|
||||||
|
Log::info('Password verification failed', [
|
||||||
|
'has_admin' => $admin ? 'yes' : 'no',
|
||||||
|
'password_check' => $admin ? Hash::check($validated['password'], $admin->password) : 'admin not found'
|
||||||
|
]);
|
||||||
|
|
||||||
return $this->error(
|
return $this->error(
|
||||||
ErrorCode::INVALID_CREDENTIALS,
|
ErrorCode::INVALID_CREDENTIALS,
|
||||||
ErrorCode::getMessage(ErrorCode::INVALID_CREDENTIALS)
|
ErrorCode::getMessage(ErrorCode::INVALID_CREDENTIALS)
|
||||||
|
|
@ -71,6 +93,9 @@ public function login(Request $request): JsonResponse
|
||||||
]);
|
]);
|
||||||
|
|
||||||
} catch (ValidationException $e) {
|
} catch (ValidationException $e) {
|
||||||
|
Log::error('Validation error during login', [
|
||||||
|
'errors' => $e->errors(),
|
||||||
|
]);
|
||||||
return $this->error(
|
return $this->error(
|
||||||
ErrorCode::VALIDATION_ERROR,
|
ErrorCode::VALIDATION_ERROR,
|
||||||
ErrorCode::getMessage(ErrorCode::VALIDATION_ERROR),
|
ErrorCode::getMessage(ErrorCode::VALIDATION_ERROR),
|
||||||
|
|
@ -80,6 +105,8 @@ public function login(Request $request): JsonResponse
|
||||||
Log::error('Error during admin login', [
|
Log::error('Error during admin login', [
|
||||||
'error' => $e->getMessage(),
|
'error' => $e->getMessage(),
|
||||||
'trace' => $e->getTraceAsString(),
|
'trace' => $e->getTraceAsString(),
|
||||||
|
'file' => $e->getFile(),
|
||||||
|
'line' => $e->getLine()
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return $this->error(
|
return $this->error(
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,12 @@
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||||
|
use Laravel\Sanctum\HasApiTokens;
|
||||||
|
|
||||||
class Admin extends Authenticatable
|
class Admin extends Authenticatable
|
||||||
{
|
{
|
||||||
|
use HasApiTokens;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 管理员角色常量
|
* 管理员角色常量
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.2",
|
"php": "^8.2",
|
||||||
"laravel/framework": "^11.31",
|
"laravel/framework": "^11.31",
|
||||||
|
"laravel/sanctum": "^4.0",
|
||||||
"laravel/tinker": "^2.9",
|
"laravel/tinker": "^2.9",
|
||||||
"predis/predis": "^2.3"
|
"predis/predis": "^2.3"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
66
composer.lock
generated
66
composer.lock
generated
|
|
@ -4,7 +4,7 @@
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "3c2add9f85c3cab994b57b6b8ff1eb72",
|
"content-hash": "e7dd48d806ba5d560c773b49c46386e5",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "brick/math",
|
"name": "brick/math",
|
||||||
|
|
@ -1326,6 +1326,70 @@
|
||||||
},
|
},
|
||||||
"time": "2024-11-12T14:59:47+00:00"
|
"time": "2024-11-12T14:59:47+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "laravel/sanctum",
|
||||||
|
"version": "v4.0.5",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/laravel/sanctum.git",
|
||||||
|
"reference": "fe361b9a63407a228f884eb78d7217f680b50140"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/laravel/sanctum/zipball/fe361b9a63407a228f884eb78d7217f680b50140",
|
||||||
|
"reference": "fe361b9a63407a228f884eb78d7217f680b50140",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-json": "*",
|
||||||
|
"illuminate/console": "^11.0",
|
||||||
|
"illuminate/contracts": "^11.0",
|
||||||
|
"illuminate/database": "^11.0",
|
||||||
|
"illuminate/support": "^11.0",
|
||||||
|
"php": "^8.2",
|
||||||
|
"symfony/console": "^7.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"mockery/mockery": "^1.6",
|
||||||
|
"orchestra/testbench": "^9.0",
|
||||||
|
"phpstan/phpstan": "^1.10",
|
||||||
|
"phpunit/phpunit": "^10.5"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"laravel": {
|
||||||
|
"providers": [
|
||||||
|
"Laravel\\Sanctum\\SanctumServiceProvider"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Laravel\\Sanctum\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Taylor Otwell",
|
||||||
|
"email": "taylor@laravel.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.",
|
||||||
|
"keywords": [
|
||||||
|
"auth",
|
||||||
|
"laravel",
|
||||||
|
"sanctum"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/laravel/sanctum/issues",
|
||||||
|
"source": "https://github.com/laravel/sanctum"
|
||||||
|
},
|
||||||
|
"time": "2024-11-26T14:36:23+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel/serializable-closure",
|
"name": "laravel/serializable-closure",
|
||||||
"version": "v2.0.0",
|
"version": "v2.0.0",
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,10 @@
|
||||||
'driver' => 'session',
|
'driver' => 'session',
|
||||||
'provider' => 'users',
|
'provider' => 'users',
|
||||||
],
|
],
|
||||||
|
'admin' => [
|
||||||
|
'driver' => 'sanctum',
|
||||||
|
'provider' => 'admins',
|
||||||
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -62,13 +66,12 @@
|
||||||
'providers' => [
|
'providers' => [
|
||||||
'users' => [
|
'users' => [
|
||||||
'driver' => 'eloquent',
|
'driver' => 'eloquent',
|
||||||
'model' => env('AUTH_MODEL', App\Models\User::class),
|
'model' => App\Models\User::class,
|
||||||
|
],
|
||||||
|
'admins' => [
|
||||||
|
'driver' => 'eloquent',
|
||||||
|
'model' => App\Models\Admin::class,
|
||||||
],
|
],
|
||||||
|
|
||||||
// 'users' => [
|
|
||||||
// 'driver' => 'database',
|
|
||||||
// 'table' => 'users',
|
|
||||||
// ],
|
|
||||||
],
|
],
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,27 @@ INSERT INTO `admins` (`username`, `email`, `password`, `role`, `created_at`, `up
|
||||||
VALUES (
|
VALUES (
|
||||||
'admin',
|
'admin',
|
||||||
'admin@cv6.me',
|
'admin@cv6.me',
|
||||||
'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', -- 'abc123' 的 bcrypt hash
|
'$2y$12$co71F.UxUP.TGvI/fMD4JuYS.meR7yoKfPQjQ43hOF.NXIBDn5dRm', -- 'abc123' 的新 hash
|
||||||
'super',
|
'super',
|
||||||
CURRENT_TIMESTAMP,
|
CURRENT_TIMESTAMP,
|
||||||
CURRENT_TIMESTAMP
|
CURRENT_TIMESTAMP
|
||||||
);
|
);
|
||||||
|
|
||||||
|
-- 插入預設的 LLM Provider
|
||||||
|
INSERT INTO `llm_providers` (
|
||||||
|
`name`,
|
||||||
|
`service_name`,
|
||||||
|
`api_url`,
|
||||||
|
`api_token`,
|
||||||
|
`status`,
|
||||||
|
`created_at`,
|
||||||
|
`updated_at`
|
||||||
|
) VALUES (
|
||||||
|
'OpenAI',
|
||||||
|
'openai',
|
||||||
|
'https://api.openai.com/v1',
|
||||||
|
'sk-default-token',
|
||||||
|
'active',
|
||||||
|
CURRENT_TIMESTAMP,
|
||||||
|
CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue