2011-02-01 37 views
0

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

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

回答

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

0

你可以动态加载你想要在你的index.php文件中的应用程序。

相关问题