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