在Symfony中禁用应用程序或模块

时间:2011-02-01 04:22:37

标签: symfony1 symfony-1.4

我有两个申请。我想根据存储在数据库中的字段禁用一个。 是否可以通过代码禁用应用程序((如果它不可用)模块)可能使用过滤器)?我发现了一段执行项目的代码:禁用但我认为它不够好。

我认为另一种方法是检查存储在自定义过滤器内的数据库中的值,然后重定向到通知“该网站已被禁用”的操作。

2 个答案:

答案 0 :(得分:1)

您可以创建一个过滤器,检查当前用户是否可以访问所请求的模块/操作:

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

答案 1 :(得分:0)

您可以在index.php文件中仅动态加载所需的应用程序。