2014-07-03 2 views
0

J'utilise la classe Auth de Laravel pour authentifier les utilisateurs sur mon site, base Auth::attempt(...).Définir l'utilisateur Auth Laravel

Récemment, il y a eu une nouvelle exigence (yay intervenants!) Et maintenant il y a un besoin pour les utilisateurs de créer de nouveaux utilisateurs (utilisateurs secondaires). Comme la connexion des utilisateurs principaux passe par un système tiers, je ne peux en aucun cas stocker les utilisateurs secondaires avec les utilisateurs principaux (et réutiliser le système d'authentification actuel).

Ce à quoi j'ai pensé, c'était de dire à la classe Auth de se connecter et de forcer l'utilisateur à utiliser la méthode Auth::user().

Existe-t-il un moyen de le faire?

Répondre

1

EDIT

Pour ce faire, vous devez utiliser dans votre modèle d'utilisateur secondaire la UserInterface classe

use Illuminate\Auth\UserInterface; 

Ensuite, vous devez mettre en œuvre les 5 méthodes requises: getAuthIdentifier, getAuthPassword, getRememberToken , setRememberToken et getRememberTokenName.

Étant donné qu'apparemment config > auth ne peut pas être modifié à l'exécution, vous devrez vérifier les informations d'identification de l'utilisateur manuellement, obtenir l'instance et effectuer Auth::login($secondaryUser).

<?php 

use Illuminate\Auth\UserInterface; 

class SecondaryUser extends Eloquent implements UserInterface { 

    /** 
    * The database table used by the model. 
    * 
    * @var string 
    */ 
    protected $table = 'secondary_users'; 

    /** 
    * The attributes excluded from the model's JSON form. 
    * 
    * @var array 
    */ 
    protected $hidden = array('password'); 

    /** 
    * Get the unique identifier for the secondary user. 
    * 
    * @return mixed 
    */ 
    public function getAuthIdentifier() 
    { 
     return $this->getKey(); 
    } 

    /** 
    * Get the password for the secondary user. 
    * 
    * @return string 
    */ 
    public function getAuthPassword() 
    { 
     return $this->password; 
    } 

    /** 
    * Get the token value for the "remember me" session. 
    * 
    * @return string 
    */ 
    public function getRememberToken() 
    { 
     return $this->remember_token; 
    } 

    /** 
    * Set the token value for the "remember me" session. 
    * 
    * @param string $value 
    * @return void 
    */ 
    public function setRememberToken($value) 
    { 
     $this->remember_token = $value; 
    } 

    /** 
    * Get the column name for the "remember me" token. 
    * 
    * @return string 
    */ 
    public function getRememberTokenName() 
    { 
     return 'remember_token'; 
    } 

    public function mainUser() 
    { 
     return $this->belongsTo('User'); 
    } 

} 

ORIGINAL RÉPONSE

Je ne suis pas sûr d'avoir compris ce que vous vouliez, mais peut-être cela peut aider: http://laravel.com/docs/security#manually

$user = User::find(1); 
Auth::login($user); 

Et si vous avez 2 user modèles, je pense que cela devrait fonctionner tant qu'ils étendent la classe principale de l'utilisateur

+1

Ou, encore plus simple: '' Auth :: loginUsingId (1); '' –

+1

Je vais modifier votre question pour ajouter quelques exigences en plus de votre solution, puis l'accepter. – Ben

Questions connexes