Rosa usa el helper Session para traer los datos en tu vista, en tu caso
<?php echo $this->Session->read('User');?>
*Aland Laines Calonge*
Twitter: @lainessolutions
http://about.me/aland.laines
El 21 de noviembre de 2012 11:52, Rosa Atienza Ribés
<[email protected]>escribió:
> Muchísimas gracias Aland aunque no se si porque he hecho algo mal no
> consigo exactamente el comportamiento que busco .
>
> La idea es una página principal (home) que dependiendo de si estas
> logueado o no muestra una información diferente, ejemplo el bienvenido
> <nombre_usuario>
>
> Con lo que me has enviado tengo el login con el que puedo entrar, he
> añadido en pages en la funcion beforeFilter que me permita acceder al home
> pero en cuanto hago eso la variable $_SESSION se queda vacía.
>
>
> *AppController.php*
>
> App::uses('Controller', 'Controller');
> class AppController extends Controller {
> var $components = array('Session',
> 'Auth' => array(
> 'loginRedirect' =>
> array('controller' => 'pages', 'action' => 'display', 'home'),
> 'logoutRedirect' =>
> array('controller' => 'pages', 'action' => 'display', 'home'),
> 'authError' => 'No ha ingresado
> en el sistema'
> ));
>
> var $helpers= array('Js' => array('Jquery'),'Html','Form','Session');
>
>
> public function beforeFilter(){
> parent::beforeFilter();
> $this->Auth->deny(); //todos los controladores se deniegan a no ser
> que estes logueado
> }
>
> }
>
>
> *UsersController.php *
>
> class UsersController extends AppController{
> var $name='Users';
>
>
> public function beforeSave($options = array()) {
> if (isset($this->data[$this->alias]['password'])) {
> $this->data[$this->alias]['password'] =
> AuthComponent::password($this->data[$this->alias]['password']);
> }
> return true;
> }
>
>
> public function login(){
> if ($this->request->is('post')) {
> if ($this->Auth->login()) {
> $this->Session->write('User',$this->User);
>
> $id = AuthComponent::user('id');
> $this->Session->write('Usuario.id',$id);
> $this->redirect($this->Auth->redirect());
> } else {
> $this->Session->setFlash(__('Usuario o
> contraseña inválida, pruebe de nuevo.'));
> }
> }
> }
>
> public function logout(){
>
> $this->Session->destroy();
> $this->redirect($this->Auth->logout());
> }
> }
>
>
> *PagesController *
>
> class PagesController extends AppController {
>
> /**
> * Controller name
> *
> * @var string
> */
> public $name = 'Pages';
>
> /**
> * This controller does not use a model
> *
> * @var array
> */
> public $uses = array();
>
> /**
> * Displays a view
> *
> * @param mixed What page to display
> * @return void
> */
> public function display() {
> $path = func_get_args();
>
> $count = count($path);
> if (!$count) {
> $this->redirect('/');
> }
> $page = $subpage = $title_for_layout = null;
>
> if (!empty($path[0])) {
> $page = $path[0];
> }
> if (!empty($path[1])) {
> $subpage = $path[1];
> }
> if (!empty($path[$count - 1])) {
> $title_for_layout =
> Inflector::humanize($path[$count - 1]);
> }
> $this->set(compact('page', 'subpage', 'title_for_layout'));
> $this->render(implode('/', $path));
> }
>
> *
> public function beforeFilter(){
> parent::beforeFilter();
> $this->Auth->allow('display');
> }
> *
>
> Esto que he puesto en negrita, es realmente el cambio, si lo pongo me
> permite acceder a home sin tener que autentificarme pero el $_SESSION esta
> vacío aunque me haya autentificado :/
>
> Si no lo pongo, no puedo acceder.
>
> */View/Pages/home.ctp
> *
>
> if (Configure::read('debug') == 0):
> throw new NotFoundException();
> endif;
> App::uses('Debugger', 'Utility');
> ?>
>
>
> <?php
> debug($_SESSION);
>
> if ( $_SESSION ){
> $user = $_SESSION['Auth']['User'];
> echo "Bienvenido <strong>".$user['username']."</strong>";
> echo "<br />";
> echo $this->Html->link('Logout','../users/logout');
>
> }else{
> echo $this->Html->link('Login','../users/login');
> }
> echo "<br />";
> ?>
>
>
> Muchisimas gracias,
>
>
> Un Saludo.
>
>
>
>
>
> El 21 de noviembre de 2012 16:56, Aland Laines
> <[email protected]>escribió:
>
> Rosa, no se como lo estes trabajando pero yo hago esto:
>>
>> *AppController.php*
>>
>> class AppController extends Controller {
>>
>> public $components = array(
>> 'Session',
>> 'Auth' => array(
>> 'loginRedirect' => array('controller' => 'personas', 'action'
>> => 'index'),
>> 'logoutRedirect' => array('controller' => 'users', 'action'
>> => 'login'),
>> 'authError' => 'No ha ingresado al sistema.',
>> )
>> );
>> public $helpers = array('Js'=>array('Jquery'), 'Html',
>> 'Form','Session');
>>
>> public function beforeFilter() {
>> parent::beforeFilter();
>> $this->Auth->deny(); // todos los controllers son accesibles solo
>> logueando
>> }
>> }
>>
>> *User.php (Modelo)*
>>
>> App::uses('AuthComponent', 'Controller/Component');
>> class User extends AppModel {
>>
>> public function beforeSave($options = array()) {
>> if (isset($this->data[$this->alias]['password'])) {
>> $this->data[$this->alias]['password'] =
>> AuthComponent::password($this->data[$this->alias]['password']);
>> }
>> return true;
>> }
>>
>>
>> public $validate = array(
>> 'username' => array(
>> 'required' => array(
>> 'rule' => array('notEmpty'),
>> 'message' => 'Escriba un nombre de usuario'
>> )
>> ),
>> 'password' => array(
>> 'required' => array(
>> 'rule' => array('notEmpty'),
>> 'message' => 'Escriba su clave'
>> )
>> ),
>> 'role' => array(
>> 'valid' => array(
>> 'rule' => array('inList', array('admin', 'digitador')),
>> 'message' => 'Please enter a valid role',
>> 'allowEmpty' => false
>> )
>> )
>> );
>> }
>>
>> *UserController.php (Controlador)*
>>
>> class UsersController extends AppController {
>>
>> public function beforeFilter() {
>> parent::beforeFilter();
>> $this->Auth->allow('add'); // Letting users register themselves
>> }
>>
>> public function login() {
>> if ($this->request->is('post')) {
>> if ($this->Auth->login()) {
>> $id = AuthComponent::user('id');
>> $nombre = $this->nombuse($id);
>> $this->Session->write('Usuario.nombre', $nombre);
>> $this->Session->write('Usuario.id',$id);
>> $this->redirect($this->Auth->redirect());
>> } else {
>> $this->Session->setFlash(__('Usuario o password
>> incorrecto.'), 'default', array(), 'auth');
>> }
>> }
>> $this->layout = 'login';
>> }
>>
>> public function logout() {
>> //$this->Session->setFlash(__('Ha salido del sistema.','default',
>> array(), 'auth'));
>> $this->Session->destroy();
>> $this->redirect($this->Auth->logout());
>> }
>>
>> public function add() {
>> if ($this->request->is('post')) {
>> $this->User->create();
>> if ($this->User->save($this->request->data)) {
>> $this->Session->setFlash(__('The user has been saved'));
>> $this->redirect(array('action' => 'index'));
>> } else {
>> $this->Session->setFlash(__('The user could not be saved.
>> Please, try again.'));
>> }
>> }
>> }
>> }
>>
>> Esto solo es básico, no esta implementado lo de ACL, pero para que
>> comienzes estaria bien.
>>
>> En esta linea:
>> $this->Session->write('Usuario.nombre',
>> $nombre);
>>
>> escribes lo que quieres que se almacene en Session, para recuperarlo en
>> tu vista usas esto:
>>
>> <?php echo $this->Session->read('Usuario.nombre');?>
>>
>> Espero te sirva,
>>
>>
>> Saludos,
>>
>> *Aland Laines Calonge*
>> Twitter: @lainessolutions
>> http://about.me/aland.laines
>>
>>
>>
>>
>> El 21 de noviembre de 2012 04:15, Rosa Atienza Ribés <
>> [email protected]> escribió:
>>
>>> Buenas a todos,
>>>
>>> Estoy empezando con Cake de hecho este va a ser mi primer proyecto en el
>>> que utilizo este framework y nada más empezar me he encontrado el primer
>>> problema.
>>>
>>> Queremos hacer 1 página inicial en el que en si estas logueado ponga
>>> bienvenido <nombre_usuario> y si no ponga el típico formulario para hacer
>>> login o un enlace para loguearse.
>>>
>>> Pues esto tan sencillo no consigo hacerlo, de ninguna manera, ya que si
>>> saco esta página inicial del "login" entonces es como si $_SESSION no se
>>> cargara y es un array vacío aunque el usuario se haya logueado de forma
>>> correcta.
>>>
>>>
>>> No se si me estoy explicando bien, cualquier cosa me comentais.
>>>
>>> ¿Hay forma de solucionarlo? ¿o es que deben ser páginas independientes?
>>>
>>>
>>> Muchísimas gracias.
>>>
>>> Saludos
>>>
>>> --
>>> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de
>>> Grupos de Google.
>>> Para publicar una entrada en este grupo, envía un correo electrónico a
>>> [email protected].
>>> Para anular tu suscripción a este grupo, envía un correo electrónico a
>>> [email protected]
>>> Para tener acceso a más opciones, visita el grupo en
>>> http://groups.google.com/group/cakephp-es?hl=es.
>>>
>>
>> --
>> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de
>> Grupos de Google.
>> Para publicar una entrada en este grupo, envía un correo electrónico a
>> [email protected].
>> Para anular tu suscripción a este grupo, envía un correo electrónico a
>> [email protected]
>> Para tener acceso a más opciones, visita el grupo en
>> http://groups.google.com/group/cakephp-es?hl=es.
>>
>
> --
> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de
> Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a
> [email protected].
> Para anular tu suscripción a este grupo, envía un correo electrónico a
> [email protected]
> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/cakephp-es?hl=es.
>
--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos
de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a
[email protected].
Para anular tu suscripción a este grupo, envía un correo electrónico a
[email protected]
Para tener acceso a más opciones, visita el grupo en
http://groups.google.com/group/cakephp-es?hl=es.