2013-08-02 6 views
0

J'ai une question. J'ai fait une fonction qui dit que 'type' (une colonne dans ma base de données) est égal à cinq, cela affichera des boutons que les autres ne peuvent pas voir. Le problème est lorsque je me déconnecte ou que je me connecte à un utilisateur qui n'a pas le type égal à cinq, il affiche une erreur. Comment pourrais-je le faire dans une fonction if? J'ai essayé différentes choses, mais il affiche toujours des erreurs. Voici ma fonction publique:Laravel 4 fonctions publiques

public function get_dash() { 

    $roles = Auth::user()->type; 

    if ($roles == '5') 
    { 
     return View::make('admin.dash')->with('roles', $roles); 
    } else { 

     return Redirect::to('news/index')->with('danger', 'You either have insufficient permissions to access this page or your user credentials are not refreshed.'); 
      } 
    } 

Je veux essentiellement s'il n'y a pas de type équivaut à cinq dans un compte, ou lorsque je me connecte sur il chargera normalement (juste return View::make('news/index');).

+0

Quelle erreur affiche-t-elle? –

+0

@Antonio Carlos Ribeiro il est dit que l'erreur est dans $ roles = Auth :: user() -> type; , quand je le vois en tant qu'invité, erreur: 'Essayer d'obtenir la propriété de non-objet' – dinomuharemagic

Répondre

2

Avant d'essayer d'accéder à l'objet utilisateur, vérifiez Assurez-vous que l'utilisateur est en fait authentifié en utilisant Auth :: check() comme spécifié dans le manual.

if (Auth::check()) 
{ 
    // The user is logged in... 
} 
0

Lorsqu'un utilisateur n'est pas authentifié, vous avez pas accès à'Auth :: utilisateur() ', si vous avez besoin quelque chose comme ceci:

public function get_index() 
{ 
    if(! Auth::guest()) 
    { 
     $roles = Auth::user()->type; 

     return View::make('aac.index') 
       ->with('newss', News::all()) 
       ->with('roles', $roles); 
    } 
    else 
    { 
     return Redirect::to('login'); 
    } 
} 
+0

Désolé, j'ai deux presque mêmes codes. Celui-ci a été placé dans MainController: http://paste.laravel.com/FZg J'ai édité basez votre réponse et il dit: 'Cette page Web a une boucle de redirection La page Web à l'adresse http: // localhost : 8000/news/index a entraîné trop de redirections. 'Je veux que l'invité affiche l'index, mais ne peut accéder au tableau de bord d'administration que si son 'type' est égal à 5. – dinomuharemagic

+0

Il est toujours associé à la même page, alors redirigez-vous pour vous connecter, ou affichez simplement une vue indiquant votre utilisateur que la connexion est obligatoire ... Juste édité. –

+0

Nevermind, ça marche. Merci quand même, utilisé le Auth :: check(). – dinomuharemagic