1. PHP / Говнокод #11299

    +72

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    public function isAdmin() {
            $admins = Model::factory('User')->where('access_level_id', 1)->find_many();
            $ids = array();
            foreach($admins as $admin) {
                $ids[]= $admin->id;
            }
            return in_array($this->id, $ids) ? true : false;
        }

    Метод проверки на админе из модели пользователей. Не, ну а чо.

    Запостил: mr.The, 26 Июня 2012

    Комментарии (21) RSS

    • А как бы ты это сам сделал?
      Не, ну а чо
      Ответить
      • Очевидно, что id нужно сразу использовать в запросе.
        Ответить
      • Вообще, по-хорошему, проверка каких-либо прав должна быть отделена от пользователя, потому что не является частью аспекта работы пользователя, а аспектом безопасности вызовы каких-то методов.

        А то может быстро разбухнуть ваш пользователь: isAdmin isOfficer isCleaner isFireman isPresedent

        return in_array($this->id, $ids) ? true : false;
        Тоже неплохо :)
        Ответить
    • > return in_array($this->id, $ids) ? true : false;
      И почему похапешники такие неувереннные? В мане явно написано, что in_array возвращает true или false.
      Ответить
    • kohana, если я не ошибаюсь) у меня реализация на проверку прав совершенно по другому была сделана.
      в модели:
      public function isAdmin() {
      		return ($this->has('roles',ORM::factory('role',10)));
      	}

      в контроллере что-то типо такого:
      if(!$this->user->isAdmin()) $this->request->redirect('/main/logout/');
      Ответить
      • > ORM::factory('role',10)
        Магические числа? No way.
        Ответить
        • эм, не совсем магические. под таким ид у меня в базе находтся администраторы.
          Ответить
          • Это типичное магическое число.
            Ответить
          • А еще эта десятка используется при регистрации администратора... А какая-нибудь пятерка при регистрации модератора...
            Magic numbers. No way.

            Имхо стоит организовать модулек, в котором будут перечислены эти константы уровней доступа, и использовать в коде именно эти константы, а не значения. Когда-нибудь вы сами придете к такому выводу...
            Ответить
            • имхо надо связывать не по номеркам, а по именам. айдишники ветрены и непостоянны... имена кстати тож засунуть в константы неплохо бы, причем в саму модель.
              Ответить
              • Ну если уж используются номера - то хотя бы их перенести в константы - как первый шаг рефакторинга. А на следующем шаге легко будет заменить числа на строки.
                Ответить
          • ID из базы в php-скрипте - типичный фэйл начинающих. Связность стремится к бесконечности.
            Ответить
            • является частным случаем более общего - "раз у меня такая конфига, то и у всех будет она же". отсюда и сыплящиеся эксепшны, и уязвимости, и ненужные айконвы, и волшебные числа/стринги и все остальное.
              и вообще - солипсизм жестко наказуем.

              да, есть другая крайность, когда не доверяют языку и проверяют истины на вшивость
              Ответить
      • Нет, не kohana. Это slimframework+paris(idiorm).
        Ответить
    • показать все, что скрытотест
      Ответить
    • >find_many();
      find_чуть-чуть();
      find_very_very_many();
      find_дохера();
      Ответить

    Добавить комментарий