Korzystam z autoryzacji w devise i stworzyłem dwa modele w którym jeden to Konto/Super user, natomiast drugi model to jak by to powiedzieć pracownicy z dostępem do konta super user.
I nasuwają się trzy pytania:
Jak zakładając subkonto przekazać mu ID zalogowanego użytkownika? W modelu? current_user?
Czy może jakoś nadpisać kontrolery stworzone przez devise
Czy podczas logowania domyślnie posiadacz SUB konta będzie mógł się zalogować z głównego formularza logowania [domyślam się że po połączeniu tabel has_many/belongs_to] devise znajdzie sposób utworzenia sesji
Czy po zalogowaniu SUB użytkownika można w sessji przetrzymać ID rodzica?
Nie liczę na gotowe rozwiązania, ale może znacie jakiś tutorial, nawet ENG który mnie step by step pokieruje
CanCan z tego co wiem tworzy jedynie role użytkowników. A ja chcę stworzyć wielu użytkowników jednego konta.
Myślę, że najlepiej było by stworzyć kolumnę w tablicy użytkowników odwołującą się sama do siebie.
i zrobić tak:
podczas rejestracji kolumna parent_id była by = id użytkownika
Podczas dodawania pod użytkowników konta parent_id wskazywał by na właściciela konta i właśnie tą stałą bym pakował dane do innych tablic używając je jako klucza.
Dlatego chciałbym zapytać. Jak podczas zapisywania - rejestrowania użytkownika jednocześnie wypełnić pole user_id tą samą wartością co unikalny id użytkownika? Baza pewnie sama tworzy ten numer, ale może są jakieś czary w Rubym aby to zrobić prościej xD
CanCanCan nie tworzy żadnych ról dla userów, polecam dokumentacje. W skrócie CanCanCan sluzy do autoryzacji usera do resources ( zasobow ) i jesli chcesz osiagnac to co napisales to cancancan jest wystarczajacy.
Mozesz tez spojrzec na: Pundit sluzy do tego samego.
@slawotu nie znam Devise’a, wiem tylko, że służy do autentykacji użytkowników, ale powiedz mi proszę co w twoim przypadku chcesz osiągnąć rozszerzając (dziedzicząc) po rodzicu?
@lsiwinski Chciałem aby klient mógł założyć konto, nowy klient => nowe konto. Po zalogowaniu aby mógł dodać innych pracowników do swojego konta - udzielić im dostęp. Super by było jak klient i jego pracownicy mogliby się logować z użyciem tego samego formularza logowania.
Stworzyć model user, z dodatkową kolumną parent_id
Rejestracja głównego konta, będzie miała kolumnę “parent_id” pustą.
Następnie zalogowany użytkownik głównego konta, tworząc sub konta (każde subkonto to kolejny rekord w tabeli user), będzie wypełniał kolumnę “parent_id” swoim idkiem.
W ten sposób mamy rozwiązaną autentykację, gdyż każdy użytkownik może się logować za pomocą formularza oraz masz ustawione asocjacje pomiędzy głównym kontem a sub kontami. Pytanie dalej, jak chcesz zrobić autoryzację?