Проверяет умение проектировать UI с учётом прав доступа, роли пользователя и его связи с объектом, что критично для безопасных и удобных интерфейсов.
Управление доступными действиями на фронтенде — это задача о том, как показать пользователю только те кнопки, ссылки и статусы, которые он действительно может использовать. В основе лежит модель прав: у пользователя есть роль (admin, manager, user), а у объекта — отношение к пользователю (владелец, участник, наблюдатель). Комбинация этих данных определяет, какие действия разрешены.
<Can action="edit">, которые рендерят детей только при наличии прав.const permissions = {
admin: ['view', 'edit', 'delete', 'approve'],
manager: ['view', 'edit', 'approve'],
user: ['view']
};
function can(user, object, action) {
if (user.id === object.ownerId) return true; // владелец может всё
const roleActions = permissions[user.role] || [];
return roleActions.includes(action);
}
// Использование в UI
{can(user, task, 'edit') && Редактировать}
{can(user, task, 'approve') && Согласовать}
Роль — не единственный фактор. Например, пользователь может быть владельцем задачи, её исполнителем или просто наблюдателем. Отношение к объекту часто важнее роли: владелец может удалить задачу, даже если его роль — обычный пользователь. Поэтому функцию проверки стоит строить так, чтобы она сначала учитывала отношение, а затем роль.
Фронтенд не является защитой. Любой пользователь может изменить JavaScript в браузере и вызвать скрытое действие. Поэтому все проверки прав должны дублироваться на сервере. Фронтенд лишь улучшает UX, скрывая недоступные действия и предотвращая ошибки.
Итог: применяйте централизованную функцию проверки прав и условный рендеринг, чтобы интерфейс был понятным и безопасным, но всегда дублируйте проверки на бэкенде.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию