Salut AlexJM !
Merci pour ta réponse et désolé pour la mienne qui se fait tardivement ! :)
Je pense que je galère un peu avec la documentation de Laravel car, bien que je l'ai parcouru, je ne connaissais pas les policies ni les @can. Ou alors je suis passé dessus mais mon niveau d'anglais étant très moyen, je ne l'ai pas remarqué.
En tout cas, tu as déjà éclairci un point assez important. Je ne comptais pas du tout faire la gestion des permissions de cette manière et je me rend compte que ma méthode était beaucoup plus bordélique.
Pour ce qui est de l'organisation de mes classes (controller et models), je suis actuellement parti là-dessus concernant l'inscription :
Et ainsi de suite pour les 4 comptes. Au niveau des routes, j'appelle user1 (ou 2 ou 3 ou 4) en GET et createUser1 (ou 2 ou 3 ou 4) en POST. Le tout dans un route::group avec comme prefix : register.
J'espère que c'est correct. Je tiens à le répéter, je débute vraiment avec Laravel et la structure MVC ainsi que les routes.
J'ai tout de même un problème. Lorsque l'utilisateur s'inscrit, toutes les informations indiquées dans le formulaire sont bien contenue dans l'objet Request ou Input. Seulement, j'ai une autre information à insérer à la base de donnée, c'est le type de compte car c'est une table unique que se partagent les 4 comptes avec une colonne "type" qui permet de savoir de quel type de compte il s'agit. Je dois également insérer le token de confirmation de compte (colonne "confirmation_token") ainsi que "confirmed" qui est un booléan et qui permet de savoir si oui ou non le compte est confirmé.
Du coup, je procède comme suit dans les fonctions createUserX :
public function createUser1(RegisterUser1Request $request, User $user) {
$type = 1 // variable en fonction du compte
$request->merge(['type' => $type, 'confirmed' => 0, 'confirmation_token' => str_random(60)]);
$user->create($request->except(['password_confirm']));
}
Pour ce qui est du $request->except(), je l'ai trouvé sur la documentation afin d'ignorer le champ password_confirm qui au final, ne sert qu'à la vérification.
Je me suis un peu informé pour trouver la méthode merge() mais j'ai trouvé un topic sur stackoverflow où deux personnes précisait qu'il était préférable de ne pas modifier l'objet Request de cette façon là. Seulement, ils ne donnaient pas de solutions alternatives.
L'autre problème est que du coup, les colonnes type, confirmed et confirmation_token sont indiqués dans l'attribut fillable et je ne le souhaite pas.
Du coup, cette façon de faire semble-t-elle plus judicieuse ?
public function createUser1(RegisterUser1Request $request, User $user) {
$type = 1 // variable en fonction du compte
$user->create($request->except(['password_confirm']));
$user->type = $type;
$user->confirmed = 0;
$user->confirmation_token = str_random(60);
$user->save();
}
Ca me semble tout de même plus long comme code.
Enfin voilà. Je sais bien que je semble débarquer ici en ayant aucune notion concernant Laravel ou la POO mais c'est juste que je suis un peu perdu x)
Je vous souhaite une bonne soirée et merci encore pour ta réponse AlexJM :)
Boris