Cakephp Auth avec plusieurs tables "Users"
Je voudrais savoir comment traiter avec UNE seule authentification processus et les "utilisateurs" dans plusieurs tables. J'ai 4 table des Utilisateurs: les utilisateurs, les administrateurs, les artistes, les teamadmins qui ont tous des domaines spécifiques, mais je souhaite que l'ensemble de ces utilisateurs à être en mesure de se connecter via un seul formulaire sur la page d'accueil, et d'être redirigé après que leurs tableaux de bord.
Je pense que les redirections ne devrait pas être un problème, et certaines routes devrait fonctionner, mais je ne sais vraiment pas où chercher/start pour rendre tout cela possible.
Acclamations,
Nicolas.
MODIFIER: voici la solution finale (grâce à deizel)
App::import('Component', 'Auth');
class SiteAuthComponent extends AuthComponent {
function identify($user = null, $conditions = null) {
$models = array('User', 'Admin', 'Artist');
foreach ($models as $model) {
$this->userModel = $model; //switch model
$this->params["data"][$model] = $this->params["data"]["User"]; //switch model in params/data too
$result = parent::identify($this->params["data"][$model], $conditions); //let cake do its thing
if ($result) {
return $result; //login success
}
}
return null; //login failure
}
}
source d'informationauteur Nicolas
Vous devez vous connecter pour publier un commentaire.
CakePHP
AuthComponent
prend uniquement en charge l'authentification par rapport à un seul modèle Utilisateur à la fois. Le modèle est choisi par le réglage de laAuth::userModel
de la propriétémais il n'accepte une chaîne de caractères et non un tableau de modèles.Vous pouvez changer la
userModel
à la volée avec le code suivant, mais cela nécessite de connaître à l'avance quel modèle pour passer à (eg. vos utilisateurs doivent choisir leur type de compte à partir d'une liste déroulante):Vous pouvez probablement s'étendre à la base
AuthComponent
pour ajouter les fonctionnalités que vous souhaitez en remplacement de laAuthComponent::identifier()
méthode de sorte qu'il passe en boucle sur et de tentatives d'authentification avec chaque modèle:Vous aurez à remplacer les occurrences de
Auth
dans votre application avecAppAuth
pour utiliser votre AuthComponent, sauf si vous utilisez cette astuce.Tout ennuyeux, je pense que la meilleure solution est probablement à l'aide de Gâteau intégré dans un support ACL (voir http://book.cakephp.org/2.0/en/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.html).
Si vous ne l'authentification de la façon dont vous parlez, vous devez garder une trace des autorisations dans votre contrôleur de code, vérifier pour voir ce que le userModel est. Si vous utilisez une liste de contrôle d'accès, l'autorisation de l'arbre existe déjà dans la base de données, ce qui devrait simplifier votre code, et de le rendre plus modulaire.
Il signifie aussi la restructuration de votre modèle de données d'un seul utilisateurs table et groupes table à la place de classes d'entité pour chaque type d'utilisateur.
Je suis juste allé à travers le processus de le faire moi-même... 🙁
c'est aussi une possibilité
Voici la solution finale comme suggéré par deizel et modifié par Nicolas: