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',
    ];
}

avatar kokujo
@kokujo

1 Kontribusi 0 Poin

Diperbarui 6 tahun yang lalu

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

avatar arislanhaikal
@arislanhaikal

40 Kontribusi 8 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban