resetart_pass.py
3.61 KB
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
# -*- coding: utf-8 -*-
from odoo import http
import werkzeug
import random, os, json
import base64, string, random
TextoAlta = """Se a pedido resetear la contraseña de tu usuario {} de LAIKA, si no fuiste vos no hagas nada. Si quieres hacerlo sigue el siguiente enlase {}/usuarios/resetearconntrasenaetp2?vewrftbv={}&vfds={}&wdcwexas=dwdwqcaA"""
TextoRecuperacion = """Se a pedido resetear la contraseña de tu usuario {} de LAIKA, si no fuiste vos innforma al administrador. CODIGO: {}"""
class restablecedor(http.Controller):
"""Controlador de acceso a firmas"""
@http.route('/lappa/resetearconntrasena', auth='public', type='json' , website=True ,csrf=False, methods = ['POST','GET'])
def index(self, **kw):
try:
token = self.ResetUsuario(kw["celular"])
mensaje = "Se envio el codigo por ws"
except:
mensaje = "Fallo el envio, intente nuevamente en unos minutos o contacte soporte por mail en soporte@hgtsa.com.ar"
#print(token)
usuario = token["usuario"]
usuario.lappa_token_pass = token["token"][1]
usuario.lappa_token_ws = token["token"][0]
return({"token":token["token"][1],"mensaje":mensaje,"celular":usuario.CelularRecuperacion})
@http.route('/lappa/reset_segunda_etapa', auth='public', type='json' , website=True ,csrf=False, methods = ['GET','POST'])
def index3(self, **kw):
#print(kw)
try:
celular = kw["celular"]
token = kw["token"]
passw = kw["password"]
codigo = kw["codigo"]
except:
return({"mensaje":"Falta de datos para procegir"})
dominio = [
["CelularRecuperacion","=",celular],
["lappa_token_pass","=",token],
["lappa_token_ws","=",codigo]
]
#print(dominio)
user = http.request.env['res.users'].sudo().search(dominio)
if len(user) != 1:
return({"mensaje":"No se validaron los datos recividos"})
else:
self.cambiar_pass(user.id, passw)
return({"mensaje":"Se cambio la contraseña"})
def ResetUsuario(self,celular):
rto = False
user = http.request.env['res.users'].sudo().search([["CelularRecuperacion","=",celular]])
if len(user) == 1:
clave = self.GeneradorClave(6)#Cantidad de caracteres en la clabe
text = TextoRecuperacion.format(user.display_name, clave[0])#lo que se envia por mensaje
self.enviar_mensaje(mensaje=text,telefono=celular,titulo="Administracion LAIKA")
rto = {"token": clave, "usuario":user,}
return(rto)
def enviar_mensaje(self, tipo='Whatsapp', mensaje="mensaje", titulo="Titulo",email="",telefono=""):#Crea mensaje y lo envia
#Hay que agregar al modelo la relacion con los mensajes para tener trazavilidad
vals = {"mensaje_nombre":titulo,
"mensaje_descripcion":mensaje,
"mensaje_numero_whatsapp":telefono,
"mensaje_direccion_mail":email,
"identidad":1}
mensaje = http.request.env['asw.mensaje'].sudo().create(vals)
mensaje.tipo = tipo
mensaje.enviar()
def cambiar_pass(self,UID, passw):
user = http.request.env['res.users'].sudo().search([["id","=",UID]])
#user.password = passw#Descomentar en productivo
def GeneradorClave(self,largo=6):
codigo = self.cualquiera(largo)
token = self.cualquiera(32)
return(codigo,token)
def cualquiera(self,largo=6):
return(''.join(random.choice(string.digits + string.ascii_letters) for _ in range(largo)))