2017-10-29 2 views
0

Hey Ich mache ein Projekt, in dem sie mehrere Benutzer mit verschiedenen sind, die sich einloggen werden. Die Benutzer werden entsprechend ihrer Rolle verschiedene Seiten angezeigt. Ich habe einen Code erstellt, aber wenn sich ein Benutzer anmeldet, kann er auf die Seite eines anderen Benutzers zugreifen.Login für mehrere Rollen und Berechtigungen

Dies ist die Anmeldungs ​​Controller

<?php 
namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\User; 
use Auth; 

class LoginController extends Controller 
{ 
    public function login(Request $request) 
    { 
     if (Auth::attempt(request(['email', 'password']))) 
     { 
      $user = User::where('email', $request->email)->firstOrFail(); 

      if($user->is_admin()) 
      { 
       return redirect()->route('dashboard'); 
      } 

      return redirect()->route('home'); 
     } 

     redirect()->back(); 
    } 
} 

sind meine Wege sind

<?php 
    Auth::routes(); 

    Route::get('/home', '[email protected]')->name('home'); 
    Route::group(['middleware' => 'auth'], function() { 
     Route::post('/login/custom', ['uses' => '[email protected]', 'as' => 'login.custom']); 
     Route::get('/login/custom', ['uses' => '[email protected]', 'as' => 'login.custom']); 
     Route::get('/home', function() { return view('home'); })->name('home'); 
     Route::get('/dashboard',function(){ return view('dashboard'); })->name('dashboard'); 
    }); 

Und das ist mein Modell

<?php 
namespace App; 

use Illuminate\Notifications\Notifiable; 
use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable 
{ 
    use Notifiable; 

    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'name', 
     'email', 
     'password', 
    ]; 

    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 
     'remember_token', 
    ]; 

    public function is_admin(){ 
     if(!$this->admin) 
      return false; 

     return true; 
    } 
} 

Bitte sagen Sie mir, was ich falsch mache.

Antwort

0

Es gibt keine Motivation is_admin() Funktion statt ->admin Gebrauch zu verwenden (nur wenn als Boolean/Tinyint auf die Migration setted).

Es gibt true wenn ->admintrue und umgekehrt ist ...

Vielleicht ist Ihr is_admin Funktion funktioniert nicht gut, wie erwartet, und es immer den gleichen Wert Ereignis zurück, wenn jemand ein Admin ist.

Es könnte auch eine gute Idee Ihren create_users_table Migrationscode in der Frage enthalten.

Werfen Sie einen Blick auf: laracasts episode about the authentication

Verwandte Themen