Bonjour,

Je souhaiterai savoir s'il est possible d'utiliser AuthComponent avec 2 tables différentes. Je m'explique j'ai une table Administrateurs et une table membres et je souhaiterai qu'il se connecte à mon appli web. Est ce que c'est possible ou suis je obligé de les mettre tous les deux types d'utilisateur dans la même table et les différencier (avec une variable group_id).

Merci d'avance de vos réponses!

5 réponses


Xeta
Réponse acceptée

Hello,
Je ne pense pas que sa soit possible a première vue. Le mieux et surtout le plus logique, c'est effectivement de faire des groups et les relier par group_id.

Lartak
Réponse acceptée

Bonjour.
Il ne me semble pas impossible d'utiliser le composant Auth sur plusieurs tables, étant donné qu'il est possible de configurer plusieurs systèmes d'authentifications pour une même application, mais je pense que ça risque de poser quelques soucis au niveau des clés de la Session et je ne sais pas si c'est ton cas, mais tu avouera que ce serait un peu idiot d'utiliser des tables différentes, dans le cas ou la majorité de type d'informations sauvegardés en base de données sont les mêmes dans les deux tables.
Car dans ton cas, c'est juste une question de role pour les deux types d'utilisateurs de l'application.
Tu n'aurais peut-être même pas une seconde table à créer pour les différencier.
Du genre, tu mets un champ is_admin qui serait de type booléen dans ta tables <u>users</u> et par la suite tu aurais juste à vérifier pour l'utilisateur si la valeur valeur de son champ is_admin renvoi <u>true</u> ou <u>false</u>.
Bref, je ne connais quasiment rien de ton application, mais dans ce cas là, il est inutile de créer une/des table(s) supplémentaire(s), juste pour une vérification sur ce genre d'autorisation.

Sean78
Auteur

Merci Xeta, c'est bien l'impression que j'ai aussi. je laisse encore ouvert si quelqu'un a une autre idée...?

Sean78
Auteur

Merci @Lartk11, tout à fait d'accord avec toi, c'est exactement la logique qui est la mienne. C'est que je me demandais si c'est possible...? Et si oui comment? En tout cas merci!! Et bonne journée les amis!!

Bonsoir.
De rien, mais pour ton cas, dans l'optique d'un système de "rôles", c'est suffisant, ce n'est pas comme si tu voulais faire différents systèmes d'authentifications, c'est à dire, des systèmes de connexions multiples.
Si c'était le cas, il te suffirait de créer un composant Auth personnel et l'y intégrér au commposant Auth de l'application.
Comme par exemple dans la doc officielle :

// app/Controller/PostsController.php
class PostsController extends AppController {
    public $components = array(
        'Auth' => array(
            'className' => 'MyAuth'
        )
    );
}
// app/Controller/Component/MyAuthComponent.php
App::uses('AuthComponent', 'Controller/Component');
class MyAuthComponent extends AuthComponent {
    // Ajouter votre code pour surcharger le AuthComponent du coeur
}

Ce qu’il y a au-dessous donnerait un alias MyAuthComponent à $this->Auth dans vos controllers. Source
Ce cas là par exemple, permettrait d'avoir un système d'authentification spécifique, qui ne servirait que pour le controller Posts, ou d'autres controller en l'indiquant dans les composants des controller voulus.