Перейти к контенту

Передел правил для масок доступа


Рекомендуемые сообщения

По умолчанию все маски, привязаные к определенной группе, работают по принципу "лучшие права", т.е. если у одной маски нет прав на просмотр определенного раздела, а у другой есть, то группа все равно может просматривать этот раздел. Говоря на языке электронщиков, маски работают по алгоритму OR (логическое ИЛИ). :D

 

В некоторых случаях, например при такой структуре пользователей, как на моем форуме, это очень неудобно. Имея множество приватных разделов, чуть ли не для каждого приходится создавать свою маску. Привожу пример (очень приблизительный)...

 

Есть отдельные форумы для каждого из родов войск - ВВС, МФ, Пехота. У пользователей есть "звания" - Рядовой, Майор и Генерал. Каждый пользователь состоит в каком-то роде войск. В каждом форуме родов войск есть приватные разделы, которые должны быть доступны только пользователям с определенным званием - для рядовых будут недоступны (невидимы) подфорумы для офицерского состава, а для майора и генерала - будут видны. В тоже время офицерам из ВВС нельзя просматривать форумы офицеров из Пехоты. Еще есть общий форум для генштаба, где общаются только Генералы. Казалось бы - нет ничего проще! Сделать маски "ВВС Рядовой", "ВВС Майор", "ВВС Генерал", "МФ Рядовой", "МФ Майор", ну и.т.д.

 

Если же перестроить работу масок не по алгоритму OR, а по NOT (логическое отрицание), можно будет творить удивительные вещи. Например, для данного примера будет достаточно создать всего шесть масок доступа! Это будут: ВВС, МФ, Пехота, Рядовой, Майор, Генерал. Каждый пользователь получит по две маски - ВВС+Майор, или Пехота+Рядовой, или МФ+Майор. Для каждой из масок "родов войск" нужно будет "поставить все галочки" в панели распределения прав для масок доступа к определенному форуму (т.е. для маски ВВС нужно поставить все галочки для форума ВВС, для МФ - МФ и т.п.). Для масок "званий" нужно поставить галочки в каждом из форумов. Подфорумам офицерского состава дать доступ только Майорам и Генералам. Форуму командования поставить доступ только для Генералов, соответственно.

 

Получается примерно так (очень приблизительно):

Форум ВВС - Общий                        Форум ВВС - Офицеры
+---------+--------+--------+--------+   +---------+--------+--------+--------+
|         | Чтение | Запись | Загр.  |   |         | Чтение | Запись | Загр.  |
+---------+--------+--------+--------+   +---------+--------+--------+--------+
| Рядовой | +      | +      | +      |   | Рядовой |        |        |        |
| Майор   | +      | +      | +      |   | Майор   | +      | +      | +      |
| Генерал | +      | +      | +      |   | Генерал | +      | +      | +      |
| ВВС     | +      | +      | +      |   | ВВС     | +      | +      | +      |
| МФ      |        |        |        |   | МФ      |        |        |        |
| Пехота  |        |        |        |   | Пехота  |        |        |        |
+---------+--------+--------+--------+   +---------+--------+--------+--------+

Форум МФ - Общий                         Форум МФ - Офицеры
+---------+--------+--------+--------+   +---------+--------+--------+--------+
|         | Чтение | Запись | Загр.  |   |         | Чтение | Запись | Загр.  |
+---------+--------+--------+--------+   +---------+--------+--------+--------+
| Рядовой | +      | +      | +      |   | Рядовой |        |        |        |
| Майор   | +      | +      | +      |   | Майор   | +      | +      | +      |
| Генерал | +      | +      | +      |   | Генерал | +      | +      | +      |
| ВВС     |        |        |        |   | ВВС     |        |        |        |
| МФ      | +      | +      | +      |   | МФ      | +      | +      | +      |
| Пехота  |        |        |        |   | Пехота  |        |        |        |
+---------+--------+--------+--------+   +---------+--------+--------+--------+

Форум Пехота - Общий                     Форум Пехота - Офицеры
+---------+--------+--------+--------+   +---------+--------+--------+--------+
|         | Чтение | Запись | Загр.  |   |         | Чтение | Запись | Загр. |
+---------+--------+--------+--------+   +---------+--------+--------+--------+
| Рядовой | +      | +      | +      |   | Рядовой |        |        |        |
| Майор   | +      | +      | +      |   | Майор   | +      | +      | +      |
| Генерал | +      | +      | +      |   | Генерал | +      | +      | +      |
| ВВС     |        |        |        |   | ВВС     |        |        |        |
| МФ      |        |        |        |   | МФ      |        |        |        |
| Пехота  | +      | +      | +      |   | Пехота  | +      | +      | +      |
+---------+--------+--------+--------+   +---------+--------+--------+--------+

Форум Командования
+---------+--------+--------+--------+
|         | Чтение | Запись | Загр.  |
+---------+--------+--------+--------+
| Рядовой |        |        |        |
| Майор   |        |        |        |
| Генерал | +      | +      | +      |
| ВВС     |        |        |        |
| МФ      |        |        |        |
| Пехота  |        |        |        |
+---------+--------+--------+--------+

 

На настоящий момент, с там раскладом, рядовые могли бы просматривать офицерские форумы, а если сделать модификацию проверки маски доступа, то не смогут. И это ЗНАЧИТЕЛЬНО сократит кол-во масок.

Ссылка на комментарий
Поделиться на других сайтах

Уже обсуждалось.

Я предлагал подобный мод, но никто не заинтересовался.

