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.

Responder a