Planuję projekt w którym mam bazę użytkowników. Część z nich jest adminami. Czy jest sens oraz praktyki dzielenia tabel na użytkowników zwykłych i adminów?
Według mnie nie ma sensu. Lepiej zrobić dodatkowe pole np. "stanowisko" i określić w nim osobną wartość dla każdego stanowiska. Np. admin = 1, moderator = 2, user = 3, nowy = 4 itd.
Wg mnie też nie, mam pole typ, które jest pobierane do sesji i zależności od tego pola, różny dostęp mają użytkownicy do modułów strony.
Ciekawi mnie, jakie są dobre praktyki w programowaniu w tej kwestii :)
Ja też w 90% dodaje dodatkowe pole do tabeli users "role" gdzie dla mnie rola: 0 - gość; 1 - user; 2 i więcej userzy z większymi uprawnieniami np moderatorzy, redaktorzy, admini i tak dalej. Czasem wydzielam jednak tabele zawierającą role (wtedy z tabeli users znika kolumna role) w momencie gdy główny administrator ma możliwość nadawania uprawnień do poszczególnych elementów innym adminom.
Jak podzielisz na osobne tabele dla adminów i userów, a potem dojdzie jeszcze jeden poziom uprawnień, to będziesz musiał robić kolejną tabelę i tak w kółko.
Jak chcesz zrobić w miarę uniwersalny system uprawnień, możesz zrobić tak:
- tabela użytkownicy, np. id, login, hasło
- tabela role, np. id, nazwa
- tabela uprawnienia, np. id, nazwa
- tabela role_grupy, np. id, id_roli, id_grupy
- tabela grupy_użytkownicy, np. id, id_grupy, id_uzytkownika
W taki sposób masz nieograniczone możliwości jeśli chodzi o przydzielanie usera do poszczególnych grup i nadawanie tym grupom uprawnień.