Wpis z mikrobloga

#php #symfony2 #symfony

Cześć,

Mam zainstalowany FOSUserBundle. Zrobiłem tak że rejestrując się użytkownik tworzy w tym samym czasie nową firme nadając jej pewnego rodzaju identyfikator.
Identyfikator jest unikalny dla całej tabeli firma.

To co chcę osiągnąć to aby podczas logowania użytkownik musiał podać:
identyfikator firmy
login
hasło

O ile nadpisanie formularza to nie problem o tyle nie wiem jak uporać się z logiką...
FOS i ogólnie security wymaga aby username oraz password było unikalne dla całej struktury bazy danych. Więc wymyśliłem takie obejście, że w encji User dodałem pole 'login'.
I wygląda to tak:

public function setLogin($login)
{
$this->setUsername( $this->getCompany()->getIdentifier() . '@' . $login);
$this->login = $login

return $this;
}
Dzięki temu username jest unikatowy i posiada przedrostek w formie identyfikatora firmy.
Mógłbym to tak zostawić i logowanie odbywałoby się na zasadzie:
nazwaFirmy@mojLogin / hasło

Nadpisałem kontroler logowania który mi działa
http://pastebin.com/bmPAxVHd
tyle że nie następuje logowanie... myślę że jestem blisko (chyba) ale nie wiem jak wywołać logowanie...

Ale chciałbym tego uniknąć i umożliwić logowanie z tymi trzema parametrami.
Po co mi take cuda? Chcę aby możliwa była rejestracja kilku użytkowników z takim samym loginem ale innym identyfikatorem firmy. Innymi słowy username ma być unikalne ale tylko w ramach jednej firmy.

Czy ktoś z was robił coś takiego?

Może mistrzu @MacDada?
  • 4
@MacDada: załóżmy że są dwie firmy i w obu pracuje osoba o imieniu i nazwisku Mac Dada.
Wtedy w pierwszej firmie musiałby mieć login mdada a w drugiej mdada2
Zakładając że tworzenie loginów odbywałoby się na zasadzie pierwsza litera imienia i nazwisko.
Wydaje mi się że "uczciwiej" byłoby aby oba mdada mogliby mieć swój login bez żadnych literek.
W skrajnych przypadkach osoby z nazwiskiem nowak dostałyby w jednej firmie login
@qwelukasz: No to wszędzie załóż, że sklejenie loginu i firmy to pseudonim => pseudonim musi być unikalny, tak to rozumie całe Symfony i okolice, będziesz ciągle walczył, jeśli będziesz chciał to zmienić.

Sklejaj już w JS lub jakoś wcześnie po stronie PHP – żeby faktycznie dla Symfony był to zwykły pseudonim.

Problemy jakie jednak dalej będziesz miał:

* co jak się zmieni nazwa firmy? musisz zrobić dziwaczny update po użytkownikach +
Stąd właśnie proponuję, żeby ta cała kombinacja była jak najbardziej przezroczysta dla Symfony (np sklejanie w JS przed wysłaniem formularza) => bo wtedy nie musisz robić tego totalnie customowo.


@MacDada: kurde! że o tym nie pomyślałem! Co za baran ze mnie xD
Zrobię to po stronie JS i nie będę miał żadnych problemów... że też o tym nie pomyślałem :D

Firma ma dwa pola póki co:
- nazwa firmy (można w