altausuario.py
7.03 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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# -*- 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)