Více uživatelských účtů se stejným username

jedlicka
Člen | 70
+
0
-

Ahoj,

Je možné, aby existoval jeden uživatel, který má více účtů (se stejným username jakožto přihlašovacím emailem)?
Jak řešit potom login?

Mám zakázkový systém, kde každý uživatel má své zákazníky, zakázky apod. V současné době mám tabulku users. V této tabulce uživatelů je username a password, kde username je email a je to unikátní klíč, takže nemůže být v systému zaregistrován pod stejným mailem další uživatel.

Login se dělá standardně pomocí $user->login($username, $password);.

Teď ovšem vznikl tento obecný požadavek:
Pod jedním mailem by měl uživatel více účtů a po přihlášení (mail a heslo) by se mu zobrazil seznam účtů pod daným username (mailem). Po zvolení daného účtu by uživatel přešel do svého účtu se svými zákazníky. Jde o to, že daný zákazník má třeba více firem. Každou firmu chce spravovat v tomto zakázkovém systému, nechce se pokaždé přihlašovat jiným mailem, ale vždy pouze jedním a jen vybere daný účet. Toto ovšem klade spoustu dotazů, jak to vyřešit.

  1. Username (mail) je unikátní – je možné ten klíč odstranit.
  2. Pokud by bylo v tabulce users více záznamů stejných username (ale rozdílným ID), tak pomocí kterého se přihlásit?
  3. Nebo nejprve zjistit zda pod stejným username není více účtu a až po vybrání konkrétního přejít k samotnému přihlášení?
  4. Ale metoda login má parametry username a password, tak jak nette pozná ID uživatele, když stejných username je více?
  5. Přepsat nějak Authenticator?
  6. Jak by probíhala registrace nového účtu pod stejným mailem?

Nebo obecně, nevíte někdo, jak tohle v nette řešit?

Díky moc za každou radu.

Martin

David Matějka
Moderator | 6445
+
+8
-

rozhodne bych nesel cestou, ze bude vic zaznamu v users tabulce pro jednoho uzivatele. radeji to rozdel na dve tabulky – users a accounts (nebo companies). a kazda company ma pak prirazeneho usera, ktereho spravuje. a nebo o krok dale – mezi users a companies bude existovat m:n relace, takze uzivatel muze spravovat vice firem a firma muze byt spravovana vice uzivately.

CZechBoY
Člen | 3608
+
0
-

Trosku mi to pripomina nase rozhrani kde je moznost (ac uz se asi nevyuziva), ze je mozne se prihlasit (kazdej user ma jeden ucet), po prihlaseni se dostane k datum nejake default firmy a je mozne prepnout na jinou firmu.
My to teda nemame autorizovane (k tomu bych asi udelal vazebni tabulku user_id, firma), ale vsichni prihlaseni maji prava videt data vsech firem.

Tim ti jen chci sdelit, ze autentizaci asi uplne nemusis resit/menit, ale staci udelat novou feature – vyber firmy k zobrazeni dat + nejakou tu autorizaci.

JiriSlischka
Člen | 9
+
+1
-

My máme tabulku users a tabulku accounts. Ke každému userovi se vytvoří hned account. A vazba mezi němi je N:M jak píše David.
Každý account má v DB nastaveného základního usera. Do kterého se automaticky dostaneš po přihlášení.
Potom nepřihlašueš jak kdyby usera, ale přihlašuješ account. Po přihlášení máš možnost se prokliknout do jiného účtu.
Máme to i tak, že může být account čistě bez usera. Takže třeba když chceme dát přistup účetní. Tak se na její mailovku vytvoří přístup do našeho účtu, má pouze přístup do našeho účtu ale sama vlastní nemá.

jedlicka
Člen | 70
+
0
-

Díky moc všem za nápady. Obzvlášť pak @JiriSlischka, který mě přivedl na tu správnou myšlenku.