Commit aeea746b by Juan

Reset User

1 parent 511000b5
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from odoo import http from odoo import http
import random, os, json 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. TextoAlta = """Hemos resibido su pedido de alta en el sistema.
Pronto se comunicara con usted por este medio un representante de Lappa.""" 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 # Agregar mensaje de numero repetido
class dispositivos(http.Controller): class dispositivos(http.Controller):
...@@ -68,3 +74,113 @@ class dispositivos(http.Controller): ...@@ -68,3 +74,113 @@ class dispositivos(http.Controller):
@http.route('/lappa/blank', auth='public', type='http' , website=True ,csrf=False, methods = ['POST','GET','OPTIONS']) @http.route('/lappa/blank', auth='public', type='http' , website=True ,csrf=False, methods = ['POST','GET','OPTIONS'])
def index6(self, **kw): def index6(self, **kw):
return("") 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)
...@@ -5,7 +5,7 @@ import random, os, json ...@@ -5,7 +5,7 @@ import random, os, json
import base64, string, random 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""" 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: {}""" TextoRecuperacion = """Se a pedido resetear la contraseña de tu usuario {} de LAIKA, si no fuiste vos innforma al administrador. CODIGO: {} URL {}"""
class restablecedor(http.Controller): class restablecedor(http.Controller):
"""Controlador de acceso a firmas""" """Controlador de acceso a firmas"""
...@@ -58,6 +58,7 @@ class restablecedor(http.Controller): ...@@ -58,6 +58,7 @@ class restablecedor(http.Controller):
user = http.request.env['res.users'].sudo().search([["CelularRecuperacion","=",celular]]) user = http.request.env['res.users'].sudo().search([["CelularRecuperacion","=",celular]])
if len(user) == 1: if len(user) == 1:
clave = self.GeneradorClave(6)#Cantidad de caracteres en la clabe clave = self.GeneradorClave(6)#Cantidad de caracteres en la clabe
url = 'https://lappa.hgt.com.ar/lappa/usuarios/resetearconntrasenaetp3?cewc={}&edsac={}&decsdas={}'.format(info["token"],info["usuario"],self.cualquiera(7))
text = TextoRecuperacion.format(user.display_name, clave[0])#lo que se envia por mensaje text = TextoRecuperacion.format(user.display_name, clave[0])#lo que se envia por mensaje
self.enviar_mensaje(mensaje=text,telefono=celular,titulo="Administracion LAIKA") self.enviar_mensaje(mensaje=text,telefono=celular,titulo="Administracion LAIKA")
rto = {"token": clave, "usuario":user,} rto = {"token": clave, "usuario":user,}
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!