Mobile/app/Http/Controllers/Api/Auth/LoginController.php
2024-01-29 10:53:41 +03:00

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);
}
}