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]> 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]>:
> >
> >> 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]
> >>  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