Роли и права¶
Ролевая модель¶
Система использует 4 основные роли для управления доступом к функционалу.
graph TD
ADMIN[Admin] -->|Полные права| ALL[Все модули]
SUPER[SuperUser] -->|По опциям компании| COMP[Доступные модули]
MNGR[Manager] -->|Ограниченный доступ| MGR[Менеджерские модули]
DRV[CarDriver] -->|Только просмотр| DRV_MOD[Водительские модули]
COMP --> OPS[Опции компании]
OPS --> DIRECT[Прямые договоры]
OPS --> RESALE[Перепродажа]
OPS --> OWN[Собственный автопарк]
Роли¶
Admin — Администратор¶
Права: Полные права на все модули.
public static RoleRights AllRights()
{
return new RoleRights
{
Edit = true,
View = true,
Delete = true
};
}
Доступ:
- Все модули системы
-
Управление пользователями
-
Управление компаниями
-
Dashboard (административная панель)
-
Экспорт данных
SuperUser — Суперпользователь¶
Права: Полный доступ в зависимости от опций компании.
Доступные модули:
| Опция компании | Доступные модули |
|---|---|
SelfDirectContarctWithWink |
Договоры с ВИНКами |
AccessToDirectContracts |
Прямые договоры покупки |
AccessToResale |
Перепродажа |
HasGasStatationNetwork |
Управление АЗС |
AccessToFuelUsing |
Собственный автопарк |
Функционал:
- Управление привязанными компаниями
-
Договоры с ВИНКами
-
Прямые договоры покупки/продажи
-
Управление картами
-
Лимиты и тарифы
-
Dashboard (только для Admin)
Manager — Менеджер¶
Права: Ограниченный доступ.
Доступные модули:
- Управление выданными картами
-
Заявки на карты
-
Отчёты
-
Оплаты
-
История продаж
-
Карты АЗС
-
Договоры (ограничено)
-
Перепродажа (ограничено)
CarDriver — Водитель¶
Права: Только просмотр.
Доступные модули:
- Карта АЗС
-
История транзакций
-
Просмотр лимитов
-
Редактирование (запрещено)
RoleRights — структура прав¶
public class RoleRights
{
public bool Edit { get; set; } // Право на редактирование
public bool View { get; set; } // Право на просмотр
public bool Delete { get; set; } // Право на удаление
}
Проверка прав¶
AuthorizeRoleFilter¶
Проверка в коде¶
public RoleRights HasRights(this ClaimsPrincipal user, SiteModule siteModule, User userDb)
{
if (user.IsInRole("Admin"))
return RoleRights.AllRights();
// Проверка по роли и опциям компании
return RoleConstructor.UserRights(userDb, siteModule);
}
CompanyOption — опции компании¶
| Опция | Описание | Влияет на |
|---|---|---|
SelfDirectContarctWithWink |
Собственные договоры с ВИНками | SuperUser доступ |
AccessToDirectContracts |
Прямые договоры покупки | SuperUser доступ |
AccessToResale |
Перепродажа | SuperUser/Manager доступ |
HasGasStatationNetwork |
Собственная сеть АЗС | SuperUser доступ |
AccessToFuelUsing |
Потребление топлива | SuperUser/Driver доступ |
AccessToAuth |
Доступ к авторизации | Все |
ClientApi — ролевая авторизация¶
Для REST API используется атрибут [AuthorizeApiRole]:
[AuthorizeApiRole(UserRoles.Admin)]
public async Task<IActionResult> AdminOnlyAction()
{
// Только для роли Admin
}
Ролевая матрица¶
| Модуль | Admin | SuperUser | Manager | Driver |
|---|---|---|---|---|
| Dashboard | ||||
| Users | ||||
| Companies | ||||
| VinkCards | ||||
| Limits | ||||
| Reports | ||||
| DirectSellingContract | ||||
| TransactionHistory |
- — зависит от опции компании
Связанная документация¶
- Web Interface — MVC интерфейс
- ClientApi — REST API
- Модули сайта — справочник модулей