За последние 24 часа нас посетили 22773 программиста и 1051 робот. Сейчас ищут 709 программистов ...

Сложные права доступа

Тема в разделе "Решения, алгоритмы", создана пользователем armadillo, 17 июн 2009.

  1. kostyl

    kostyl Guest

    Молодец, у тебя самая гибкая в мире система прав доступа....
     
  2. SeregA

    SeregA Активный пользователь

    С нами с:
    2 фев 2006
    Сообщения:
    269
    Симпатии:
    0
    Адрес:
    Saint Petersburg, Russia
    kostyl
    влез ни к селу ни к городу
     
  3. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Группы нужны там, где возможны действительно сложные комбинации прав. Скажем Есть админ могущий всё и есть 2 типа модераторов - они могут делать одну часть админского функционала, другие могут делать другую часть функционала. А юзерам доступен функционал, который не доступен ни кому больше. При этом индивидуальные личности могут иметь специфические права. Как правило - корпоративные системы и всякие системы управления. Очень большие форумы, где много разделов и в каждом разделе свои модеры и админы с разной степенью контроля.

    А если у вас там юзер, модер и админ - сделайте 3 константы, добавте поле user_level в базу и проверяйте в нужных местах их. Вот и всё.
     
  4. SeregA

    SeregA Активный пользователь

    С нами с:
    2 фев 2006
    Сообщения:
    269
    Симпатии:
    0
    Адрес:
    Saint Petersburg, Russia
    Psih
    а кто сказал что обсуждается проект домашней страницы? плюс почему бы не посмотреть в будущее, когда может и придется делать много групп, но если не задуматься об этом заранее, код придется очень сильно взд... править то есть)
     
  5. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    SeregA
    Излишняя сложность изначально может только всё усложнить в будущем ещё больше. Been there, done that. It SUCKS. KISS.
     
  6. SeregA

    SeregA Активный пользователь

    С нами с:
    2 фев 2006
    Сообщения:
    269
    Симпатии:
    0
    Адрес:
    Saint Petersburg, Russia
    Psih
    Блин, ну делай так как тебе хочется! Но это не усложняет ни капли. Проверка прав у меня занимает намного меньше и все намнооого проще, гибче и удобнее:


    PHP:
    1.  
    2. if (UserIsAllow(54)) // проверка, есть ли право на действие с айди 54 - в моем случае, удаление комментов  с фоток
    3. {
    4. // ок, можно это делать
    5. } else { //нее, них, нельзя }
    6.  
    7.  
     
  7. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    я в шоке :lol:
    ооочень удобно =))
     
  8. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    SeregA
    Обычно в таких случаях права называют как-нить типа:
    Код (Text):
    1.  
    2. gallery.comments.delete
    Человек, который не знаком с системой, но будет доделывать или обновлять её проклянёт тебя. Что будет, когда прав будет штук так 300? Я добавляю новую функцию, на неё действует какое-то уже из существующих прав.

    - "блин, опять лезть в админку и искать нужное право и смотреть какой у него ID. Проектировщик - ублюдок!!! Пойду хряпну чаю...".

    Гарантирую вам такие мысли любого достаточно опытного программиста. Да и многих неопытных тоже после добавления 8-10 функций связанными с уже существующими правами.
     
  9. SeregA

    SeregA Активный пользователь

    С нами с:
    2 фев 2006
    Сообщения:
    269
    Симпатии:
    0
    Адрес:
    Saint Petersburg, Russia
    Psih
    а мою систему никто трогать не будет. я сам ее знаю и для себя делаю.
    если тебе она нужна для оптовых продаж - господи, да измени формат поля id с integer на текст и пиши что хочешь)
     
  10. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    SeregA
    Собственные наработки как правило потом идут в дело. И кому то потом придётся с этим работать. Мой фреймворк уже успел засветится у третих лиц, которым лично я проект не делал, но человек, которому досталось на доработку эта система мне спасибо сказал (я с ним знаком, так что он мою разработку узнал и удивил меня тем, что система используется кем-то ещё).
     
  11. SeregA

    SeregA Активный пользователь

    С нами с:
    2 фев 2006
    Сообщения:
    269
    Симпатии:
    0
    Адрес:
    Saint Petersburg, Russia
    Psih
    ты до конца мое сообщение дочитай
     
  12. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    SeregA, подход у тебя неправильный, Psih тебе про это говорит, а не про то, что ему неудобно читать твой код будет. Если делаешь какой движок - делай сразу по совести, а не абы как.
     
  13. SeregA

    SeregA Активный пользователь

    С нами с:
    2 фев 2006
    Сообщения:
    269
    Симпатии:
    0
    Адрес:
    Saint Petersburg, Russia
    TheShock
    ты прежде чем говорить, хотя бы объясни почему неправильный.
    а про абы как - я только что эту тему поднимал. именно привязка к двум-трем группам в КОДЕ и является "абыкаком")
     
  14. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    потому что не понятно, что значит
    Код (Text):
    1. if (UserIsAllow(54))
    ты бы написал еще
    Код (Text):
    1. if (f68(54))
    константы называл
    Код (Text):
    1. define('C_542', 879);
    классы объявлял бы как
    Код (Text):
    1. class C76
    а методы классов как
    Код (Text):
    1. public function m3
    И получилось бы чтото типа:

    PHP:
    1. <?php
    2. f44(C_43);
    3. if(f76($v1, $v54)) {
    4.   $v91 = f51($v43);
    5.   $v92 = ($v91 > C_76) ? f76($v91) : f77(C_12);
    6.   $v93 = C76::m4($v92);
    7.   if ($v93 < C_22) {
    8.     echo $v36['3'];
    9.   } else {
    10.     echo $v32['5'];
    11.   }
    12. }
    Потому что подход с "UserIsAllow(54)" напоминает именно это.
     
  15. SeregA

    SeregA Активный пользователь

    С нами с:
    2 фев 2006
    Сообщения:
    269
    Симпатии:
    0
    Адрес:
    Saint Petersburg, Russia
    TheShock
    ты остроумнее моей кошки)
    не понимаешь - не лезь. англо-русский словарь тебя спасет:)
    неужели трудно понять что такое "If user is allowed"? тем более это обсуждалось выше
    посрать в коментах больше негде чтоли?

    и еще раз напоминаю - не нравится - не пользуйся! да и про идентификатор права я уже говорил - все легко меняется если нужно!
     
  16. kostyl

    kostyl Guest

    Давайте жить дружно и не тратить зря время на пустые разговоры....
    Так всем будет лучше. Даже мне ибо я вижу картинку новых ответов - захожу, а тут чушь полная идет (
     
  17. SeregA

    SeregA Активный пользователь

    С нами с:
    2 фев 2006
    Сообщения:
    269
    Симпатии:
    0
    Адрес:
    Saint Petersburg, Russia
    kostyl

    согласен, я за, но человек выше несет бред) не понял и оскорбляет. нормальные люди обычно спрашивают)
     
  18. kostyl, nobody cares. =)
     
  19. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    TheShock
    да ладно, то он просто в примере написал 54.
    На самом деле можно сделать константу ALLOW_COMMENT со значением 54.
    А название этой константы задавать через админку.
     
  20. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    TheShock
    Мне кое что вспомнилось :)
     
  21. SeregA

    SeregA Активный пользователь

    С нами с:
    2 фев 2006
    Сообщения:
    269
    Симпатии:
    0
    Адрес:
    Saint Petersburg, Russia
    Apple
    отлично, с памятью проблем нет


    Koc
    слава богу, нашелся кто то адекватный
     
  22. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    SeregA, это ты бред написал. Что такое UserIsAllow я знаю, а вот что такое UserIsAllow(54) - уже хз. Название функции ты, конечно, додумался сделать понятным, а вот название аргумента - говно полное. Об этом и говорится.

    В сообщении выше сказано, что если бы ты так называл функции и классы, как называешь аргументы, то код казался бы обфусцированным, что показано на примере
     
  23. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Я тебе сочувствую.
    Такому идиоту как ты можно только позавидовать :)
     
  24. SeregA

    SeregA Активный пользователь

    С нами с:
    2 фев 2006
    Сообщения:
    269
    Симпатии:
    0
    Адрес:
    Saint Petersburg, Russia
    TheShock
    бл!!! четвертый раз говорю! ВЫШЕ ОБСУЖДАЛОСЬ УЖЕ! НА ХРЕН ТЕМУ ЕЩЕ РАЗ ПОДНИМАТЬ????
    в сообщении выше приведен какой то мудацкий пример. если бы, бл, на голове росли б грибы!


    Apple
    ты решись уже завидуешь или сочуствуешь?
     
  25. SeregA

    SeregA Активный пользователь

    С нами с:
    2 фев 2006
    Сообщения:
    269
    Симпатии:
    0
    Адрес:
    Saint Petersburg, Russia
    я не пойму, вам всем че, жизни реальной не хватает, любите сраться не отходя от компа?