IESA
Programa de Feedback Gerencial y Liderazgo
 Todo Estructuras de Datos Archivos Funciones Variables
Seguridad.class.php
Ir a la documentación de este archivo.
00001 <?php
00002 
00003 class Seguridad{
00004 
00005         private $session_user;
00006 
00027         public function Autenticar( $usuario, $clave ){
00028 
00029                 if( session_id(  ) == '' ) session_start(  );
00030 
00031                 $Usuario = new Usuario(  );
00032                 $existe = $Usuario->getUsuarioPorCredenciales( $usuario, $clave );
00033                 if( !$existe ){
00034                         $Usuario = new Participante(  );
00035                         $existe = $Usuario->getParticipantePorCredenciales( $usuario, $clave );
00036                         if( !$existe ){
00037                                 $Usuario = new Profesor(  );
00038                                 $existe = $Usuario->getProfesorPorCredenciales( $usuario, $clave );
00039                                 if( !$existe ){
00040                                         $Usuario = new Evaluador(  );
00041                                         $existe = $Usuario->getEvaluadorPorCredenciales( $usuario, $clave );
00042                                 }
00043                         }
00044                 }
00045 
00046                 if( $existe && $Usuario->getStatus(  ) == 1 ){
00047                         $_SESSION['timeout'] = time(  ) + Config::get( 'security/session_timeout' );
00048                         $_SESSION['session_user_unique_id'] = $Usuario->getId(  );
00049                         $_SESSION['session_user_type'] = $Usuario->getTipoDeCuenta(  );
00050                         return true;
00051                 }
00052 
00053                 return false;
00054 
00055         }
00056 
00070         public function ValidaSession(  ){
00071                 if(session_id()=='')
00072                         session_start();
00073 
00074                 if( !isset( $_SESSION['session_user_unique_id'] ) || ( isset( $_SESSION['timeout'] ) && $_SESSION['timeout'] < time(  ) ) ){
00075                         return false;
00076                 }else{
00077                         $_SESSION['timeout'] = time(  ) + Config::get( 'security/session_timeout' );
00078                         return true;
00079                 }
00080         }
00081 
00088         public function CerrarSession(  ){
00089 
00090                 if(session_id()=="")
00091                         session_start();
00092 
00093                 if( sizeof($_SESSION)!=0 ){
00094                         $_SESSION=array();
00095                         session_destroy();
00096                 }
00097                 header( 'Location: /' );
00098                 exit(  );
00099         }
00100 
00117         public function RestablecerClave( $correo, $captcha ){
00118 
00119                 $Status = '';
00120 
00121                 if( session_id(  ) == '' ) @session_start(  );
00122 
00123                 if( $_SESSION['captcha'] == $captcha ){
00124 
00125                         $Usuario = new Participante(  );
00126 
00127                         if( !$Usuario->getParticipantePorCorreoElectronico( $correo ) ){
00128                                 unset( $Usuario );
00129                                 $Usuario = new Usuario(  );
00130                                 if( !$Usuario->getUsuarioPorCorreoElectronico( $correo ) ){
00131                                         unset( $Usuario );
00132                                         return 'EMAIL_NOT_FOUND';
00133                                 }
00134                         }
00135 
00136                         $nueva_clave = substr( md5( rand(0,999) ), 10, 8 );
00137                         $Usuario->cambiarClave( $nueva_clave );
00138 
00139                         $correo_cuerpo = file_get_contents( $_SERVER['DOCUMENT_ROOT'].'/plantillas/restablecer_clave.html' );
00140 
00141                         $variables = array( 
00142                                 '%PARTICIPANTE_CORREO%',
00143                                 '%PARTICIPANTE_CLAVE%', 
00144                                 '%PARTICIPANTE_NOMBRE%' 
00145                         );
00146                         $valores = array( 
00147                                 $Usuario->getCorreoElectronico(  ),
00148                                 $nueva_clave,
00149                                 $Usuario->getNombreCompleto(  )
00150                         );
00151 
00152                         $correo_cuerpo = str_replace( $variables, $valores,  $correo_cuerpo  );
00153 
00154                         $success = Utilitario::enviarCorreo( array( 
00155                                 'to' => $correo,
00156                                 'subject'=>'IESA Feedback Gerencial - Recuperación de cuenta',
00157                                 'body' => $correo_cuerpo,
00158                                 'format'=>'text/html'
00159                         ) );
00160 
00161                         if( $success === false )
00162                                 $Status = 'CONECCTION_ERROR';
00163                         else
00164                                 $Status = 'OK';
00165 
00166                 }else
00167                         $Status = 'BAD_CODE';
00168 
00169                 return $Status;
00170 
00171         }
00172 
00182         public function UsuarioActivo(  ){
00183 
00184                 if( session_id(  ) == '' )
00185                         session_start(  );
00186 
00187                 if( !isset( $_SESSION['session_user_unique_id'] ) )
00188                         return NULL;
00189 
00190                 if( is_null( $this->session_user ) ){
00191                         switch( $_SESSION['session_user_type'] ){
00192                                 case "U":
00193                                         $this->session_user = new Usuario( $_SESSION['session_user_unique_id'] ); break;
00194                                 case "P":
00195                                         $this->session_user = new Participante( $_SESSION['session_user_unique_id'] ); break;
00196                                 case "D":
00197                                         $this->session_user = new Profesor( $_SESSION['session_user_unique_id'] ); break;
00198                                 case "E":
00199                                         $this->session_user = new Evaluador( $_SESSION['session_user_unique_id'] ); break;
00200                         }
00201                 }
00202 
00203                 return $this->session_user;
00204 
00205         }
00206 
00207 }
00208 
00209 ?>