Laravel France

creation de 3 espaces admin/users/agent

Avatar de annesophie05
annesophie05

Bonjour ,je débute sur laravel et je ne sais pas trop comment m'y prendre pour les créations de 3 espaces utilisateurs différents. Donc mon site a trois espaces ; Un pour un simple utisateur , un agent et l'admin. Dans le formulaire de création d'un compte , les personnes n'ont pas la possibilité de choisir si il sont admin , simple user ou agent. Et comme le statut des personnes ( admin , agent , users ) est définit dans la table statut comment et a quel endroit je détermine le statut de mes utilisateurs ou de mon admin ? Merci de vos reponses

Avatar de Kalibot
Kalibot

Salut,

J'ai seulement deux liens a te proposer si tu débute.

Opanclassroom - authentification

Laravel Sillo - authentification

Bonne journée

Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Si tu comprends bien tu as déjà fait la création de compte.

Pour ce que tu veux faire, moi je fais deux tables:

  • une table roles, qui référence les différents rôles (donc user, agent et admin pour toi)
  • une table droits, qui est une table d'association 1:1 user:role

Par sécurité, tu peux faire un formulaire d'octoi de droits qui n'est accessible qu'aux admins.

Donc pour déterminer quel comportement ton appication va adopter, ce sera au regard du role associé à l'utilisateur connecté.

Je sais pas si j'ai été très clair...

Avatar de bestmomo
bestmomo

Salut,

Il y a aussi la possibilité d'utiliser un package tout prêt comme celui-ci.

Sinon c'est tout frais mais ça marche aussi, avec Laravel 8 on peut installer Jetstream qui est équipé d'une gestion de groupes.

Avatar de annesophie05
annesophie05

Bonjour Cinquieme , oui effectivement j'ai déjà créé la possibilité à l'utilisateur de créé son compte avec le composant auth de laravel. Dans ma bdd , j'ai donc la table users et la table statut. la table statut comporte le champ statut avec les entrées admin , agent , user.

Si je crée une autre table ( table droit comme tu le proposes) cette table devra t-elle contenir les deux clés primaires des tables user et statut ?

Avatar de CinquièmeDimension
CinquièmeDimension

Oui, c'est l'idée de faire une table d'association. Enfin en écrivant ça je me rends compte que si un utilisateur ne peut avoir qu'un seul statut, c'est encore plus simple de modifier la table user pour ajouter une cré étrangère id_status et voilà.

La table d'association serait utile si un utilisateur peut avoir plusieurs status selon un autre facteur (ex: admin pour tel projet et simple user sur tel autre). Sinon, juste la clé étrangère dans la table user est largement suffisante.

Avatar de annesophie05
annesophie05

j'ai mis une clé etrangère( id_user) dans ma table statut . j'ai rajouté la relation one to one dans mes models user et statut. Justement c est au niveau de cette clé que je bloque ; comment puis je la prendre en compte exactement pour créer différentes comptes? j'ai tenté de créé des fichiers statuttableseeder et usertableseeder que j'appelle dans le databaseseeder pour la creation de 3 comptes

dans le fichier statuttableseeder : statut::create([

       [ 'id'=>1,
        'statut' => 'admin'],

        [ 'id'=>2,
            'statut' => 'agent'],


        [ 'id'=>3,
            'statut' => 'user'],


    ]);

et dans le fichier usertable seeder j'ai tenté de créé 3 comptes ( un admin , un user , un agent $admin = user::create([

       'name'=>'admin',
        'email'=>'admin@admin.com',
        'password' => hash::make('password')

    ]);
Avatar de CinquièmeDimension
CinquièmeDimension

Si tu met la clé étrangère dans la table status ça veut dire qu'il n'y a qu'un user, qu'un agent et qu'un admin. J'aurai plus fait côté user moi

Avatar de annesophie05
annesophie05

bonjour j'ai modifié et j'ai mis la cle dans la table user mais je n'arrive toujours pas a crééer mes trois comptes

Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Peux-tu nous montrer l'erreur que tu as ?

Comment as-tu géré l'attribution des droits ? Le user choisit lui-même son rôle (pas top), attribution droits les plus bas à la création et l'admin (qui aura eu des droits d'admin soit avec un seed, soit direct en modifiant la BDD) le modifie, etc. ? Vu que tu as rajouté la clé étrangère, il faut la renseigner dans tous les cas (sauf si t'as fait un clé étrangère nullable mais c'est pas génial)...

Avatar de annesophie05
annesophie05

Bonjour j'ai réussi a créér mes trois compte avec l'utilisation des fichiers seeder en prenant en compte la cle etrangere dans la table . j'aurai un truc a feter ce soir en entrant a la maison hh. Mais le souci c est que quand je veux créer un nouveau compte via le formulaire ca ne focntionne plus car la clé etrangère n'est pas définit.

Avatar de CinquièmeDimension
CinquièmeDimension

Oui, il faut juste rajouter le champs dans le formulaire pour retourner la clé étrangère aussi... Au préchargement du formulaire, tu crée un select avec un truc comme statut::all();

Vous ne pouvez pas répondre à ce sujet.