Но правда я не могу что-то найти ту тему :D

 

Вообще я твоё длиннющее послание всё не читал (это тебе намёк на будущее - длинные посты никто не читает), но по-моему я предлагал как раз то что надо.

 

Смысл моего мода заключался в следующем:

Есть 2 типа масок доступа: по группе юзера и замещающие (override) маски.

Смысл в том, что заменить замещающие маски на дополняющие.

При этом основные права юзер получает по группе, а дополнительные (куда он ещё может заходить) добавлять через override с вводом мода само собой.

Ссылка на комментарий
Поделиться на других сайтах

При этом основные права юзер получает по группе, а дополнительные (куда он ещё может заходить) добавлять через override с вводом мода само собой.

а чем вторая группа юзера от этого тогда отличается?

Ссылка на комментарий
Поделиться на других сайтах

Song

Твой мод - это не совсем то, о чем я спрашиваю. Все-таки длинный пост не просто так написан... ;) Вот смотри (постараюсь в двух словах): когда открываем в админке маску для редактирования - перед нами куча галочек. Когда галочка в каком-либо месте поставлена - доступ будет, а если не поставлена - проверяются дополнительные маски. Это происходит по алгоритму OR: если у маски "А" есть доступ (1), а у маски "Б" его нет (0), то формула такая - 1 OR 0 = 1. Единица в ответе (истина) позволяет показать/писать/прилеплять файлы юзеру тот форум, для которого мы выставляем маску. Мое предложение: в этой же простой формуле заменить OR на AND (почему-то в первом посте я напиал NOT :D ), таким образом, формула с теми же значениями будет иметь другой результат - 1 AND 0 = 0 и будет равна единице только в случае, когда все операнды (они же поставленные "галочки" у каждой из масок) будут единицами для конкретного форума. Еще раз - если для одного и того же форума у наших масок будут стоять "галочки", то юзер его увидит/сможет писать/и т.п., если хотя бы у одной из масок не будет стоять "галочка" - юзер не увидит форум и т.п.

 

Смысл для меня atm - найти в коде место, где происходит определение доступа юзера по маскам. Пытался копать файлы boards.php, forums.php в директории source - не удачно.

Ссылка на комментарий
Поделиться на других сайтах

temoon

 

копать надо в направлении функции check_perms из functions.php а также смотореть как она используется в остальных модулях.

(это верно для 1.3, как оно в двушке - я не знаю)

Ссылка на комментарий
Поделиться на других сайтах

>> а чем вторая группа юзера от этого тогда отличается?

тем что она может смотреть ещё один форум плюсом от той.

Ссылка на комментарий
Поделиться на других сайтах

  • 1 год спустя...
Смысл моего мода заключался в следующем:

Есть 2 типа масок доступа: по группе юзера и замещающие (override) маски.

Смысл в том, что заменить замещающие маски на дополняющие.

При этом основные права юзер получает по группе, а дополнительные (куда он ещё может заходить) добавлять через override с вводом мода само собой.

 

Как обстоят дела или мод остался токо в голове =) ?

Ссылка на комментарий
Поделиться на других сайтах

Если ты придумаешь описание к модификации, т.е. прочитав которое пользователь поймёт чего он ставит и для чего это, я напишу её. Она несложная в принципе.

На прошлом этапе, помнится, у меня на этом всё дело остановилось :D

Ссылка на комментарий
Поделиться на других сайтах

Та неаписать то напишу но понял что мою проблему сей мод нерешит - руками надоест менять групы. А если ненужно менять те групы а просто дополнительные маски будут считываться после маски группы и незапрещать то что разрешено групе а только открывать новые возможности.

То ты правильно изложил.

 

Есть 2 типа масок доступа: по группе юзера и замещающие (override) маски.

Смысл в том, что заменить замещающие маски на дополняющие.

При этом основные права юзер получает по группе, а дополнительные (куда он ещё может заходить) добавлять через override с вводом мода само собой.

Ссылка на комментарий
Поделиться на других сайтах

Та неаписать то напишу но понял что мою проблему сей мод нерешит - руками надоест менять групы.

У меня дополнительные маски добавляют права, а не замещают.

Ссылка на комментарий
Поделиться на других сайтах

Song Если дополняющяя маска то есть маска именно которая вешаеться на пользователя а не на групу небудет запрещать то что разрешено в маске группы, а только давать дополнительные возможности то именно эта фича нужна :D
Ссылка на комментарий
Поделиться на других сайтах

Я тебе уже объяснил что нужно сделать, чтобы заполучить этот мод :D
Ссылка на комментарий
Поделиться на других сайтах

Модификация позволяет использовати маски доступа пользователей исключительно как дополнительные возможности. Маски которые присвоены группе будут иметь основоположный уровень доступа.

 

Одним словом я запутался =( и как оно будет работать сам уже недоганяю =)

Ссылка на комментарий
Поделиться на других сайтах

Модификация позволяет использовати маски доступа пользователей исключительно как дополнительные возможности. Маски которые присвоены группе будут иметь основоположный уровень доступа.

Ужас какой. Это только в разве журнал "Наука и Жизнь".

Ссылка на комментарий
Поделиться на других сайтах

Маразм крепчал =)

 

ПС: если мод уже есть то описалово можно в одну строчку.

 

Я его неписал как оно функционирует должен знать автор а для чего написан тоже!

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

kolorom

 

Ну вот смотри сделаем мы мод. К описанию к нему что-то напишем. Цель - прочитав описание, однозначно понять чего получит админ, установив мод.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.