Layout distinto para seccion login.

Buenas tardes. Con mucho esfuerzo logre hacer un sistema de login basado en roles, después me di cuenta de que ya habia una extensión :P

Bueno al margen de haber reinventado esto. Me surge otro problema. Que la idea es simple pero no se por donde mirar.

Tengo mi modulo user(login, reset password, etc) y mi modulo admin(para el superadministrador).

Luego en la raiz de la app, la pagina en si.

Ya consegui tener un layout distinto para el modulo admin(superadministrador). Pero lo que no se ni como empezar a buscar es la manera de que el usuario logueado solo vea el layout de la pagina general, no el layout admin.

La idea general para que me entiendan mejor seria en pseudocodigo:

  1. Si alguien quiere loguearse o registrarse muestra el layout "estandar"

  2. Si es usuario registrado sigue mostrando el layout "estandar"

  3. Si es superadministrador muestra el layout admin.

Si alguien me dijera al menos donde buscar info.

Segun estuve leyendo lo tendria que hacer en el supercontroller del modulo user:




<?php

/**

 * Controller is the customized base controller class.

 * All controller classes for this application should extend from this base class.

 */

class Controller extends CController

{

	/**

	 * @var string the default layout for the controller view. Defaults to '//layouts/column1',

	 * meaning using a single column layout. See 'protected/views/layouts/column1.php'.

	 */


	/**

	 * @var array context menu items. This property will be assigned to {@link CMenu::items}.

	 */

	public $menu=array();

	/**

	 * @var array the breadcrumbs of the current page. The value of this property will

	 * be assigned to {@link CBreadcrumbs::links}. Please refer to {@link CBreadcrumbs::links}

	 * for more details on how to specify this property.

	 */

	public $breadcrumbs=array();

	  

   function init(){

   

  $this->layout= '//layouts/admin';

  $this->layout= '//layouts/admin_column1';

       

   }



Hasta ahora como ven tengo eso, necesitaria cambiar de layout a LoginController en caso de que nadie este logueado mostrar un layout, en caso de que sea un usuario estandar seguir con ese layout, y si es admin al loguearse mostrar el layout admin(tal como esta ahora)

Espero me haya explicado bien.

Saudos. ;)

Editado:

al final estoy usando esta extensión http://www.yiiframework.com/extension/yii-user/ obviamente mucho mas completa. Pero me surge la misma duda.

XD bueno pues ya lo solucione :D en mi supercontroller agrego


   function init(){

if(Yii::app()->getModule('user')->isAdmin()){

  $this->layout= '//layouts/admin';

  $this->layout= '//layouts/admin_column1';

  }

       

   }

http://code.google.com/p/yii-user/wiki/API

Saludos.