Oi Pedro, acabei voltando ao método anterior de verificar em cada 
controller.
Não entendi muito bem o lance do hook. Eu havia feito no 
'post_controller_constructor' só que dava erro em outras chamadas a 
minhas classes e achei melhor deixar quieto.
Quem sabe quando eu tiver mais algumas horas de voo no CI eu possa me 
aventurar nessas coisas mais complexas. :D


Muita sorte para nós!

Marco Telles



Pedro Vasconcelos escreveu:
> Bom, talvez eu esteja atrasado nessa discussão (tenho estado muitoooo 
> ocupado)... Mas vamos lá!
>
> Marco,
>
> uma maneira simples de fazer isso é criar um hook, por exemplo o 
> post_controller_constructor que, se não me engano é o primeiro na 
> hierarquia de execussão após iniciar as classes "default" como a URI, 
> e, na função que o hook roda você restringir o código de autenticação 
> apenas para o usuário que acessar o diretório da administração.
>
> Veja bem que isso pode não ser tão seguro, dependendo das suas 
> configurações...
>
> Depois diz pra gente qual solução você adotou!
>
> Boa sorte!
>
> Pedro.
>
> Em 08/04/08, *Marco Telles* <[EMAIL PROTECTED] 
> <mailto:[EMAIL PROTECTED]>> escreveu:
>
>     É isso ai. Eu também acho legal discutir soluções, é uma forma de
>     compartilhar conhecimento.
>     Então, entendi sua idéia, mas como essa pasta dificilmente será
>     mudada,
>     acho que dá para aproveitar a idéia do Rafael, da seguinte forma:
>
>         function index() {
>            // se chamada for feita diretamente via url, retorna
>             redirect('subpasta/admin');
>         }
>
>     27    function init () {
>     28        $CI =& get_instance();
>     29        $pasta = $CI->uri->segment(1);
>     30        $metodo = $CI->uri->segment(3);
>     31        if ($pasta === 'subpasta' && $metodo !== 'login') {
>     32            $this->login("ENTROU");
>     33        }
>     34    }
>
>         function login( $entrou ) {
>             echo $entrou;
>         }
>
>     Aí surgiu um erro que não entendi.
>     Usei no hook a opção 'pre_controller', já que ela atua antes da
>     chamada
>     a nossos controllers e imediatamente após o carregamento das classes
>     base do CI, mas nesse caso dá um erro:
>
>     Severity: Notice
>     Message: Trying to get property of non-object
>     Filename: hooks/Auth.php
>     Line Number: 29
>     Fatal error: Call to a member function segment() on a non-object in
>     hooks/Auth.php on line 29
>
>     Se eu mudo a opção para 'post_controller_constructor' aí funciona. O
>     ideal não seria ter essa chamada antes de qualquer controlador meu ser
>     carregado ???
>
>
>     Abs
>
>
>     Edinho Almeida escreveu:
>
>     > Oi Marco,
>     >
>     > E se você definir no controller algo do tipo:
>     >
>     > subpasta/admin.php
>     > class Admin extends Controller{
>     >    public $requer_autenticacao = true; // funciona se logado e, se
>     > não, joga para o admin/login
>     >    ...
>     > }
>     >
>     > E testar esta propriedade no Hook ?
>     > if( isset($this->requer_autenticacao) AND
>     $this->requer_autenticacao === true ){
>     >
>     > }
>     > ficaria independente de sua estrutura de pasta.
>     >
>     > IMPORTANTE : Considere o código acima um 'brainstorm', provavelmente
>     > deverá ser adaptado.
>     > (gosto da idéia de trocarmos idéias e não somente soluções
>     resolvidas)
>     >
>     > Abs
>     > Edinho Almeida
>     >
>     > 2008/4/8 Marco Telles <[EMAIL PROTECTED]
>     <mailto:[EMAIL PROTECTED]>>:
>     >
>     >> Oi Rafael, eu 'capisce' sim  :)
>     >>
>     >>  Mas o admin apenas monta um menu que vai chamar vários
>     controllers. Se
>     >>  alguém acessar a url diretamente ele não vai bloquear, já que
>     não vem do
>     >>  admin. E aí seria o caso de ter um array com todos os
>     controllers para
>     >>  testar ? Seria a melhor solução ?
>     >>
>     >>  Outra opção, respondendo ao Edinho, pegar o segmento da
>     subpasta, já que
>     >>  todos os controllers do admin estão dentro dela. Seria uma boa
>     opção ???
>     >>
>     >>
>     >>  abs
>     >>
>     >>
>     >>
>     >>
>     >>
>     >>  _______________________________________________
>     >>  Lista mailing list
>     >>  [email protected] <mailto:[email protected]>
>     >>  http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>     >>
>     >>
>     >
>     >
>     >
>     >
>
>     _______________________________________________
>     Lista mailing list
>     [email protected] <mailto:[email protected]>
>     http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Lista mailing list
> [email protected]
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>   

_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

Responder a