P3rukao 0 Denunciar post Postado Abril 29, 2010 Daew, estou tentando utilizar um component para saber se um usuário está logado na página (tentando reaproveitar uma classe que já tenho, que uso nas páginas com php puro), e nessa minha classe (agora component) é necessário que se abra uma conexão para se verificar o status do usuário (logado ou não). Ainda estou penando com esse cake... =/ Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Maio 1, 2010 Você deve importar o model que você quer e criar uma nova instancia ou... Você pode tentar (tentar porque depende de quem chama o componente) chamar o Model que está dentro do controller que você chamou o component... what? (Não eu entendi isso hehe) Bom. O primeiro: App::import('Model', 'Usuario'); $user = new Usuario(); $user->find(... E o segundo: Quando um controller chama um componente, uma instancia deste controller ficará disponivel em seu component. Tendo o controller em mãos, você, consequentimente, terá os models deste controller. Como acessar este controller então? Os components, teem um método que servem como um tipo de construtor, o startup(). Ele recebe 2 parametros. O primeiro é a instancia do controller. Então, em seu componente, basta: function startup(&$controller, $opts = array()){ $this->controller =& $controller; $this->userModel =& $controller->User; } ... continua normalmente seu component //$this->userModel->find('...'); Espero que não tenha ficado complicado Compartilhar este post Link para o post Compartilhar em outros sites
P3rukao 0 Denunciar post Postado Maio 1, 2010 Deu pra entender sim lucas... vlw xD Eu só não sei se abrir manualmente é a melhor opção pra mim. O lance é o seguinte: Em meu template, tem uma parte que exibe um determinado conteúdo se o usuário estiver logado, sinão mostra outro (Pra ser mais exato, é o mesmo que acontece no canto superior direito desse site, onde dá acesso ao perfil e painel de controle do usuário). Ainda estou estudando sobre o uso do Auth componente, mas por enquanto queria saber o quanto que posso "reaproveitar" do scripts que já tenho, e que uso no "php puro", que nesse caso seria uma classe de login com gravação de cookies. Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Maio 2, 2010 Você pode utilizar um element. Um box (como element) para quando tiver logado, e outra caso não esteja. Aí: if($this->isLogged()){ $element = 'logged'; }else{ $element = 'unlogged'; } $this->set('element', $element); View: <h1>Usuarios</h1> <?php echo $this->element($element); ?> Aí, se está logado ou não, irá exibir o elemento respectivo desta forma Compartilhar este post Link para o post Compartilhar em outros sites
P3rukao 0 Denunciar post Postado Maio 4, 2010 Bacana, mas esse $this->isLogged() que você usou seria uma função utilizando o Auth Component, ou seria a minha função, de minha classe de login? Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Maio 4, 2010 O isLogged foi so um exemplo =P Malz por não falar. Mas tem um modo, com o proprio auth component, de saber se o user está logado: function isLogged(){ return (bool)$this->Auth->user('id'); } Agora sim o isLogged existe. Compartilhar este post Link para o post Compartilhar em outros sites
P3rukao 0 Denunciar post Postado Maio 5, 2010 rsrsrs... eu tinha entendido Lucas... só perguntei pra ter certeza msm xDD mas, em relação ao auth component, eu tenho uma situação em que tenho dois paineis administrativos. Um para o administrador do site, e outro para o cliente do site. Eu estava querendo utilizar com a classe que já tenho, pois já sei como fazer e está funcionando direitinho. Mas como que eu poderia fazer essa autenticação com o Auth Component, para os dois sistemas sem dar conflito? Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Maio 6, 2010 Um para o administrador do site, e outro para o cliente do site.Como você fez isso? Utilizando os Prefixes certo? Mas como que eu poderia fazer essa autenticação com o Auth Component, para os dois sistemas sem dar conflito?COmo assim? Oque você precisa exatamente? Compartilhar este post Link para o post Compartilhar em outros sites
P3rukao 0 Denunciar post Postado Maio 6, 2010 Como você fez isso? Utilizando os Prefixes certo?Eu fiz isso, mas não foi no cake naum... no php puro mesmo... cada página acessando uma página de validação diferente... Mas como que eu poderia fazer essa autenticação com o Auth Component, para os dois sistemas sem dar conflito? COmo assim? Oque você precisa exatamente? Tipo assim: eu tenho duas áreas no site: /adiministracao, e /painel. onde o /painel é onde o cliente tem acesso aos conteúdos dele.. e o /adiministracao é para o gerenciamento geral do site. Eu já li a respeito, mas em todo lugar que vejo, é uma complicação da bixiga, com esse Auth Component e e o ACL. Mas não achei nada em relação a esse meu problema. Os usuário estão em tabelas separadas... uma para os clientes e outro para os administradores do site. Deu pra entender agora ou eu compliquei mais Ô.õ_ ?? Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Maio 7, 2010 Se estão em tabelas separadas fica até mais fácil. Aconselho utilizar os prefixes, um "administracao" e outro "painel", aí suas action: function painel_nomeDaAction()...Ou: function administracao_nomeDaAction()... Os prefixes so estão disponiveis no Cake 1.3+ Compartilhar este post Link para o post Compartilhar em outros sites
P3rukao 0 Denunciar post Postado Maio 10, 2010 Bacana Lucas, eu andei olhando uns tutos teus e de outros na web, e até consegui fazer funcionar UMA area restrita... mas foi utilizando o controller do usuário.... tipo: site/usuarios/login... mas como eu falei, estou querendo que seja nos dois esquemas: "administracao" e "painel"... Nesse caso, eu teria que criar models e controllers "fictícios" para essas áreas restritas, para que pudesse, assim, ficar: painel/addPost, administracao/listarUsuarios,...,etc? E... para a criação desse meu primeiro painel, eu fiz umas configurações na app_controller, como $this->Auth->userModel = 'Usuario'; e $this->Auth->fields = array('username' => 'login', 'password' => 'senha'); Porém como eu vou estar usando duas tabelas, para cada usuário do site (cliente e administradores), como que eu deveria fazer essa configuração do Auth Component? Ao invés de por na app_controller, colocar só na minha controller em questão: administracao e painel??? E... eu andei pensando em fazer alterações nessas tabelas de usuarios, mas queria manter o mesmo esquema para os clientes e administradores, então, nesse caso o $this->Auth->userScope serviria para mim poder condicionar a seleção do usuário, como por níveis de acesso por exemplo? ufa!! epero que você posssa me esclarecer essas dúvidas.. ;) Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Maio 10, 2010 Porém como eu vou estar usando duas tabelas, para cada usuário do site (cliente e administradores), como que eu deveria fazer essa configuração do Auth Component? Ao invés de por na app_controller, colocar só na minha controller em questão: administracao e painel??? Basta fazer um IF, se estiver no prefixo "administracao" configura de um jeito se estiver com o prefixo "painel" de outro. O CakePHP tem esta propriedade Controller::$params, deste modo você pode saber qual prefixo esta. Se for o administacao, você acessará: $this->params['administracao']; // true ou $this->params['painel']; Então: if($this->params['administracao']){ //configura de um jeito }elseif($this->params['painel']){ // configura de outro }else{ // se não tiver prefixos, cai aqui... } E... eu andei pensando em fazer alterações nessas tabelas de usuarios, mas queria manter o mesmo esquema para os clientes e administradores, então, nesse caso o $this->Auth->userScope serviria para mim poder condicionar a seleção do usuário, como por níveis de acesso por exemplo?Suponho que sim, mas... o ideal seria utilizar ACL.. Compartilhar este post Link para o post Compartilhar em outros sites
P3rukao 0 Denunciar post Postado Maio 11, 2010 Mas nesse caso, esses params só seriam 'setados' se eu tentar, por exemplo, acessar /meusite/meucontroller/administracao_add/? Pois eu coloquei o condicional em minha app_controller, mas retorna como se não existisse esses dois parametros... e em todas as páginas, só pra debug, se eu faço print_r($this->params); dá pra ver que os tais parâmetros nunca aparecem... Eu acho que não saquei mto... =/ Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Maio 11, 2010 Eles aparecerão quando você estiver na área com prefixo, por isso é aconselhavel utilizar isset. E a url correta é: /meusite/meucontroller/administracao/add e não /meusite/meucontroller/administracao_add (pra isso servem os prefixos) Compartilhar este post Link para o post Compartilhar em outros sites