42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
from flask import Blueprint, request, jsonify, current_app
|
|
import datetime
|
|
import jwt
|
|
|
|
from app.models.user import User
|
|
from app import db
|
|
|
|
user = Blueprint('user', __name__)
|
|
|
|
@user.route('/login', methods=['POST'])
|
|
def login():
|
|
data = request.get_json()
|
|
username = data.get('username')
|
|
password = data.get('password')
|
|
|
|
# Aquí se validan las credenciales (en este caso un ejemplo simple)
|
|
if username == 'admin' and password == 'password':
|
|
# Generar token
|
|
token = jwt.encode({
|
|
'username': username,
|
|
'exp': datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(hours=1)
|
|
}, current_app.config['SECRET_KEY'], algorithm='HS256') # Usamos current_app para acceder a la configuración
|
|
return jsonify({'token': token})
|
|
|
|
return jsonify({'message': 'Credenciales inválidas'}), 401
|
|
|
|
@user.route('/register', methods=['POST'])
|
|
def register():
|
|
data = request.get_json()
|
|
username = data.get('username')
|
|
password = data.get('password')
|
|
password_confirm = data.get('password_confirm')
|
|
|
|
user = User.query.filter_by(username=username).first()
|
|
if not user and password == password_confirm:
|
|
new_user = User(username=username)
|
|
new_user.set_password(password) # Establecer el hash de la contraseña
|
|
db.session.add(new_user)
|
|
db.session.commit() # Guardar cambios en la base de datos
|
|
return jsonify({"success": True}), 200
|
|
else:
|
|
return jsonify({'error': False}), 400 |