diff --git a/app/Http/Controllers/Api/V1/ImageController.php b/app/Http/Controllers/Api/V1/ImageController.php index 9522015b..da342ad1 100644 --- a/app/Http/Controllers/Api/V1/ImageController.php +++ b/app/Http/Controllers/Api/V1/ImageController.php @@ -55,4 +55,9 @@ class ImageController extends Controller 'key', 'name', 'extension', 'pathname', 'origin_name', 'size', 'mimetype', 'md5', 'sha1', 'links' )); } + + public function images(Request $request): Response + { + + } } diff --git a/app/Http/Controllers/Api/V1/TokenController.php b/app/Http/Controllers/Api/V1/TokenController.php index 46f30fcb..d34c85c4 100644 --- a/app/Http/Controllers/Api/V1/TokenController.php +++ b/app/Http/Controllers/Api/V1/TokenController.php @@ -5,65 +5,37 @@ namespace App\Http\Controllers\Api\V1; use App\Http\Controllers\Controller; use App\Models\User; use Illuminate\Http\Request; +use Illuminate\Http\Response; +use Illuminate\Support\Facades\Hash; +use Illuminate\Validation\ValidationException; class TokenController extends Controller { - /** - * Display a listing of the resource. - * - * @return \Illuminate\Http\Response - */ - public function index() + public function store(Request $request): Response { - // + try { + $request->validate([ + 'email' => 'required|email', + 'password' => 'required', + ]); + } catch (ValidationException $e) { + return $this->error($e->validator->errors()->first()); + } + + /** @var User|null $user */ + $user = User::query()->where('email', $request->email)->first(); + + if (! $user || ! Hash::check($request->password, $user->password)) { + return $this->error('The email address or password is incorrect.'); + } + + $token = $user->createToken($user->email)->plainTextToken; + + return $this->success('success', compact('token')); } - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function store(Request $request) + public function clear(): Response { - /** @var User $user */ - $user = $request->user(); - $token = $user->createToken('test'); - return $this->success('success', $token->toArray()); - } - - /** - * Display the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function show($id) - { - // - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\Response - */ - public function update(Request $request, $id) - { - // - } - - /** - * Remove the specified resource from storage. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function destroy($id) - { - // } } diff --git a/resources/views/common/api.blade.php b/resources/views/common/api.blade.php index f7df8533..51384c9f 100644 --- a/resources/views/common/api.blade.php +++ b/resources/views/common/api.blade.php @@ -52,6 +52,84 @@ +

授权相关

+
+
+

生成 Token

+ POST /tokens +
+

请求参数

+ + + + + + + + + + + + + + + + + + + + +
+ 字段 + + 类型 + + 说明 +
emailString邮箱
passwordString密码
+
+
+

返回参数

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 字段 + + 类型 + + 说明 +
statusBoolean状态,true 或 false
messageString描述信息
dataObject数据
tokenStringToken
+
+
+
+

图片相关

@@ -140,7 +218,7 @@ data Object - 图片数据 + 数据 key diff --git a/routes/api.php b/routes/api.php index 1c4323d1..f90db5e5 100644 --- a/routes/api.php +++ b/routes/api.php @@ -17,10 +17,11 @@ use App\Http\Controllers\Api\V1\TokenController; Route::group(['prefix' => 'v1'], function () { Route::post('upload', [ImageController::class, 'upload']); + Route::post('tokens', [TokenController::class, 'store'])->middleware('throttle:3,1'); Route::group([ 'middleware' => 'auth:sanctum', ], function () { - Route::resource('tokens', TokenController::class); + Route::delete('tokens/clear', [TokenController::class, 'clear']); }); });