2017-09-11 10 views
0

J'ai une application AdminLTE sur laravel et lorsque l'utilisateur admin se connecte via l'écran de connexion AdminLte, il se connecte au panneau d'administration et accède à ses pages. C'est ok, quand il ouvre le site Web de frontend, le nom d'admin montre sur l'en-tête (comme montré sur l'image ci-dessous) pendant qu'il se connecte précédemment à travers l'écran de connexion d'admin.Restreindre l'accès | changer de modèle ou de redirection en fonction du rôle de l'utilisateur

enter image description here

Ce que je veux, il ne doit pas se logger sur les pages du site avant. (Les éléments suivants doivent apparaître sur l'en-tête comme indiqué sur l'image ci-dessous).

enter image description here

Il a besoin de se connecter séparément sur place avant. Quelle est la solution pour cela?

+0

Je considère ce que vous voulez utilisateur de se connecter sur le site avant et administrateur pour vous connecter en utilisant la page de connexion admin si tel est le cas, vous besoin de faire multi-auth, vous avez besoin de 2 gardes séparés un pour l'administrateur et un pour l'utilisateur, garde protégera l'administrateur pour accéder aux pages d'utilisateur et l'utilisateur pour accéder aux pages d'administration – dollar

+0

@dollar OK, Comment faire des gardes. Pouvez-vous écrire une réponse? –

+0

@dollar, Dans mon cas, l'administrateur peut accéder aux pages du site Web frontal, mais il ne doit pas être connecté au site Web –

Répondre

1

ok donc vous devez faire si et sinon sur app.blade.php d'où votre menu est généré.

@if (!Auth::guest()) 
    @include('admin.includes.normal_header') 
@endif 
+0

Ok, laissez-moi essayer, je dois mettre ceci sinon sur ma page de mise en page de site Web –

+0

Donc, dans ce cas, l'utilisateur admin se connecte toujours sur le site Web frontal? –

0

Vous devez créer deux middleware, l'un est un middleware administrateur, l'autre est un utilisateur normal. Dans un middleware normal, vous pouvez vérifier si l'utilisateur est connecté en tant qu'administrateur ou non. Si vous êtes connecté en tant qu'administrateur, déconnectez-le.

+0

Selon votre réponse, si je me déconnecte admin, il reste toujours connecté au panneau d'administration? –

+0

Non, l'administrateur sera entièrement déconnecté. – Naime

+0

Je veux qu'il reste encore lonin au panneau d'administration –

0

Il existe plusieurs façons de surmonter ceci:

  1. vous pouvez utiliser différents agents et middleware (en utilisant le tableau séparé pour admin et utilisateur)
  2. vous pouvez utiliser l'autorisation basée sur les rôles (si vous utilisez la table des utilisateurs pour les deux types d'utilisateurs)

Étape - 1: créer une table de rôles (id de: Col., rôle) et un modèle Role.php
Étape - 2: ajouter une colonne nommée 'role_id' à votre table utilisateur
Étape - 3: faire une relation pour le rôle et l'utilisateur sur votre User.php modèle utilisateur appartient à un rôle

// En supposant que vous avez 2 rôles: 1->Admin, 2->User

public function role(){ 
    return $this->belongsTo(Role::class); 
} 

étape 3: en vous nav, utilisez le si d'autre état

 @if (!Auth::guest()) 
      @if(auth()->user()->role()->id == 1) 
       @include('admin.admin_header_nav') 
      @else 
       @include('user.normal_header_nav') 
      @endif   
    @endif 


    // you can just use those condition on a link, or create a middleware  
    //called admin to wrap up the condition(auth()->user()->role()->id == 1),  
    // leaving it up to you