CrugeModule.php 7.23 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
<?php
/**
 * CrugeModule 
 * 
 * @uses CWebModule
 * @author Christian Salazar H. <christiansalazarh@gmail.com> 
 * @license /protected/modules/cruge/LICENSE
 */
class CrugeModule extends CWebModule
{
	public $debug = false;					// poner a true para ayudar en la instalacion
	public $tableprefix = 'cruge_';			// agrega un prefijo para buscar las tablas en db
	public $maptables = array();			// permite cambiar los nombres de las tablas

	public $baseUrl = "";					// usada para enviar los links de activacion de la cuenta de usuario
											// se usa mediante CrugeUtil::config()->baseUrl
											// para principalmente en CrugeUserManagement::getActivationUrl()

	public $superuserName = 'admin';		// username del super usuario. cualquier llamada
											// a Yii::app()->user->checkAccess retornara true
											// si el superuserName coincide con este valor

	// permite que se puedan configurar los campos (incluso personalizados)
	//	a la hora de consultar a:  $usuario->getUserDescription()  (CrugeStoredUser)
	//
	//	se debe retornar un array con "username" o "email" o cualquier nombre de campo personalizado
	//  ejemplos: array("firstname","lastname","chipnumber","address")
	//	lo cual concatenara una lista separada por comas con los valores de estos
	//	campos.
	//
	public $userDescriptionFieldsArray = array("email" /*, firstname, lastname */);


	public $afterLoginUrl;				// por defecto son usadas por el filtro de sesion: DefaultSessionFilter
	public $afterLogoutUrl;				//	tras el evento onLogin y onLogout
	public $afterSessionExpiredUrl;		//

	// la clase a usar para los CGridView, debido a que BootStrap ofrece clases con distinto estilo
	// modificando este valor se causa que los CGridView se renderizen usando la clase indicada
	//
	// por defecto poner: zii.widgets.grid.CGridView
	public $useCGridViewClass = 'zii.widgets.grid.CGridView';

	// el estilo del boton que la UI usara:
	//	normal, jui, bootstrap
	//  por defecto: normal
	public $buttonStyle = 'normal';
	public $buttonConf = 'small';// large, small o mini

	// ponerla a true para que se creen de forma automatica las operaciones en el sistema de Rbac
	// cuando se haga una llamada a Yii::app()->user->checkAccess() y esta retorne false.
	//
	// public function actionCreatePost(){
	//    if(Yii::app()->user->checkAccess('createpost_get')==false)
	//    		throw new CrugeException('acceso denegado');
	// }
	//
	// en este action de ejemplo (arriba), se solicita una operacion llamada: 'createpost_get'
	// que quiza no haya sido insertada en la lista de operaciones del sistema de rbac. entonces,
	// cuando rbacSetupEnabled es true esta operacion sera insertada para que podamos usarla
	// para ser asignada a los diferentes roles o tareas.
	//
	public $rbacSetupEnabled=false;
	// cuando esta en true y el modo de setup de rbac tambien lo esta (rbacSetupEnabled=true)
	// entonces permitira al usuario acecder a la funcion denegada aunque no tenga el permiso
	//
	public $allowUserAlways=false;


	// el iduser del usuario invitado. por defecto es 2. (admin es 1)
	//
	public $guestUserId=2;

	// los nombres de los modulos de autenticacion habilitados para reconocer usuarios:
	// cada nombre debe coincidir con el valor devuelto por ICrugeAuth::authName()
	//
	// en UiController::actionLogin se lee esta variable para saber con que filtro de autenticacion se procesara
	// el request de login del usuario, por defecto 'default' el cual usa a models.auth.CrugeAuthDefault
	//
	// para leer este valor usar:
	//	$valor = CrugeFactory::get()->getConfiguredAuthMethodName();
	//
	public $availableAuthMethods = array('default');

	// los campos por los cuales se puede buscar a un usuario cuando hace login
	public $availableAuthModes	 = array('email','username');

