1: <?php
2: class Login
3: {
4: public $libs;
5: function __construct($libs=null)
6: {
7: if(!($libs instanceof Incluir)){
8: require_once('../../app/src/core/incluir.php');
9: $nivel_dir = 2;
10: $this->libs = new Incluir($nivel_dir);
11: }else{
12: $this->libs = $libs;
13: }
14: $this->bd = $this->libs->incluir('db');
15: }
16:
17: 18: 19: 20: 21: 22:
23: public function log_in($username, $password)
24: {
25: $this->libs->incluir_clase('app/src/model/User.class.php');
26: $user = new User($this->libs);
27: $salt_result = $user->abrir_usuario(array('username'=>$username), 'salt');
28:
29: $password = $this->desencriptar($password).$salt_result['salt'];
30: $password = hash('sha256', $password);
31:
32: $usuario = $user->abrir_usuario(array('username'=>$username, 'password' => $password), 'user._id');
33: if(!empty($usuario)){
34: return array('valid'=>true, 'id_user'=>$usuario['_id']);
35: }
36: else{
37: return array('valid'=>false);
38: }
39: }
40:
41: 42: 43: 44:
45: public function crear_sesion($id_user)
46: {
47: $this->libs->incluir_clase('app/src/model/User.class.php');
48: $user = new User($this->libs);
49: $campos = 'user._id, usr_persona._id as id_per, username, nombre, apellido';
50: $usuario = $user->abrir_usuario(array('user._id'=>$id_user), $campos);
51: if(!empty($usuario)){
52: $this->libs->incluir_clase('includes/auth/Sesion.class.php');
53: $sesion = Sesion::getInstance($usuario['_id']);
54: $sesion->set("username",$usuario['username']);
55: $sesion->set("nombre",$usuario['nombre']);
56: $sesion->set("apellido",$usuario['apellido']);
57: $sesion->set("mail",$usuario['mail']);
58: $sesion->set("id_user",$usuario['_id']);
59: $sesion->set("id_per",$usuario['id_per']);
60: $sesion->set("arr_permiso",$sesion->mostrar_permisos());
61: }
62: }
63:
64: 65: 66: 67: 68:
69: public function crear_string_recovery($mail)
70: {
71: $this->libs->incluir_clase('app/src/model/User.class.php');
72: $user = new User($this->libs);
73: $datos_user = $user->abrir_usuario(array('mail'=>$mail), 'username, salt');
74: if(!empty($datos_user) && $datos_user!==false){
75: $llave = $datos_user['username'].'~'.date('m');
76: $pass_oculto = $this->esconder_string($llave);
77:
78: return $datos_user['salt'].'__'.$pass_oculto;
79: }
80: else{
81: return false;
82: }
83: }
84:
85: 86: 87: 88: 89: 90:
91: public function validar_string_recovery($cadena)
92: {
93: $this->libs->incluir_clase('app/src/model/User.class.php');
94: $user = new User($this->libs);
95:
96: $partes = explode('__', $cadena);
97: $llave = Login::desencriptar($partes[1]);
98: $usuario = explode('~', $llave);
99:
100: $datos_user = $user->abrir_usuario(array('salt'=>$partes[0], 'username'=>$usuario[0]), 'username');
101: if(!empty($datos_user) && $datos_user!==false){
102: return array('valid'=>true, 'username'=>$usuario[0]);
103: }
104: else{
105: return false;
106: }
107: }
108:
109: 110: 111: 112: 113:
114: public static function desencriptar($decrypt_string='')
115: {
116: $resultado = '';
117: $arr_convert = explode("-", $decrypt_string);
118: foreach ($arr_convert as $caracter) {
119: if(!empty($caracter)){
120: $key = explode(".", $caracter);
121: $resultado .= chr((int)($key[0]) / ((int)($key[1]) + 1));
122: }
123: }
124: return $resultado;
125: }
126:
127: 128: 129: 130: 131:
132: public static function encriptar($llave='', $random=true)
133: {
134: $salt = bin2hex(mcrypt_create_iv(32, MCRYPT_RAND));
135: $real_salt = ($random==true ? $llave.$salt : $llave);
136: $stored_salt = hash('sha256', $real_salt);
137:
138: return array(
139: 'key'=>($random==true ? $salt : $llave),
140: 'string' => $stored_salt
141: );
142: }
143:
144: public static function esconder_string ($string) {
145: $resultado = '';
146: for ($i=0; $i < strlen($string); $i++) {
147: $llave = rand(1, 50) + 1;
148: $numero = ord(substr($string, $i)) * $llave;
149: $resultado .= '-'.$numero.'.'.($llave-1);
150: }
151: return $resultado;
152: }
153:
154:
155: }
156: ?>