Есть готовое SPA в котором авторизуются 3 типа юзеров. Пытаюсь написать сервис который должен по account_type-у юзера проверить имеет ли он доступ к запрашиваемой странице. Застрял именно на самой проверке.
Через .run запускаю данную функцию
function checkAccess(AccountUtilities, $route, $rootScope) {
$rootScope.$on('$routeChangeStart', function() {
AccountUtilities.accessCheck();
});
}
AccountUtilities.accessCheck(); - это сам сервис в котором и должна происходить проверка на доступ, передавая туда тип аккаунта и проверяя как-то куда именно пользователь лезет. Если у юзера нету доступа к запрашиваемой странице его или редиректит на его домашнюю страницу или если пользователь вообще не залогинен то редиректит на login страницу.
В самом приложении есть страницы которые доступны только одному типу аккаунта, общие страницы которые доступны любому юзеру (Мой кабинет, etc) и "внешние страницы" такие как регистрация или страница входа куда будучи авторизованным юзер не должен попасть.
Проблема моя заключается именно в проверке. Не могу придумать как красивей проверять имея на руках тип аккаунта и кучу информации о роутах (знаю текущий роут, список вообще всех доступных и куда собственно юзер лезет). Из вариантов решения пока вижу только такие:
- в контроллерах страниц задавать через $rootScope для какого типа аккаунта эта страница предназначена (этот пока рассматриваю как самый элегантный)
- у всех роутов есть общие части юрл, думал через регулярку их выдирать и сравнивать (какой-то костыльный способ)
- есть ещё варианты, но они уже очень извращённые как по мне
Прошу поделится мудростью и опытом, как правильнее реализовать такую проверку, что бы при добавлении роутов не приходилось где-то постоянно что-то дописывать или исправлять.