コード例 #1
0
 protected function evt__pre_update($id)
 {
     //Se trata de verificar que si la clave actual es una nueva o es similar a la anterior
     //Para encriptarla
     if ($this->datos[$id]['autentificacion'] != 'plano') {
         $usuario = quote($this->datos[$id]['usuario']);
         $sql = "SELECT clave, autentificacion FROM apex_usuario WHERE usuario = {$usuario}";
         $rs = toba::db($this->_fuente)->consultar($sql);
         $cambio_clave = $rs[0]['clave'] != $this->datos[$id]['clave'];
         $cambio_metodo = $rs[0]['autentificacion'] != $this->datos[$id]['autentificacion'];
         if ($cambio_clave || $cambio_metodo) {
             //Antes de encriptar la clave verifico que no se esta usando una clave anterior
             toba_usuario::verificar_clave_no_utilizada($this->datos[$id]['clave'], $this->datos[$id]['usuario']);
             $this->datos[$id]['autentificacion'] = apex_pa_algoritmo_hash;
             //Fijo el algoritmo por defecto, de manera que se vayan migrando las claves
             $this->encriptar_clave($id, $this->datos[$id]['autentificacion']);
         }
     }
 }
コード例 #2
0
ファイル: ci_editor.php プロジェクト: emma5021/toba
 function conf__basica($form)
 {
     $datos = $this->datos('basica')->get();
     if (isset($datos)) {
         $datos['clave'] = self::clave_falsa;
     }
     $largo_clave = toba_parametros::get_largo_pwd(null);
     //Como aun no se sobre que proyecto trabajo.. el largo es el por defecto, osea 8.
     $form->ef('clave')->set_expreg(toba_usuario::get_exp_reg_pwd($largo_clave));
     $form->ef('clave')->set_descripcion("La clave debe tener al menos {$largo_clave} caracteres, entre letras mayúsculas, minúsculas, números y símbolos, no pudiendo repetir caracteres adyacentes");
     // obtengo los datos de arai-usuarios
     $datos = gestion_arai_usuarios::get_datos($datos);
     // quito los campos que no se utilizan cuando esta vinculado con arai-usuarios
     if (toba::instalacion()->vincula_arai_usuarios()) {
         $form->desactivar_efs(array('usuario', 'nombre', 'email', 'clave', 'forzar_cambio_pwd', 'vencimiento'));
     } else {
         $form->desactivar_efs(array('usuario_arai', 'cuenta'));
     }
     return $datos;
 }
コード例 #3
0
ファイル: comando_instalacion.php プロジェクト: emma5021/toba
 protected function definir_clave_usuario_admin()
 {
     do {
         $es_invalido = false;
         $pwd = $this->consola->dialogo_ingresar_texto('Toba - Clave (usuario "toba")', true);
         //Verifico que la clave cumpla ciertos requisitos basicos
         if ($this->get_instalacion()->es_produccion()) {
             try {
                 toba_usuario::verificar_composicion_clave($pwd, apex_pa_pwd_largo_minimo);
             } catch (toba_error_pwd_conformacion_invalida $e) {
                 $es_invalido = true;
                 $this->consola->mensaje($e->getMessage(), true);
             }
         }
     } while ($es_invalido);
     if (strtoupper($pwd) == 'TOBA') {
         $this->consola->mensaje('Este password puede crear un OJO de seguridad, por favor cambialo lo antes posible', true);
     }
     return $pwd;
 }
コード例 #4
0
 protected function definir_clave_usuario_admin($param)
 {
     $nombre_parametro = array('-k', '--archivo-clave-admin', 'toba-archivo-clave-admin');
     $esto_es_produccion = $this->get_instalacion()->es_produccion();
     do {
         $ind = current($nombre_parametro);
         $es_invalido = !isset($param[$ind]);
         if (!$es_invalido) {
             $pwd = $this->recuperar_contenido_archivo($param[$ind]);
             if ($esto_es_produccion) {
                 //Verifico que la clave recuperada posea ciertos requisitos.
                 try {
                     toba_usuario::verificar_composicion_clave($pwd, apex_pa_pwd_largo_minimo);
                 } catch (toba_error_pwd_conformacion_invalida $e) {
                     $es_invalido = true;
                 }
             }
         }
     } while ($es_invalido && next($nombre_parametro) !== false);
     if ($es_invalido) {
         $randompass = toba_usuario::generar_clave_aleatoria(apex_pa_pwd_largo_minimo);
         toba::logger()->error("Se selecciono una clave aleatoria, ya que una válida no fue provista");
         return $randompass;
     }
     return $pwd;
 }
