Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Дополнение

Проект получил другое название: cute chat -> nice pea chat

Сокращения:

nice pea chat - нпс / проект / npc

permission set - набор прав / пермишны / ps

chat - чат / беседа

Авторизация:

Что было придумано

Планировалось реализовать авторизацию с помощью PS, которые должно были работать примерно так:

Клиент отправляет запрос - хочет выполнить действия X, оно выполнится если один из его PS разрешает его.

Т.е. PS это роль, которая дает право пользователь на выполнение определенных действий.

Зачем нужна авторизация нам

В первую очередь - модерация чатов

Гибкость для создания своих "миров" как в дискорде

Посмотрим какие подходы существуют

RBAC - Управление доступом на основе ролей

Данный подход предполагает использование ролевой системы доступа, где права пользователей определены на сновании должности, уровня полномочий, ответственности, потребностей согласно обозначенным задачам

ABAC - управление доступом на основе атрибутов

Более расширенный подход, где в качестве разрешения доступа выступает использование определенных атрибутов. Это могут быть атрибуты местоположения пользователя, например определённый регион. Это могут быть атрибуты времени, когда доступ разрешён в определённые часы, дни или на определённый период.

Подробнее про abac и rbac

Новый вариант авторизации

Пользователи будут составлять правила, используя строительные блоки:

- action / действие - название - subject - role / роль - id - название (оно и определяет приоритет) - priority / приоритет будет определяться сортировкой

Роли как в дискорде!

Пусть этот функционал будет называться "пермишенами"!

В БД отразим авторизацию так:

role ( id int name string permissions []int )

enum Permission ( id int name string # <-- наверное будет локализация, так что без этого поля обойдемся )

А ограничения будут отражаться в коде.