Postingan lainnya
Multiple Authentication
excuse me, i was trying to make multiple authentication with guards to make separate login page for admin, but its just didnt work
this is the route :
<?php
Route::get('/username/{username}', 'SitesController@username');
Route::get('/about-us', 'SitesController@about');
Route::get('/contact', 'SitesController@contact');
Route::get('/', 'SitesController@root');
Route::get('/daftar', 'FormsController@daftar');
Route::post('/daftar', 'FormsController@store');
Auth::Routes();
Route::get('/login', 'FormsController@login');
Route::post('/login', 'FormsController@loginuser');
Route::prefix('admin')->group(function(){
Route::get('/masuk', 'Auth\AdminLoginController@showLoginForm');
Route::post('/masuk', 'Auth\AdminLoginController@masuk');
Route::get('/root', 'CRUDController@root')->name('admin.root');
});
this is auth.php for the guards :
<?php
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'admin-api' => [
'driver' => 'token',
'provider' => 'admins',
],
'pengguna' => [
'driver' => 'session',
'provider' => 'penggunas',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\admin::class,
],
'penggunas' => [
'driver' => 'eloquent',
'model' => App\pengguna::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
],
'admins' => [
'provider' => 'admins',
'table' => 'password_resets',
'expire' => 60,
],
'penggunas' => [
'provider' => 'penggunas',
'table' => 'password_resets',
'expire' => 60,
],
],
];
this is the AdminLoginController :
<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Auth;
use App\admin;
class AdminLoginController extends Controller
{
public function __construct(){
$this->middleware('guest:admin');
}
public function showLoginForm(){
return view('forms.masukadmin');
}
public function masuk(Request $request){
//validate form data
$this->validate($request,['email' => 'required', 'password' => 'required']);
if(Auth::attempt(['email' => $request->mail, 'password' => $request->pass])){
return 'logged in success';
}
return 'login fail';
}
}
this is the view :
@extends('layouts.main')
@section('content')
<form action="/login" method="POST">
{!! csrf_field() !!}
E-mail : <input type="text" name="mail"><br>
Password : <input type="password" name="pass"><br>
<input type="submit">
</form>
@stop
this is the model :
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
class admin extends Authenticatable
{
protected $guard = 'admin';
protected $fillable = [
'name', 'email', 'status'
];
protected $hidden = [
'password', 'remember_token',
];
}
0
1 Jawaban:
kenapa harus bikin guard untuk multi login di laravel? Kan sudah ada fungsi Auth! Kalo untuk leveling user, simpan saja di database users dengan level. Misal level: admin dan level:karyawan
Semoga jelas
0