コード例 #5
0
ファイル: ci_recordatorio_pwd.php プロジェクト: emma5021/toba
 function disparar_confirmacion_cambio()
 {
     //Recupero mail del usuario junto con el hash de confirmacion
     $datos_rs = $this->recuperar_datos_solicitud_cambio($this->s__usuario, $this->randr);
     if (empty($datos_rs)) {
         toba::logger()->debug('Proceso de cambio de contraseña en base: El usuario o el random no coinciden');
         toba::logger()->var_dump(array('rnd' => $this->randr));
         throw new toba_error('Se produjo un error en el proceso de cambio, contactese con un administrador del sistema.');
     } else {
         $datos_orig = current($datos_rs);
     }
     //Aca tengo que generar una clave temporal y enviarsela para que confirme el cambio e ingrese con ella.
     do {
         try {
             $claveok = true;
             $clave_tmp = toba_usuario::generar_clave_aleatoria('10');
             toba_usuario::verificar_composicion_clave($clave_tmp, 10);
             toba_usuario::verificar_clave_no_utilizada($clave_tmp, $datos_orig['id_usuario']);
         } catch (toba_error_pwd_conformacion_invalida $e) {
             $claveok = false;
         } catch (toba_error_usuario $e) {
             toba::logger()->error('Se estan generando claves aleatorias repetidas!! ' . $clave_tmp);
             //Debe aparecer en el log para revisar la generacion de la clave aleatoria
             $claveok = false;
         }
     } while (!$claveok);
     //Armo el mail nuevo
     $asunto = 'Nueva contraseña';
     $cuerpo_mail = '<p>Se ha recibido su confirmación exitosamente, su contraseña fue cambiada a: </br>' . $clave_tmp . '</br> Por favor en cuanto pueda cambiela a una contraseña más segura. </br> Gracias. </p> ';
     //Cambio la clave del flaco, envio el nuevo mail y bloqueo el random
     toba::instancia()->get_db()->abrir_transaccion();
     try {
         //Recupero los dias de validez de la clave, si existe
         $dias = toba_parametros::get_clave_validez_maxima(toba::proyecto()->get_id());
         //Seteo la clave para el usuario
         toba_usuario::reemplazar_clave_vencida($clave_tmp, $datos_orig['id_usuario'], $dias);
         toba_usuario::forzar_cambio_clave($datos_orig['id_usuario']);
         //Enviar nuevo mail con la clave temporaria
         $mail = new toba_mail($datos_orig['email'], $asunto, $cuerpo_mail);
         $mail->set_html(true);
         $mail->enviar();
         //Bloqueo el pedido para que no pueda ser reutilizado
         $this->bloquear_random_utilizado($this->s__usuario, $this->randr);
         toba::instancia()->get_db()->cerrar_transaccion();
     } catch (toba_error $e) {
         toba::instancia()->get_db()->abortar_transaccion();
         toba::logger()->debug('Proceso de cambio de contraseña en base: ' . $e->getMessage());
         throw new toba_error('Se produjo un error en el proceso de cambio, contactese con un administrador del sistema.');
     }
 }
コード例 #6
0
ファイル: ci_login.php プロジェクト: emma5021/toba
 function evt__form_passwd_vencido__modificacion($datos)
 {
     $usuario = $this->s__datos['usuario'];
     if (toba::manejador_sesiones()->invocar_autenticar($usuario, $datos['clave_anterior'], null)) {
         //Si la clave anterior coincide
         $proyecto = toba::proyecto()->get_id();
         //Verifico que no intenta volver a cambiarla antes del periodo permitido
         $dias_minimos = toba_parametros::get_clave_validez_minima($proyecto);
         if (!is_null($dias_minimos)) {
             if (!toba_usuario::verificar_periodo_minimo_cambio($usuario, $dias_minimos)) {
                 toba::notificacion()->agregar('No transcurrio el período minimo para poder volver a cambiar su contraseña. Intentelo en otra ocasión');
                 return;
             }
         }
         //Obtengo el largo minimo de la clave
         $largo_clave = toba_parametros::get_largo_pwd($proyecto);
         try {
             toba_usuario::verificar_composicion_clave($datos['clave_nueva'], $largo_clave);
             //Obtengo los dias de validez de la nueva clave
             $dias = toba_parametros::get_clave_validez_maxima($proyecto);
             $ultimas_claves = toba_parametros::get_nro_claves_no_repetidas($proyecto);
             toba_usuario::verificar_clave_no_utilizada($datos['clave_nueva'], $usuario, $ultimas_claves);
             toba_usuario::reemplazar_clave_vencida($datos['clave_nueva'], $usuario, $dias);
             $this->es_cambio_contrasenia = true;
             //Bandera para el post_eventos
         } catch (toba_error_pwd_conformacion_invalida $e) {
             toba::logger()->info($e->getMessage());
             toba::notificacion()->agregar($e->getMessage(), 'error');
             return;
         }
     } else {
         throw new toba_error_usuario('La clave ingresada no es correcta');
     }
     $this->set_pantalla('login');
 }
コード例 #7
0
 function __construct()
 {
     parent::__construct('no_autentificado');
 }
コード例 #8
0
 private static function get_clave_aleatoria($largo_clave)
 {
     do {
         try {
             $claveok = true;
             $clave_tmp = toba_usuario::generar_clave_aleatoria($largo_clave);
             toba_usuario::verificar_composicion_clave($clave_tmp, $largo_clave);
         } catch (toba_error_pwd_conformacion_invalida $e) {
             $claveok = false;
         } catch (toba_error_usuario $e) {
             $claveok = false;
         }
     } while (!$claveok);
     return $clave_tmp;
 }
コード例 #9
0
ファイル: comando_instancia.php プロジェクト: emma5021/toba
 function get_datos_usuario()
 {
     //Verifico que la clave cumpla ciertos requisitos basicos
     do {
         $hubo_error = false;
         if (!isset($datos)) {
             $datos = $this->definir_usuario("Crear USUARIO");
         }
         if ($this->get_instalacion()->es_produccion()) {
             try {
                 toba_usuario::verificar_composicion_clave($datos['clave'], apex_pa_pwd_largo_minimo);
                 //Hay que brindar la posibilidad de marcar produccion antes
             } catch (toba_error_pwd_conformacion_invalida $e) {
                 $this->consola->mensaje($e->getMessage(), true);
                 $hubo_error = true;
                 unset($datos);
             }
         }
     } while ($hubo_error);
     return $datos;
 }