altausuario.py 7.03 KB
# -*- coding: utf-8 -*-
from odoo import http
import random, os, json
import werkzeug
import random, os, json
from . import rsp
import base64, string, random

TextoAlta = """Hemos resibido su pedido de alta en el sistema.
Pronto se comunicara con usted por este medio un representante de Lappa."""

TextoRecuperacion = """Se a pedido resetear la contraseña de tu usuario {} de LAIKA, si no fuiste vos innforma al administrador. CODIGO: {}"""
# Agregar mensaje de numero repetido

class dispositivos(http.Controller):
    """Controlador de acceso a firmas"""

    @http.route('/lappa/usuarios/registro', auth='public', type='json' , website=True ,csrf=False, methods = ['POST','GET','OPTIONS'])
    def index(self, **kw):
        #print(kw)
        #raw_body_data = self.http.request.httprequest.data()
        #print(raw_body_data)
        rto = {"error":False}
        try:
            empresa = kw["nombre"]
            #print(empresa)
            try:
                cuit = kw["cuit"]
            except:
                cuit = ""
            #print(cuit)
            celular = kw["celular"]
            #print(celular)
            try:
                id_localidad = kw["localidad"]
            except:
                id_localidad = ""
            #print(id_localidad)
            try:
                email = kw["email"]
            except:
                email = ""
            #Pagina Webw
            #Tipo de empresa
            #Tipo de Transporte
            #Elemento que no transporta
            #Logo
            
        except:
            return({"error":"Falta algun dato de los obligatorios empresa,cuit,celular,id_localidad"})
        self.AltaUsuario(empresa,cuit,celular,email,id_localidad,kw)
        return(rto)

    def AltaUsuario(self,empresa,cuit,celular,email,id_localidad,kw=None):
        #Hacer chequeo de duplicacion de numero
        http.request.env["lappa.solicitudes"].sudo().create(kw)
        self.enviar_mensaje(tipo="Mail",mensaje=TextoAlta,email=email,titulo="Bienvenido a Lappa")
        self.enviar_mensaje(mensaje=TextoAlta,telefono=celular,titulo="Bienvenido a Lappa")

    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
            #identidad = http.request.env["asw.token"].sudo().search([])[0]
            #identidad = self.http.env["asw.token"].sudo().search([])[0]
            vals = {"mensaje_nombre":titulo,
            "mensaje_descripcion":mensaje,
            "mensaje_numero_whatsapp":telefono,
            "mensaje_direccion_mail":email,
            "identidad":False}
            #print(vals)
            mensaje = http.request.env['asw.mensaje'].sudo().create(vals)
            mensaje.tipo = tipo
            mensaje.enviar() 

    @http.route('/lappa/blank', auth='public', type='http' , website=True ,csrf=False, methods = ['POST','GET','OPTIONS'])
    def index6(self, **kw):
        return("")


    #"""Controlador de acceso a firmas"""

    @http.route('/lappa/usuarios/resetearconntrasena', auth='public', type='http' , website=True ,csrf=False, methods = ['POST','GET'])
    def indexvcxx(self, **kw):
        #print(kw)
        try:
            tel = kw["celular"]
            info = self.ResetUsuario(tel)
            #print(info)
            url = '/lappa/usuarios/resetearconntrasenaetp3?cewc={}&edsac={}&decsdas={}'.format(info["token"],info["usuario"],self.cualquiera(7))
            rto = werkzeug.utils.redirect(url)
        except:
            rto = rsp.html
        #print(rto)
        return(rto)


    @http.route('/lappa/usuarios/resetearconntrasenaetp3', auth='public', type='http' , website=True ,csrf=False, methods = ['GET'])
    def indsdfsdex3(self, **kw):
        try:
            UID = kw["UID"]
            token = kw["token"]
            passw = kw['password']
            codigo = kw['codigo']
            if self.ChequearToken(codigo,token):
                self.cambiar_pass(UID,passw)
            return(werkzeug.utils.redirect('/'))
        except:
            UID = kw["edsac"]
            token = kw["cewc"]
            #print(UID,token)
            html = rsp.html3.replace("{TOKEN}",token)
            html = html.replace("{UID}",UID)
            return(html)
        
        

    def ResetUsuario(self,celular):
        rto = False
        user = http.request.env['res.users'].sudo().search([["CelularRecuperacion","=",celular]])
        #print(user)
        if len(user) == 1:
            url = http.request.env['ir.config_parameter'].sudo().get_param('web.base.url')
            clave = self.GeneradorClave(6)#Cantidad de caracteres en la clabe
            text = TextoRecuperacion.format(user.display_name, clave[0])#lo que se envia por mensaje
            #print(text)
            self.enviar_mensaje(mensaje=text,telefono=celular,titulo="Administracion LAIKA")
            rto = {"token": clave[1], "usuario":user.id}
        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() 

    @http.route('/lappa/usuarios/resetearconntrasenaetp2', auth='public', type='http' , website=True ,csrf=False, methods = ['GET'])
    def index2(self, **kw):
        print(kw)
        #vewrftbv={}&vfds={}&wdcwexas=dwdwqcaA
        try:
            UID =  int(kw["token"]) 
            passw = kw['password']
            self.cambiar_pass(UID,passw)
            return(werkzeug.utils.redirect('/'))
        except:
            pass
        try:
            UID =  kw["vfds"] 
            rto = rsp.html3.replace("{TOKEN}",UID)
        except:
            rto = werkzeug.utils.redirect('/')
        return(rto)

    def cambiar_pass(self,UID, passw):
        user = http.request.env['res.users'].sudo().search([["id","=",UID]])
        user.password = passw

    def GeneradorClave(self,largo=6):
        codigo = self.cualquiera(largo)
        token = self.encodear(codigo)
        return(codigo,token)

    def ChequearToken(self,codigo,token):
        if self.decodificar(token) == codigo:
            return(True)
        else:
            return(False)

    def cualquiera(self,largo=6):
        return(''.join(random.choice(string.digits + string.ascii_letters) for _ in range(largo)))

    def encodear(self,text):
        message_bytes = text.encode('ascii')
        base64_bytes = base64.b64encode(message_bytes)
        base64_message = base64_bytes.decode('ascii')
        return(base64_message)

    def decodificar(self,bs):
        base64_bytes = bs.encode('ascii')
        message_bytes = base64.b64decode(base64_bytes)
        message = message_bytes.decode('ascii')
        return(message)