Olá Bill e lista, bom dia.

Então Bill, não sei se você lembra eu disse que estava trabalhando em dois
projetos, um pessoal e um para a comunidade radioamadorística. Estou usando
meu projeto pessoal como laboratório e o outro estou tentando fazer da
melhor forma possível (conhece aquela história sobre "santo de casa não
fazer milagres"?). Porém, no quesito controle de usuários minha aplicação
pessoal é muito pobre. Só deve haver um usuário (eu!! hihi) que pode tudo
(modesto eu né?) e qualquer visitante não logado que terá acesso a uma view
de pesquisa. Dessa forma basta que eu proteja tudo menos aquela view. Também
não tenho nenhuma página (por enquanto pelo menos) que não seja gerada por
um controler e precise ser protegida. Assim basta proteger todos os
controller menos a view de pesquisa. Ainda não fiz a view de pesquisa mas
acho que vai funcionar redefinindo, naquele controller, o

var $othAuthRestrictions = array( 'add','edit','delete');

Assim que testar eu digo se funcionou.

Já na outra aplicação vou ter muitos usuários (todos que desejarem usar
parte protegidas do sistema). Terei três bases de dados (modelos) onde
qualquer um pode registrar informações, logado ou não (funcionará como um
painel de divulgação, cada um do modelos estará divulgando algo diferente,
público, portanto não precisa estar logado). Depois eu tenho o profile de
cada estação de radioamador e um sistema de impressão on-line dos
certificados de participação e diplomas das competições organizadas pelo
grupo. Nesses casos é fundamental estar logado. Nas divulgações públicas, se
o usuário estiver logado, vou oferecer um "add-on" onde alguns campos
aparecerão pré populados (evitando a necessidade de digitação). Meu plano é
proteger tudo no AppController e redefinir a variável othAuthRestrictions
nos controllers onde não precisar de proteção (como disse ainda não sei se
funciona). Também tenho um plano B (que não faço mínima idéia se funcionará)
onde, no appController, caso não estaja logado (via othAuth), definir o
user_id e group_id na session como 999 (user/grupo anonymous por exemplo) e
setar as permissões para esse grupo na base. Estaria tentando forçar um
"login" do user anonymous do grupo anonymous. Então, se eu não estiver
pensando besteira, quando o usuário acessar uma área protegida (onde
anonymous não tem direito de ir), será redirecionado para o login page onde
fará um "re-login" com um usuário válido (setando as vars User e Group da
session para outros valores).

Será que funciona?

Spark, como funciona no Cake 1.2?

Abraço,
Benito

On 11/13/07, Bill <[EMAIL PROTECTED]> wrote:
>
> no meu arquivo users_controller.php faço isto da seguinte maneira
>
> coloco o redirect dentro da function login
>
> function login()
>     {
>         if(isset($this->params['data']))
>         {
>             $auth_num =
> $this->othAuth->login($this->params['data']['User']);
>
>             $this->set('auth_msg', $this->othAuth->getMsg($auth_num));
>
>             $this->redirect('users/painel', null, true);
>         }
>     }
>
>
> Agora deixa eu te perguntar algo Benito...como está protegendo suas
> páginas, de começo estava avançando bem com o othAuth, mas agora ja to
> apanhando.
>
> Vi que no arquivo app_controller.php tem uma linha q serve pra proteger os
> controllers
>
> var $othAuthRestrictions = array( 'add','edit','delete');
>
> no caso ela impede acesso a qualquer pagina q chame estes add, edit e
> delete.
>
> Como vc está fazendo para proteger as páginas? vc protege o controller
> inteiro? apenas algum método dele?
> Você apenas configura via banco a permissão das páginas X grupos?
>
> Se puder dar umas dicas, serão bem vindas!
>
> Abraços
>
> > Obrigado Bill.
> >
> > O mesmo está funcionando, apenas estou enfretando um probleminha
> > que ainda estou debugando sem muito sucesso.
> >
> > Seu eu tento fazer algo protegido ele me direciona para a página de
> > login (ótimo!). Tudo ocorre bem agora. Mas, se eu sou um usuário
> > esperto e savei a URL: localhost/app/users/login e uso ela para
> > entrar no site (ou seja, não sou redirecionado para o login, vou
> > direto a ele como primeira atividade do site), após o login o "auto
> > redirect" me joga para
> >
> > localhost/app/allow
> >
> > que obviamente não é um controller válido. Me parece que allow é
> > lixo dentro da variável "from" que não está setada. Mas já estou
> > correndo atrás para descobrir onde se origina o problema. Assim que
> > souber eu posto aqui.
> >
> > Abraço
> > Benito
> >
> > On 11/9/07, Bill wrote:>  Vamos a algumas
> > dicas do padeiro aqui..rsrsrsrs
> >
> >> no arquivo app_controller.php, dentro da função beforeFilter,
> >> insira esta linha
> >>
> >>       $this->othAuthRestrictions[] =
> >> Configure::read('Routing.admin');
> >>
> >> Ficando desta maneira
> >>
> >> function beforeFilter()
> >>   {
> >>
> >>       $this->othAuthRestrictions[] =
> >> Configure::read('Routing.admin');
> >>
> >>
> >> Agora, no component oth_auth.php, troque todas referências:
> >>
> >> defined('CAKE_ADMIN')
> >>
> >> Por:
> >>
> >> Configure::read('Routing.admin')
> >>
> >>
> >> e todas ocorrencias de:
> >>
> >> CAKE_ADMIN
> >>
> >> Por:
> >> Configure::read('Routing.admin')
> >>
> >>
> >> e tb troque neste arquivo a linha:
> >> $res = $UserModel->save($row,true,array($this-
> >> >user_table_last_visit));
> >>
> >>
> >> Por estas 2 linhas:
> >> $UserModel->id = $row[$this->user_model]['id']; $res = $UserModel-
> >> >saveField($this->user_table_last_visit,$row[$this-
> >> >user_model][$this->user_table_last_visit],true);
> >>
> >>
> >> Estas dicas foram extraidas deste blog:
> >> http://www.ancientwisdom.cc/news/archives/111
> >>
> >> Espero q te ajude
> >>
> >>
> >>> Boa noite Bill, Gustavo e lista,
> >>>
> >>> Bill, funcionou, agora ele não tenta mais criar um registro
> >>> novo na tabela de usuários e atualiza os dados de last visit e
> >>> modified corretamente. Porém continua  o notice:
> >>>
> >>> Notice: Only variables should be assigned by reference in
> >>> C:\xampp\htdocs\logbook\app\controllers\components\oth_auth.php
> >>> on line 301
> >>>
> >>> Obviamente seguido de um "Cannot modify headers" já que isso
> >>> acontece em um redirecionamento.
> >>>
> >>> Algum outro ajuste no oth_auth.php?
> >>>
> >>> Grato.
> >>> Benito
> >>>
> >>> On 11/8/07, Bill wrote:>  Bom, vamos lá,
> >>> instalei aqui o othAuth e funcionou perfeito, mas tem alguns
> >>> ajustes necessários, primeiro, vamos tratar deste erro:
> >>>
> >>>> + ou - na linha 323 do component oth_auth.php, temos o
> >>>> seguinte trecho de código:
> >>>>
> >>>> // Update the last visit date to now
> >>>>         if(isset($this->user_table_last_visit))
> >>>> {                     $row[$this->user_model][$this-
> >>>>
> >>>>> user_table_last_visit] = date('Y-m-d H:i:s');
> >>>>>
> >>>>>
> >>>> $res = $UserModel->save($row,true,array($this-
> >>>>
> >>>>> user_table_last_visit));             }     Substitua por
> >>>>> isto:
> >>>>>
> >>>> // Update the last visit date to now
> >>>>         if(isset($this->user_table_last_visit))
> >>>> {                 $row[$this->user_model][$this-
> >>>>
> >>>>> user_table_last_visit] = date('Y-m-d H:i:s');
> >>>>>
> >>>>             $UserModel->id = $row[$this->user_model]['id'];
> >>>>               $res = $UserModel->saveField($this-
> >>>>
> >>>>> user_table_last_visit,$row[$this->user_model][$this-
> >>>>> user_table_last_visit],true);             }
> >>>>
> >>>>
> >>>> Na linha ($res = $UserModel->saveField($this-
> >>>>
> >>>>> user_table_last_visit,$row[$this->user_model][$this-
> >>>>> user_table_last_visit],true); ) eu troquei o $UserModel-
> >>>>> >save
> >>>>>
> >>>> por $UserModel->saveField, que atualiza o registro,
> >>>> atualizando assim a data de autenticação do usuário, quando o
> >>>> save, apenas está tentando isnerir um novo registro, por isto
> >>>> dá erro
> >>>>
> >>>>
> >>>> Ah, acessa a tabela de usuários do othAuth e deleta um
> >>>> registro em branco q tem lá, ele foi criado por este save
> >>>> besta ai de cima..rs
> >>>>
> >>>> Qquer coisa so perguntar
> >>>>
> >>>>
> >>>>> Bom dia,
> >>>>>
> >>>>> Não falei que iria começar a fazer perguntas? Seguindo a
> >>>>> documentação do othAuth consegui por para funcionar (ainda
> >>>>> tem bugs) mas estou tendo dois problemas:
> >>>>>
> >>>>> 1) Recebo a mensagem: Notice: Only variables should be
> >>>>> assigned by reference in
> >>>>> C:\xampp\htdocs\logbook\app\controllers\components\oth_auth.php on
> lin
> >>>>> e 301 logo depois de logar com usuário correto. A linha 301
> >>>>> está, se não me engano, fazendo o save do LoginAttempt
> >>>>> model. Como dá esse Notice, não grava o login attempt e,
> >>>>> obviamente, não faz o redirect corretamente.
> >>>>>
> >>>>> 2) Se apago o cookie de sessão (para forçar um login),
> >>>>> recebo, além do item um acima, um
> >>>>>
> >>>>>
> >>>>> Query: INSERT INTO `users`
> >>>>> (`last_visit`,`created`,`modified`) VALUES ('2007-11-08
> >>>>> 02:05:27','2007-11-08 02:05:27','2007-11-08 02:05:27')
> >>>>> Warning: SQL Error: 1062: Duplicate entry '' for key 2 in
> >>>>> C:\xampp\htdocs\cake_core\cake\libs\model\datasources\dbo_source.php
> o
> >>>>>   n line 440 que, neste caso, está tentando dar INSERT de
> >>>>> valores na tabela users para uma key 2. O detalhe é que só
> >>>>> tenho um usuário na tabela users e ele tem key (Id) 1. Os
> >>>>> campos create e modified e last_visit do user (id=1) não
> >>>>> são mexidos, mas a entrada 2 é criada (caso não exista) e
> >>>>> depois recebo esse erro. Pergunta, o othAuth não deveria
> >>>>> tentar um "UPDATE" ao invés de INSERT? Alguém sabe o que
> >>>>> está causando isso? Grato Benito
> >
> >
> >
> >
>

--~--~---------~--~----~------------~-------~--~----~
Recebeu esta mensagem porque está inscrito em Grupo "Cake PHP Português" do 
Grupos Google.
 Para enviar mensagens para este grupo, envie um email para 
[email protected]
 Para anular a inscrição neste grupo, envie um email para [EMAIL PROTECTED]
 Para mais opções, visite este grupo em 
http://groups.google.com/group/cake-php-pt?hl=pt-PT
-~----------~----~----~----~------~----~------~--~---

Responder a