отключить приложение или модуль в Symfony - PullRequest
0 голосов
/ 01 февраля 2011

У меня есть два приложения.Я хочу отключить один в соответствии с полем, хранящимся в базе данных.Можно ли отключить приложение (((если это не возможно) модуль) по коду, возможно, с помощью фильтра)?Я нашел фрагмент кода, который выполняет проект: отключить, но я думаю, что он недостаточно хорош.

Альтернативой, я думаю, является проверка значения, хранящегося в базе данных, внутри пользовательского фильтра, а затем перенаправлениедействие, сообщающее «Сайт отключен».

Ответы [ 2 ]

1 голос
/ 06 февраля 2011

Вы можете создать фильтр, который проверяет, может ли текущий пользователь получить доступ к запрошенному модулю / действию:

if($this->getRequest()->getParameter('module')=='yourmodule' && !$this->getUser()->mayAccess('yourmodule'()){
  //redirect to somewhere else
}

В классе пользователя:

function mayAccess($module){
  $key = $module.'_enabled';

  if(!$this->hasAttribute($key)){
    $enabled = ... //Fetch permission from database
    $this->setAttribute($key,$enabled);
  }

  return $this->getAttribute($key);
}

Нечто подобное. Может быть, вы можете использовать файл модулей security.yml и переопределить функцию, которая проверяет учетные данные и разрешения пользователей, например метод hasCredential () ? На самом деле это кажется более чистым способом сделать это.

См .: http://www.symfony -project.org / api / 1_4 / sfBasicSecurityUser

0 голосов
/ 02 февраля 2011

Вы можете динамически загрузить только то приложение, которое вам нужно, в вашем файле index.php.

...