Anda di halaman 1dari 4

Auth API

Auth API
Set Route

Controller API Login

Sekarang kita akan mulai dengan membuat controller-nya terlebih dahulu, silahkan jalankan perintah berikut ini di dalam
terminal/CMD :

php artisan make:controller Api/Admin/LoginController

Perintah di atas akan digunakan untuk membuat controller baru dengan nama LoginController yang berada di dalam folder
app/Http/Controllers/Api/Admin/ . Dan ditandai dengan informasi seperti pada gambar dibawah ini :

Sekarang buka file tersebut kemudian rubah kode-nya menjadi seperti berikut ini :

<?php

namespace App\Http\Controllers\Api\Admin;

use Illuminate\Http\Request;
use PHPOpenSourceSaver\JWTAuth\Facades\JWTAuth;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;

class LoginController extends Controller


{
/**
* index
*
* @param mixed $request
* @return void
*/
public function index(Request $request)
{
//set validasi
$validator = Validator::make($request->all(), [
'email' => 'required|email',
'password' => 'required',
]);

//response error validasi


if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}

//get "email" dan "password" dari input


$credentials = $request->only('email', 'password');

//check jika "email" dan "password" tidak sesuai


if(!$token = auth()->guard('api')->attempt($credentials)) {

//response login "failed"


return response()->json([
'success' => false,
'message' => 'Email or Password is incorrect'
], 401);

//response login "success" dengan generate "Token"


return response()->json([
'success' => true,
'user' => auth()->guard('api')->user(),
'token' => $token
], 200);
}

/**
* getUser
*
* @return void
*/
public function getUser()
{
//response data "user" yang sedang login
return response()->json([
'success' => true,
'user' => auth()->guard('api')->user()
], 200);
}

/**
* Refresh a token.
*
* @return \Illuminate\Http\JsonResponse
*/
public function refreshToken(Request $request)
{
//refresh "token"
$refreshToken = JWTAuth::refresh(JWTAuth::getToken());

//set user dengan "token" baru


$user = JWTAuth::setToken($refreshToken)->toUser();

//set header "Authorization" dengan type Bearer + "token" baru


$request->headers->set('Authorization','Bearer '.$refreshToken);
//response data "user" dengan "token" baru
return response()->json([
'success' => true,
'user' => $user,
'token' => $refreshToken,
], 200);
}

/**
* logout
*
* @return void
*/
public function logout()
{
//remove "token" JWT
$removeToken = JWTAuth::invalidate(JWTAuth::getToken());

//response "success" logout


return response()->json([
'success' => true,
], 200);

}
}

Route Login
Setelah berhasil membuat controller dan menambahkan method-method di dalamnya, maka sekarang kita lanjutkan untuk
membuat route agar method-method tersebut dapat digunakan di gunakan oleh aplikasi lain atau sering dikenal dengan URL
Design yang sudah kita bahas di awal bab.

Silahkan buka file routes/api.php kemudian ubah kode-nya menjadi seperti berikut ini :
<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::prefix('admin')->group(function () {

//route login
Route::post('/login', [App\Http\Controllers\Api\Admin\LoginController::class, 'index']);

//group route with middleware "auth"


Route::group(['middleware' => 'auth:api'], function() {

//data user
Route::get('/user', [App\Http\Controllers\Api\Admin\LoginController::class, 'getUser']);

//refresh token JWT


Route::get('/refresh', [App\Http\Controllers\Api\Admin\LoginController::class, 'refreshToken']);

//logout
Route::post('/logout', [App\Http\Controllers\Api\Admin\LoginController::class, 'logout']);

});

});

Dari routes di atas kita berhasil membuat url design sebagai berikut :

1. http://localhost:8000/api/admin/login
2. http://localhost:8000/api/admin/user
3. http://localhost:8000/api/admin/refresh
4. http://localhost:8000/api/admin/logout

Anda mungkin juga menyukai