128 lines
2.9 KiB
PHP
128 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\API;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use App\Models\User;
|
|
|
|
class LoginApiController extends Controller
|
|
{
|
|
/**
|
|
* Create a new AuthController instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->middleware('auth:api', ['except' => ['login', 'register', 'hai']]);
|
|
}
|
|
|
|
/**
|
|
* Get a JWT via given credentials.
|
|
*
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
public function login()
|
|
{
|
|
// $request->validate([
|
|
// 'email' => 'required|string|email',
|
|
// 'password' => 'required',
|
|
// ]);
|
|
|
|
$credentials = request(['email', 'password']);
|
|
|
|
if (!($token = auth()->attempt($credentials))) {
|
|
return response()->json(['error' => 'Unauthorized'], 401);
|
|
}
|
|
|
|
return $this->respondWithToken($token);
|
|
}
|
|
|
|
/**
|
|
* Get the authenticated User.
|
|
*
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
public function me()
|
|
{
|
|
return response()->json(Auth::user());
|
|
}
|
|
|
|
public function hai()
|
|
{
|
|
return response()->json([
|
|
'message' => 'Hello from API',
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Log the user out (Invalidate the token).
|
|
*
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
public function logout()
|
|
{
|
|
auth()->logout();
|
|
|
|
return response()->json(['message' => 'Successfully logged out']);
|
|
}
|
|
|
|
/**
|
|
* Refresh a token.
|
|
*
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
public function refresh()
|
|
{
|
|
return $this->respondWithToken(Auth::refresh());
|
|
}
|
|
|
|
/**
|
|
* Get the token array structure.
|
|
*
|
|
* @param string $token
|
|
*
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
protected function respondWithToken($token)
|
|
{
|
|
return response()->json([
|
|
'user' => auth()->user(),
|
|
'access_token' => $token,
|
|
'token_type' => 'bearer',
|
|
'expires_in' => Auth::factory()->getTTL() * 60,
|
|
// 'status' => auth()->check(),
|
|
]);
|
|
}
|
|
|
|
public function register(Request $request)
|
|
{
|
|
$request->validate([
|
|
'name' => 'required|string|max:255',
|
|
'email' => 'required|string|email|unique:users',
|
|
'password' => 'required|string|min:8',
|
|
]);
|
|
|
|
$user = User::create([
|
|
'name' => $request->name,
|
|
'email' => $request->email,
|
|
'password' => Hash::make($request->password),
|
|
]);
|
|
|
|
return response()->json([
|
|
'message' => 'User created successfully',
|
|
'user' => $user,
|
|
]);
|
|
}
|
|
|
|
// public function check()
|
|
// {
|
|
// return response()->json([
|
|
// 'status' => auth()->check(),
|
|
// ]);
|
|
// }
|
|
}
|