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

