Można. Dokładnie to Ci wyżej zaproponowałem, tylko w bardziej rozbudowanej wersji. Możesz sobie równie dobrze dodać kolumnę roles do tabelki users i trzymać tam wartości po przecinku :P
Wyżej po prostu masz swojego rodzaju szwajcarski scyzoryk jeżeli chodzi o role i uprawnienia. Zazwyczaj w aplikacjach nie wystarczy rozgraniczenie admin/user, bo szybko dochodzą nowe rzeczy i się robi problem.*
* Dlatego też nigdy nie powinieneś sprawdzać po roli, tylko po uprawnieniu, bo reguły jaka rola ma jakie uprawnienia mogą się zmienić i wtedy jesteś w czarnej... Dla przykładu masz w całym kodzie ify w stylu: if has role admin ...
to pozwól na pokazanie jakiegoś guzika. I nagle dochodzi Ci nowa rola - moderator. Moderator też może widzieć ten guzik. I co teraz? Wszędzie dodajesz if has role admin or has role moderator
? Słabo. Dlatego lepiej miec uprawnienia: if has permission see some button
, bo wtedy tylko dodajesz nową rolę moderator i podpinasz mu to uprawnienie i już działa. OCP. Role to takie agregaty dla uprawnień, dlatego też lepiej myśleć o tym w kategoriach grup uprawnień niż w kategoriach ról, ale role się jakoś tak lepiej czyta.**
** Ale trzeba też pamiętać o YAGNI i KISS. Jeżeli masz uber prostą apkę, która składa się z dwóch widoków, gdzie masz 0 lub 1 i albo ktoś coś może, albo nie to faktycznie Twoje podejście może mieć więcej sensu.