Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
preciso restringir o acesso a qualquer action acessado pela rota /admin.
Consigo fazer a restrição apenas a action users (/admin/users) mas ele não faz com o resto (/admin/blog por exemplo)
estou fazendo da seguinte forma:
AppControler:
class AppController extends Controller {
var $name = 'App';
var $components = array('Auth', 'Session');
print_r($this->params['admin']);
function beforeFilter() {
if (isset($this->params['admin'])) {
$this->Auth->deny('*');
}$this->Auth->allow('*'); // permite todas as que não forem admin
}
$this->Auth->userModel = 'Admin';//$this->Auth->authorize = 'controller'; //autorização feita pelo auth nos controladores, usando a função isAuthorized
$this->Auth->autoRedirect = true; //ativado redireciona o usuário para a requisição anterior que foi negada após o login
//$this->Auth->loginAction = array('controller' => 'usuarios', 'action' => 'login', 'admin' => false); //o usuário é redirecionado para esta ação caso não esteja autenticado
$this->Auth->logoutRedirect = array('controller' => 'pages', 'action' => 'home', 'admin' => false); //redireciona após o logout
$this->Auth->loginRedirect = array('controller' => 'pages', 'action' => 'home', 'admin' => true); //redireciona após login
$this->Auth->loginError = 'Usuário e/ou senha inválidos'; //mensagem caso o login não tenha sucesso
$this->Auth->authError = 'Você não tem permissão para acessar esta área'; //mensagem caso o usuário acesse uma área restrita
}
function isAuthorized() {
return true; //pode ser mais complexo, fazendo verificações antes de autorizar com true;
}
}
}
?>
Users (controler):
<?php
class UsersController extends AppController {
var $name = 'Users';
var $components = array('Auth');
function admin_login(){} // é tudo automagic, não precisa alterar nada que o Auth se encarrega do resto
function admin_logout(){
$this->Session->setFlash("Até +"); //cria a mensagem de despedida
$this->redirect($this->Auth->logout()); //finaliza a sessão e redireciona para a logoutRedirect
}
}
?>
Users (view):
<h2>Login</h2>
<?php
echo $form->create('User',
array('url' => array(
'controller' => 'users',
'action' =>'login')));
echo $form->input('username');
echo $form->input('password',array('type'=>'password'));
echo $form->end('Login');
?>
Alguém sabe como posso resolver isso? de forma que funcione em toda a rota /admin ?
Obrigado :)
Carregando comentários...