Как правильно аннулировать разрешение при использовании побитовых разрешений? - PullRequest
0 голосов
/ 08 июля 2010

Хорошо, вот суть того, что я планирую сделать.

У меня будет два стола.Один с "званиями" или "ролями" и один с пользователями.Я хочу назначить разрешения для роли / пользователя и отозвать разрешения для пользователя.

Итак, просто для общих целей скажем, что у нас есть $ role_can $ user_can и $ user_cant

Iзнать, что для определения каких целей мы можем использовать побитовое ИЛИ.$ permissions = ($ role_can | $ user_can) и это объединит их.

Теперь я хочу иметь возможность отозвать определенные разрешения после этого.Это НОРМАЛЬНО делается с использованием побитового XOR, но я хочу сделать это доказательством идиота.Другими словами, я не хочу случайно дать им доступ к разрешению, исключив разрешение, которым они еще не владеют.

Каков наилучший способ сделать это?

Традиционно(($ role_can | $ user_can) ^ $ user_cant) - но это не сработает для проверки идиота.

Я все еще довольно новичок в битовых операциях, поэтому будьте спокойны, если ответ очевиден.

Я использую PHP, но приемлемый ответ может быть на любом языке / псевдокоде, если он работает и его легко понять.

Спасибо.

1 Ответ

2 голосов
/ 08 июля 2010

Вы можете использовать побитовый оператор "not" .

(($role_can | $user_can) & ~$user_cant)
...