	// ruta de la clase que implementa a ICrugeSessionFilter.
	// si es null se usa a defaultSessionFilter
	// son usados en: CrugeFactory::getICrugeSessionFilter para determinar con que conceder la sesion
	public $sessionfilter=null;
	public $defaultSessionFilter = 'cruge.models.filters.DefaultSessionFilter';

	// este filtro permite o niega la creacion o actualizacion de un usuario.
	//
	// aqui se espera una clase que implemente a: ICrugeUserFilter
	//
	public $userFilter='cruge.models.filters.DefaultUserFilter';

	// indica si una clave es almacenada con hash o no.
	//
	public $useEncryptedPassword = false;

    // Indica el algoritmo de hash a usarse

    public $hash = 'md5';

	// estos atributos llamados xxxLayout, son para indicar que layout usar
	// para los actions:
	//
	// generalUserManagementLayout: todos los actions de usermanagament (admin,create,update..)
	// activateAccountLayout:  el action que presenta la pagina de activar cuenta
	// registrationLayout: el action para registrar usuarios
	//
	// por defecto usar valor: "ui".  eso hara que lea el archivo llamado "ui" ubicado en
	// 		/protected/modules/cruge/views/layouts/ui.php
	// si se quisiera usar un layout de la aplicacion en vez del modulo:
	//		/protected/views/layouts/otrolayout.php
	// entonces configurar asi:
	//		"//layouts/otrolayout"
	public $generalUserManagementLayout = 'ui';
	public $editProfileLayout = 'ui';
	public $activateAccountLayout = '//layouts/column1';
	public $registrationLayout = '//layouts/column1';
	public $loginLayout = '//layouts/column1';

	// sirve para que la controladora UiController pueda que nombre pasar a $_POST['??']
	// para actualizar los atributos de una clase.  Si se llegase a cambiar una clase
	// por otra entonces con solo cambiar aqui el nombre el formulario podr� trabajar de nuevo
	//
	// Es utilizada en cada referencia a $_POST o $_GET en la controladora de UiController
	//
	// ejemplo: Ma�ana no nos gusta CrugeField y cambiamos la clase por CrugeMyOwnField
	// entonces en este array se mapearia asi:  'CrugeField'=>'CrugeMyOwnField'
	//
	public $postNameMappings = array(
		'CrugeLogon'=>'CrugeLogon',
		'CrugeStoredUser'=>'CrugeStoredUser',
		'CrugeField'=>'CrugeField',
		'CrugeSystem'=>'CrugeSystem',
		'CrugeSession'=>'CrugeSession',
	);

	// estos parametros no deben manipularse
	public $defaultController = 'ui';
	public $uicontroller='ui';
	public $_lazyAuthModes = null;
	private $_factory;

	// este array es usado por CrugeUi para almacenar errors que han sido reportados
	// por CrugeUi::addError() , luego, para desplegar los errores observados
	// puede usarse al pie de la pagina web la siguiente linea:
	//
	//	echo Yii::app()->user->ui->displayErrorConsole();
	//
	public $globalErrors = array();



	public function init()
	{
		$this->setImport(array(
			'cruge.models.*',
			'cruge.models.data.*',	// clases del modelo de datos
			'cruge.models.auth.*',	// clases de autenticacion
			'cruge.models.filters.*',// clases de filtros de sesion
			'cruge.models.ui.*',// clases de interfaz de usuario
			'cruge.components.*',	// clases del modelo
			'cruge.interfaces.*',	// interfaces
			'cruge.extensions.crugemailer.*',	// extensiones consumidas por el modulo

		));

	}

	public function getUiControllerName(){
		return $this->uicontroller;
	}

	public function getFactory(){
		if($this->_factory == null)
			$this->_factory = new CrugeFactory();
		return $this->_factory;
	}



	public function beforeControllerAction($controller, $action)
	{
		if(parent::beforeControllerAction($controller, $action))
		{
			return true;
		}
		else
			return false;
	}



}