Безопасность должна быть на нескольких уровнях, но я думаю, что все будет выше, чем хранилище. Ваш пользовательский интерфейс / меню не должны предоставлять функциональность, к которой у пользователя тоже нет доступа, но вы также должны проверить на сервере, возможно, на уровне службы приложений, к которому у пользователя есть доступ, чтобы выполнить действие, которое он пытается.
В случае пользовательских ролей вы можете встроить ролевые отношения в вашу модель данных, но я бы вывел их обратно из базы данных, кэшировал их и отфильтровал список с помощью логики кода. Но вопрос в том, как узнать, какие роли пользователь может добавлять или не добавлять? Вы можете использовать конкретное число, оставляя пробелы, и разрешать только пользователям определенной роли создавать пользователей с ролью, равной или меньшей их собственной роли.
Например:
RoleID Role
1 Peon
5 Common Folk
10 King
15 Supreme Master of the Universe
Так что, возможно, только короли и SMU могут добавлять новых пользователей. SMU могут создавать другие SMU, Kings, Common Folk и Peons. Короли могут делать то же самое, за исключением SMU. Пробелы в идентификаторах дают вам возможность добавлять больше ролей позже без перенумерации.