Commits

christiansalazar committed c0f0455

notas acerca de como redirigir a una vista tras login exitoso

Comments (0)

Files changed (1)

 		),
 	)); ?>
 	
+	
+##Tras iniciar sesion quiero ir a una pantalla especifica. Como hacerlo ?
+
+Supongamos que quieres que tras iniciar sesion exitosamente con Cruge el usuario sea
+redirigido al actionBienvenido de siteController (index.php?r=site/bienvenido).  
+
+Pues bien el metodo que aqui describo es algo estandar para Cruge o para Yii en general, no es nada nuevo.
+
+1. en siteController (en el controller de tu gusto) creas un action el cual desplegara la pagina 
+que solo vera aquel usuario que haya iniciado sesion exitosamente.
+	<?php 
+		public function actionBienvenido(){
+			$this->render('bienvenido');
+		}
+	?>
+
+2. en siteController usas el filtro accessControl y los rules (que vienen de caja en Yii), asi:
+	<?php
+	public function filters()
+	{
+		return array(	
+			'accessControl', 					
+		);
+	}
+	public function accessRules()
+	{
+		return array(
+			array('allow',
+				'actions'=>array('index','contact','captcha'),
+				'users'=>array('*'),
+			),
+			array('allow',
+				'actions'=>array('bienvenido'),
+				'users'=>array('@'),
+			),
+			array('deny',  // deny all users
+				'users'=>array('*'),
+			),
+		);
+	}
+	?>
+	
+	con esto le estas diciendo a tu aplicacion que para el action "site/bienvenido" se requiere
+	que el usuario deba haber iniciado sesion exitosamente ( con cruge o con yii tradicional, 
+	ambos funcionan por la misma via de autenticacion, por eso y mas Cruge es una extension real y 
+	no solo un monton de codigo raro ).
+	
+	de este modo, si un usuario invitado presiona el enlace "login" entonces tu lo envias
+	a site/bienvenido, si no ha iniciado sesion se le pediran credenciales y luego se le enviara
+	a la vista site/bienvenido. por tanto el paso 3 es requerido, a continuacion:
+	
+3. finalmente sustituye tu enlace a login por un enlace a site/bienvenido. 
+
+
+Que sucedera ?
+(podriamos dibujar esto como un diagrama de secuencia en UML)
+
+a) Tu invitado visita tu website (no ha iniciado sesion aun por eso es un invitado) y 
+sigue el enlace 'login' o 'iniciar sesion' que tu has provisto (y que apunta a site/bienvenido como
+dice el paso 3).
+
+b) Tu invitado sera redirigido automaticamente a "index.php?r=cruge/ui/login" (o a la url de login del
+sistema que este registrado para autenticar, en este caso Cruge), esto debido al "accessControl"
+que implementaste en el paso 2.
+
+c) Luego tras iniciar sesion exitosamente sera redirigido automaticamente a "index.php?r=site/bienvenido",
+(funciona asi debido a que en el paso 2 al detectarse que no se ha iniciado sesion entonces se establecio el valor de returnUrl a "site/bienvenido", por tanto cuando Cruge o Yii estandar hacen un login correcto redirigen a tu usuario a la direccion que tenga almacenada en returnUrl, en este caso site/bienvenido)
+
+Como has visto Cruge es un sistema orquestado para trabajar en conjunto con el actual sistema
+estandar de autenticacion de Yii, por eso como dije antes es una extension: porque extiende la funcionalidad
+basica de Yii a un nivel mas alto.
+	
 ##Usando RBAC
 
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.