48 lines
1.4 KiB
PHP
48 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\Auth;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Carbon\Carbon;
|
|
|
|
class LoginController extends Controller
|
|
{
|
|
/**
|
|
* Handle the incoming request.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
public function __invoke(Request $request): \Illuminate\Http\JsonResponse
|
|
{
|
|
|
|
//Проверка данных
|
|
$credentials = $request->only('email', 'password');
|
|
|
|
if (!Auth::attempt($credentials)) {
|
|
return response()->json([
|
|
'message' => 'You cannot sign with those credentials',
|
|
'errors' => 'Unauthorised'
|
|
], 401);
|
|
}
|
|
|
|
//Генерация токена
|
|
$token = Auth::user()->createToken(config('app.name'));
|
|
|
|
//Если отмечено в чек box что "сохрани меня", то токен хранится месяц, иначе 1 день
|
|
$token->token->expires_at = $request->remember_me ?
|
|
Carbon::now()->addMonth() :
|
|
Carbon::now()->addDay();
|
|
|
|
$token->token->save();
|
|
|
|
return response()->json([
|
|
'token_type' => 'Bearer',
|
|
'token' => $token->accessToken,
|
|
'expires_at' => Carbon::parse($token->token->expires_at)->toDateTimeString()
|
|
], 200);
|
|
}
|
|
}
|