2011-02-01 6 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 파일에서 원하는 응용 프로그램 만 동적으로로드 할 수 있습니다.

관련 문제