6
0
Fork 0
jiqu-library-server/app/Endpoint/Api/Http/Controllers/LoginController.php

45 lines
1.2 KiB
PHP

<?php
namespace App\Endpoint\Api\Http\Controllers;
use App\Constants\Device;
use App\Endpoint\Api\Http\Requests\LoginRequest;
use App\Exceptions\BizException;
use App\Models\User;
use App\Services\CaptchaService;
class LoginController extends Controller
{
/**
* 登录
*
* @param \App\Endpoint\Api\Http\Requests\LoginRequest $request
* @param \App\Services\CaptchaService $captchaService
* @return \Illuminate\Http\JsonResponse
*/
public function __invoke(LoginRequest $request, CaptchaService $captchaService)
{
$captchaService->validatePhrase(
(string) $request->input('captcha_key'),
(string) $request->input('captcha_phrase')
);
$user = User::where('phone', $request->input('phone'))->first();
if (! $user?->verifyPassword($request->input('password'))) {
throw new BizException(__('Incorrect account or password'));
}
$user->update([
'last_login_at' => now(),
'last_login_ip' => $request->realIp(),
]);
$user->tokens()->delete();
return response()->json(
$user->createDeviceToken(Device::UNIAPP)
);
}
}