Вы делаете какой-то гибрид между
ACL и
RBAC.
ACL проще изначально, но с ростом проекта превращается в адовую лапшу.
RBAC на простых проектах кажется оверкиллом, но это очень удобно.
Если коротко: У вас есть юзеры.
Каждый юзер состоит в одной или сразу нескольких группах.
У каждой страницы есть список, каким группам туда можно заходить, а каким нет.
Допустим на /login можно вообще всем, на /admin только тем, кто в группе администраторов и так далее.
Еще один плюс использования стандартных решений: уже есть гайды и даже готовые библиотеки
https://www.google.com/search?q=js+rbac
но возможно и нет другого решения
множество их
https://en.wikipedia.org/wiki/Role-based_access_co... в этом списке далеко не все.