"PHP" / Говнокод #11299 Ссылка на оригинал

0

  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 mr.The, (Updated )

Комментарии (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/');
    Ответить
      • эм, не совсем магические. под таким ид у меня в базе находтся администраторы.
        Ответить
        • А еще эта десятка используется при регистрации администратора... А какая-нибудь пятерка при регистрации модератора...
          Magic numbers. No way.

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

            да, есть другая крайность, когда не доверяют языку и проверяют истины на вшивость
            Ответить

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

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8