from flask import Blueprint, request, jsonify
from databases.db_mysql import get_connection
from utils.webToken import crearToken, validarToken
from werkzeug.security import generate_password_hash, check_password_hash
from datetime import datetime
from pymysql import err
routes_auth = Blueprint('routes_auth', __name__)
@routes_auth.route('/login', methods=['POST'])
def loginRoute():
# traemos todos los datos mandados en el body
user = request.get_json()
# especificamos en el correo y contraseña para hacer la comparacion en la bd
correo = user['correo']
contrasena = user['contrasena']
# abrimos la conexion a la bd
conn = get_connection()
cur = conn.cursor()
# generamos la consulta
cur.execute(
"SELECT * FROM tb_usuario_register WHERE correo = '{}' and tb_usuario_register.estado = 'Activo'".format(
correo))
result = cur.fetchone()
if result is None or result == ():
response = jsonify({'message': 'Correo o Contraseña incorrecta y/o usuario inactivado'})
response.status_code = 401
return response
# cerramos la conexion a la bd
conn.commit()
cur.close()
conn.close()
validacionContrasena = check_password_hash(result[3], contrasena)
# si el resultado es none no existe este usuario en la bd
if not validacionContrasena:
# retornamos mensanje
response = jsonify({'message': 'Correo o Contraseña incorrecta'})
response.status_code = 401
return response
else:
# si el usuario existe creamos el token
# pasamos de tupla a diccionario
dataParaToken: dict = {
'id': result[0], 'nombre': result[1], 'correo': result[2],
}
print(dataParaToken)
return crearToken(dataParaToken)
@routes_auth.route('/verificarToken', methods=['GET'])
def verificarToken():
token = request.headers['Authorization'].split(" ")[1]
validacion = validarToken(token, False)
if validacion:
return jsonify({"message": "Token success", "Authorization": True})
else:
return validacion
@routes_auth.route('/register', methods=['POST'])
def register():
dat = request.get_json()
## si los datos son validos
if dat:
try:
fecha_creacion = datetime.now()
nombre = dat['nombre']
correo = dat['correo']
contra_encriptado = generate_password_hash(dat['contraseña'], 'pbkdf2:sha256', 30)
estado = 'Activo'
conn = get_connection()
cur = conn.cursor()
print(fecha_creacion)
cur.execute("""INSERT INTO tb_usuario_register (nombre, correo, contrasena, fecha_creacion, estado) VALUES ('{}', '{}', '{}', '{}', '{}' )""".format(nombre, correo, contra_encriptado, fecha_creacion, estado))
# cerramos la conexion a la bd
conn.commit()
cur.close()
conn.close()
return jsonify({"message": "El usuario se ha creado con exito"})
except err.IntegrityError as er:
# organizamos y limpiamos el error
error = format(er).replace('(', '').replace(')', '').replace('/', '').replace('"', '').split(',')
if error[0] == '1062':
response = jsonify({'message': 'Este usuario ya existe', 'numErro': error[0]})
response.status_code = 400
return response
## Quitamos caracteres innecesarios
response = jsonify({'message': error[1], 'numErro': error[0]})
response.status_code = 400
return response
没有合适的资源?快使用搜索试试~ 我知道了~
Crud-Tarea 项目的 Backeng,创建了python -Flask 服务和验证令牌.zip
共14个文件
xml:7个
py:4个
env:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 106 浏览量
2024-04-23
12:23:01
上传
评论
收藏 8KB ZIP 举报
温馨提示
Crud-Tarea 项目的 Backeng,创建了python -Flask 服务和验证令牌.zip
资源推荐
资源详情
资源评论
收起资源包目录
Crud-Tarea 项目的 Backeng,创建了python -Flask 服务和验证令牌.zip (14个子文件)
1
App-Crud-Tarea-Backend-master
app.py 248B
.env 100B
utils
webToken.py 1KB
.idea
sqldialects.xml 169B
vcs.xml 180B
misc.xml 300B
dataSources.xml 698B
inspectionProfiles
Project_Default.xml 863B
profiles_settings.xml 174B
modules.xml 290B
.gitignore 176B
Backend_App_Tasking.iml 736B
routes
appRoutes.py 4KB
databases
db_mysql.py 409B
共 14 条
- 1
资源评论
GZM888888
- 粉丝: 176
- 资源: 2945
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功