Hai sahabat coding, untuk para pecinta framework laravel terutama versi 8.0 tentunya sudah mengetahui untuk membuat Auth tidak lagi menggunakan make:auth pada versi laravel 8 ini menggunakan laravel jetstream yang didalamnya terdapat fitur untuk login, registrasi, email verifikasi, two-factor autentication, session management API support menggunakan Sanctum, dan optional team management, namun untuk pemula dengan scope project yang tidak memerlukan keseluruhan dari fitur yang disediakan jetstream, project yang anda buat hanya untuk login, registrasi dan email verifikasi, anda dapat membuat sendiri tanpa menggunakan laravel Jetstream, sehingga size project yang anda buat tidak terlalu besar.
1. Helper response json
2. Membuat Login backend
3. Logout
2. Membuat Login backend
3. Logout
Helper Response Json
[code hl="1, 4, 7"]
if (! function_exists('response_json')) {
function response_json($success = false, $error = null, $message = '', $data = null, $filter = null)
{
$response = [
'success' => $success,
'error' => $error,
'message' => $message
];
if ($data) {
$response['data'] = $data;
}
if ($filter) {
$response['filter'] = $filter;
}
return response()->json($response);
}
}
[/code]
buat file helper dengan nama Helpers.php di dalam folder app
kemudian: pada Provider/AppServiceProvider.php
tambahkan script berikut:
[code hl="1, 4, 7"]
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
require __DIR__.'/Helpers.php';
}
[/code]
Helper response_json diatas juga dapat dugunakan untuk return api.
Membuat Login backend
Masuk ke project yang anda buat:1. Contoh membuat project: composer create-project --prefer-dist laravel/laravel blog
2. Masuk ke folder blog: cd blog
3. Buat Login controller pada folder Auth: php artisan make:controller Auth/LoginController
untuk laravel module: php artisan module:make-controller Auth/LoginController ManageUser
*module yang dibuat ManageUser
[code hl="1, 4, 7"]
namespace Modules\ManageUser\Http\Controllers\Auth\Backend;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
class LoginController extends Controller
{
/**
* The path to the "home" route for your application.
*
* This is used by Laravel authentication to redirect users after login.
*
* @var string
*/
protected $redirectPath = RouteServiceProvider::HOME;
/**
* UserController constructor.
*
*/
public function __construct()
{
$this->middleware(['guest'])->except(['logout']);
$this->middleware(['auth'])->only(['logout']);
}
/**
* Display a listing of the resource.
* @return Renderable
*/
public function showLoginForm()
{
return view('manageuser::auth.login');
}
/**
* Update the specified resource in storage.
* @param Request $request
* @return Renderable
*/
public function login(Request $request)
{
$validator = $this->validateFormRequest($request);
if ($validator->fails()) {
return response_json(false, $validator->errors(), $validator->errors()->first());
}
$remember = $request->has('remember') ? true : false;
if (Auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password')], $remember)) {
return response_json(true, null, 'Login Berhasil.', redirect()->intended($this->redirectPath)->getTargetUrl());
}
return response_json(false, 'UserNotFoundException', 'Identitas tersebut tidak cocok dengan data kami.');
}
/**
*
* Validation Rules for Login
*
*/
public function validateFormRequest($request)
{
return Validator::make($request->all(), [
'email' => 'bail|required',
'password' => 'bail|required'
]);
}
[/code]
function showLoginForm: return view sesuaikan dengan view yang ada buat.
Logout
[code hl="1, 4, 7"]
/**
* Update the specified resource in storage.
* @param Request $request
* @return Renderable
*/
public function logout(Request $request)
{
Auth::logout();
if (! $request->expectsJson()) {
return redirect($this->redirectPath);
}
return response_json(true, null, 'Login Berhasil.', redirect($this->redirectPath)->getTargetUrl());
}
[/code]
[code hl="1, 4, 7"]
/*
|--------------------------------------------------------------------------
| User Providers
|--------------------------------------------------------------------------
|
| All authentication drivers have a user provider. This defines how the
| users are actually retrieved out of your database or other storage
| mechanisms used by this application to persist your user's data.
|
| If you have multiple user tables or models you may configure multiple
| sources which represent each model / table. These sources may then
| be assigned to any extra authentication guards you have defined.
|
| Supported: "database", "eloquent"
|
*/
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => \Modules\ManageUser\Entities\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
[/code]
*Sesuaikan model user yang akan anda gunakan untuk Autentikasi: config -- auth
pada bagian 'model' => \Modules\ManageUser\Entities\User::class, dikarenakan karena entities yang saya gunakan terdapat pada module Manage User
Route
[code hl="1, 4, 7"]
Route::prefix('auth')->namespace('Auth')->group(function() {
Route::namespace('Backend')->group(function() {
Route::get('login', 'LoginController@showLoginForm')->name('login');
Route::post('login', 'LoginController@login')->name('post-login');
Route::match(['GET', 'POST'], 'logout', 'LoginController@logout')->name('logout');
});
});
[/code]
Selamat Mencoba
0 Comments