Я создаю набор API, которые выполняют различные несвязанные задачи. Однако я хочу иметь возможность регулировать, какие пользователи имеют доступ к определенным конечным точкам API. Изображение ниже - моя лучшая попытка визуализировать то, что я хотел бы видеть.
Из моего примера есть три уровня доступа:
- basi c (доступ к конечной точке 1 )
- средний (доступ к конечным точкам 1 и 2)
- самый (доступ ко всем конечным точкам)
Том и Луис имеют одинаковый уровень доступа (базовый *) 1036 *) Джон имеет умеренный доступ. У Сэма больше всего доступа.
Во время вызова одной из конечных точек API идея состоит в том, чтобы запустить user_access_level для таблицы access_levels, чтобы получить access_level_name , затем, наконец, проверьте, позволяет ли user_access_level продолжить процесс. Если в таблице конечных точек есть уровень 0 под уровнем доступа, верните код состояния 403 и сообщение о том, что доступ запрещен.
Мне очень нравится идея доступа к конечным точкам в стиле таблицы истинности, потому что это легко добавлять новые уровни доступа и регулировать, какие конечные точки доступны на основе одного user_access_level . Однако я не уверен, что access_level_name совпадает с одним из столбцов в таблице конечных точек. Судя по моим собственным прочтениям, это может быть не очень хорошей практикой, но я пока не смог придумать ничего лучшего.
Любые альтернативные подходы, которые могут поддерживать такую гибкость, очень ценятся, или в целом обратная связь на столбце / строке сравнения. Спасибо.
![database example](https://i.stack.imgur.com/i1onZ.png)