Перейти к содержанию

Роли и права

Ролевая модель

Система использует 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

[AuthorizeRoleFilter(SiteModule.Billing)]
public class BillingController : BaseController
{ }

Проверка в коде

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 ✅ ✅ ✅ ✅ (view)
Reports ✅ ✅ ✅ ❌
DirectSellingContract ✅ ✅* ❌ ❌
TransactionHistory ✅ ✅ ✅ ✅
  • — зависит от опции компании

Связанная документация