resetart_pass.py 3.61 KB
# -*- 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)))