fabric.util.requestAnimFrame(animate, canvas.getElement());
canvas.renderAll();
canvas.renderAll();
,чтобы в итоге у вас был один цикл для всех анимаций, а не десятки разрозненно запущенных анимаций где у каждой свой цикл UPDATE user SET name='boris', dis=10 WHERE id=1
(function render() {
canvas.renderAll();
fabric.util.requestAnimFrame(render);
})();
, мож фризит на прогрузке изображений?
Ну есть у тебя роли, к ним привязаны права доступа или запрета на определенные страницы там уже как захотите реализовывать, по типу black list или white list.
Дальше есть сущность юзер, у него есть поле role где хранится его роль или даже массив ролей если можно несколько присвоить.
Далее есть какой нибудь метод bool CanAccess(user, path), который мы вызываем при входе на страницу и даем ему текущего юзера и путь этой страницы, а внутри просто смотрим какая роль\роли у юзера и достаем все привязанные пути к этим ролям, и проверяем есть ли текущий путь(path) в списке этих путей если есть возвращаем true если нет false, это если все по типу white list.
Вот и всё, какая ручная работа?
В любой момент вы можете поменять права у роли и по сути они изменяться у всех юзеров которые привязаны к этой роли...