Не знаю поможет ли тебе, но я в кейсах с разграничиванием прав, упаковыве perms в число следующим образом. Предположим есть масиив [read, write, reboot] с индексами 0,1,2. Нужно получить права на перезапуск и запись. 2*1+2*2=6 С такой логикой мы храним лишь одно число, которое определяет права юзера. Число подписано по jwt, изменению не подлежит и можно сколько угодно прав на что угодно дать(ну если оно не больше Max integer)