Forums / National / Russian / Тех. поддержка / дожились? или права пользователей

<<<12

esclkm
#16 2010-02-05 16:24
теперь вот это часть прошу пояснить
AND a.auth_rights & 1 = 1

Добавлено 3 часа 29 Минут спустя:

и насколько я помню - у нас права читаются по основной группе а не по всем. или ошибаюсь?
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты
This post was edited by esclkm (2010-02-05 19:53, 14 years ago)
Trustmaster
#17 2010-02-06 00:54
Я уточнил:
AND a.auth_rights & {$mn['R']} = {$mn['R']}
Это и есть наложение битовой маски на число auth_rights. Неплохо бы почитать что-нибудь. Приведу простой пример. Пусть у нас всего 4 разряда используется и auth_rights = 1011. Если $mn['R'] == 1 == 0001, а $mn['A'] == 4 == 0100, то 1011 & 0001 == 0001, а вот 1011 & 0100 == 0000.

А вот права надо брать по объединению групп, а не по главной или пересечению.
May the Source be with you!
esclkm
#18 2010-02-06 01:07
спасибо большое)
реально ясность наступила.

Добавлено 15 Минут спустя:

еще наглдяднее к ясности стало после такой таблицы:
+------------+-------------------------------------+-------------+
| HEX | BIN | DEC |
+------------+-------------------------------------+-------------+
| 0x00000001 | 00000000 00000000 00000000 00000001 | 1 |
| 0x00000002 | 00000000 00000000 00000000 00000010 | 2 |
| 0x00000004 | 00000000 00000000 00000000 00000100 | 4 |
| 0x00000008 | 00000000 00000000 00000000 00001000 | 8 |
| 0x00000010 | 00000000 00000000 00000000 00010000 | 16 |
| 0x00000020 | 00000000 00000000 00000000 00100000 | 32 |
| 0x00000040 | 00000000 00000000 00000000 01000000 | 64 |
| 0x00000080 | 00000000 00000000 00000000 10000000 | 128 |
| 0x00000100 | 00000000 00000000 00000001 00000000 | 256 | 

но табица прав у нас по большому счету уже загружена в массив, то можем ли мы сокраситить сие дейстивие
IN ({$groupids}) AND a.auth_rights & {$mn['R']} = {$mn['R']}
в самом запросе?
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты
This post was edited by esclkm (2010-02-06 01:34, 14 years ago)
Trustmaster
#19 2010-02-06 02:39
Ты же знаешь, как сейчас делается: сначала проверка прав на категорию, потом выборка. Либо наоборот, сначала выборка элементов, а потом проверка прав (при этом проблема с количеством записей получается). Я привёл пример, как проверять права во время выборки. Но это на самом деле довольно медленно. Первый вариант (предварительная проверка) всех быстрее, но не всегда возможен.
May the Source be with you!
esclkm
#20 2010-02-06 02:50
знаю) но вдруг возможно обхитрить демона)
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты

<<<12