Verifique a permissão contra os usuários do grupo e não usando auth-> Authorize = “Ações”

StackOverflow https://stackoverflow.com/questions/3413747

Pergunta

Alguém pode me explicar o funcionamento de Auth->authorize = "actions"
No meu projeto, estou planejando que o TP dê isso.
Como isto me ensinou que o autorize chamará o $this->Aro->check($user,"controllers/:controller/:action")

Isso vai verificar o contra o usuário certo ??
Isso significa que o usuário deve estar lá na tabela AROS.
Mas não preciso disso para verificar contra o usuário, mas preciso verificar um grupo
Como posso conseguir isso.

Agora, quando os usuários não estão na tabela Aro, mostrando o

Para que os ARO sejam apenas os grupos e a adição de usuários ao AROS é necessária

obrigado antecipadamente

Foi útil?

Solução

Tenho a solução
usando isso referência
Eu estendi o autônomo para o customauth e substituí o isAutorized() Método no Authcomponent da seguinte maneira

em controladores/componentes/custom_auth.php

    <?php
App::import('Component','Auth');
class CustomAuthComponent extends AuthComponent {

    public function isAuthorized($type = null, $object = null, $user = null) {

        $actions  = $this->__authType($type);
        if( $actions['type'] != 'actions' ){
            return parent::isAuthorized($type, $object, $user);
        }
        if (empty($user) && !$this->user()) {
            return false;
        } elseif (empty($user)) {
            $user = $this->user();
        }


        $group = array('model' => 'Group','foreign_key' =>$user['Login']['group_id']);
        $valid = $this->Acl->check($group, $this->action());
        return $valid;
    }
}
?>

em app_controller.php

function beforeFilter()
{
$this->CustomAuth->userModel = 'Login';
$this->CustomAuth->allowedActions = array('display');
$this->CustomAuth->actionPath = 'controllers/';
$this->CustomAuth->authorize = 'actions';
}

Isso resolveu meu problema :)

Outras dicas

Dê uma olhada neste capítulo. Para verificar a permissão de um grupo, faça isso ('Modelo' e 'Foreign_key', os valores são da tabela AROS):

$this->Acl->check(
     array('model' => 'Group', 'foreign_key' => 2),
    'controller/action'
);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top