Ограничение всей страницы генератора админки Symfony в соответствии с учетными данными - PullRequest
1 голос
/ 02 ноября 2009

У меня есть веб-сайт с большим количеством генераторов администраторов, чтобы позаботиться о ассортименте таблиц. В сфере аутентифицированных пользователей я хочу запретить доступ не только к отдельным действиям или полям, но и ко всему модулю администратора.

Похоже, что для generator.yml не существует глобального параметра учетных данных, а помещение в security.yml на уровне модуля, похоже, не имеет никакого эффекта.

Я просмотрел сгенерированный код и посмотрел на cache/front/dev/modules/autoFoo/actions/actions.class.php, в частности на preExecute (), но я не знаю, что делать.

Я полагаю, что мне нужно перезаписать preExecute () в моем собственном файле actions.class.php, но я немного не уверен, какой он должен быть, например, когда вызывать parent :: preExecute () (если в факт мне нужен или нет).

Ответы [ 3 ]

2 голосов
/ 03 ноября 2009

Я считаю, что вы можете установить учетные данные внутри уровня модуля security.yml, установив значение "all". То есть внутри / config / security.yml поместите:

all:
  credentials: ModuleAccess
1 голос
/ 19 ноября 2009

Ваш файл security.yml в папке model / config должен выглядеть следующим образом:

default:
  is_secure: on
  credentials: [ moduel_access ]
1 голос
/ 02 ноября 2009

Отвечая на мой собственный вопрос, с результатами некоторых предварительных исследований, может показаться, что:

class fooActions extends autoFooActions
{
  public function preExecute() {
    if (!sfContext::getInstance()->getUser()->hasCredential('can_do_foo')) {
        $this->redirect('@homepage');
    }
    parent::preExecute();
  }
}

... будет, по крайней мере, препятствовать тому, чтобы люди, взламывающие URL, заходили в функцию администратора Но меня заставляют поверить, что sfContext::getInstance() является злом . Поэтому я все еще ищу правильный способ сделать это.

...