Commit 5bc5a47a by Juan

Nuevo endpoint de cambio de contraseña

1 parent d79d25be
...@@ -4,3 +4,4 @@ from . import controllers ...@@ -4,3 +4,4 @@ from . import controllers
from . import altausuario from . import altausuario
from . import check from . import check
from . import recursos from . import recursos
from . import resetart_pass
\ No newline at end of file \ No newline at end of file
# -*- 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)))
...@@ -6,6 +6,9 @@ class res_users(models.Model): ...@@ -6,6 +6,9 @@ class res_users(models.Model):
_inherit = 'res.users' _inherit = 'res.users'
_order = 'id desc' _order = 'id desc'
lappa_token_pass = fields.Char(string='Token de confirmacion')
lappa_token_ws = fields.Char(string='Token de confirmacion 2')
def CambiarContrasenia(self,val): def CambiarContrasenia(self,val):
print(self.id, self.env.user.id) print(self.id, self.env.user.id)
#Validar pass minimo #Validar pass minimo
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!