Bonjour à tous,


Tout d'abord message aux modérateurs, il s'agit plus d'un problème de conception que de programmation pure, je ne suis donc pas certain que mon message soit posté au bon endroit, si il y a un forum plus approprié merci de me le faire savoir ou n'hésitez pas à le déplacer !


Je rencontre un problème de conception/organisation au sein de la création d’une application web, développée avec le duo classique PHP/MYSQL.

Il s’agit de la gestion d’utilisateurs au sein de l’app sachant qu’il y a 2 types d’utilisateurs différents.

Un utilisateur “client” et un utilisateur “dashboard”

L’application générale consiste à offrir l’ouverture d’un service par un CLIENT qui lui même peut créer des comptes DASHBOARD pouvant accéder à une interface de gestion liée au service. Les comptes sont liés à des emails.

A première vue, cela semble ni plus ni moins qu’une gestion d’utilisateurs avec permissions.

Mais il y’a plusieurs contraintes qui compliquent les choses et m’empêche d’y voir clair sur comment gérer ces utilisateurs.

=> En plus des 2 types de compte, il y’a 2 interfaces: l’interface CLIENT et l’interface DASHBOARD
=> le CLIENT peut ouvrir une ou plusieurs instance du service
=> ces instances peuvent chacune avoir des comptes DASHBOARD indépendants
=> un compte DASHBOARD ne doit pas pouvoir accéder à l’interface client
=> le client doit pouvoir créer un compte DASHBOARD pour l’email A sur l’instance 1 du service ET sur l’instance 2 du service
=> Un email ayant servi pour un compte DASHBOARD doit pouvoir créer un compte CLIENT
=> Un CLIENT doit être connecté automatiquement à toutes les DASHBOARDS des instances qu’il a créé lorsqu’il est connecté à son interface client
=> si le CLIENT change son mot de passe, il doit être changé pour l’ensemble, interface client ET dashboard
....

Bref, je me perds sur les choix à faire pour articuler tout cela en ayant une organisation au niveau code + base de données qui permette de gérer au mieux et avec le moins de bug possibles par la suite…

Faut-il créer une table user CLIENT et une table user DASHBOARD ?
Et dans ce cas, cloner le compte client pour chaque instance dans la table DASHBOARD ?
Ou faut-il gérer tous les utilisateurs dans une table commune en les distinguant avec une variable TYPE ?

Le clonage de compte me parait une mauvaise méthode mais en même temps je me dis que les 2 types de compte sont suffisamment différents pour être séparés et que ce serait peut être plus cohérent niveau codage…

Plus j’y réfléchis, moins j'y vois clair...

En espérant que l’exposition de mon problème soit compréhensible, si ce n’est pas le cas, n’hésitez pas à demander des précisions.
Clt, kpam37