Register user done

This commit is contained in:
victor
2024-12-06 00:46:48 +01:00
parent 13fe482956
commit 0a2d1c94fe
3 changed files with 53 additions and 7 deletions

View File

@@ -1,9 +1,13 @@
from flask import Flask from flask import Flask
from dotenv import load_dotenv from dotenv import load_dotenv
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
import os
# Cargar las variables de entorno desde .env # Cargar las variables de entorno desde .env
db = SQLAlchemy()
migrate = Migrate() # Inicializar Migrate
def create_app(): def create_app():
app = Flask(__name__) app = Flask(__name__)
@@ -12,8 +16,12 @@ def create_app():
app.config['SECRET_KEY'] = 'mi_secreto' app.config['SECRET_KEY'] = 'mi_secreto'
# Registro de blueprints app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{os.getenv('DB_USERNAME')}:{os.getenv('DB_PASSWORD')}@{os.getenv('DB_HOST')}:{os.getenv('DB_PORT')}/{os.getenv('DB_NAME')}"
from app.codes.user import login app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.register_blueprint(login, url_prefix='/') db.init_app(app)
migrate.init_app(app, db) # Asocia migrate con la app y la base de datos
from app.codes.user import user
app.register_blueprint(user, url_prefix='/user')
return app return app

View File

@@ -2,10 +2,13 @@ from flask import Blueprint, request, jsonify, current_app
import datetime import datetime
import jwt import jwt
login = Blueprint('login', __name__) from app.models.user import User
from app import db
@login.route('/login', methods=['POST']) user = Blueprint('user', __name__)
def login_view():
@user.route('/login', methods=['POST'])
def login():
data = request.get_json() data = request.get_json()
username = data.get('username') username = data.get('username')
password = data.get('password') password = data.get('password')
@@ -20,3 +23,20 @@ def login_view():
return jsonify({'token': token}) return jsonify({'token': token})
return jsonify({'message': 'Credenciales inválidas'}), 401 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

18
app/models/user.py Normal file
View File

@@ -0,0 +1,18 @@
from app import db
from werkzeug.security import generate_password_hash, check_password_hash
class User(db.Model):
__tablename__ = 'users'
# Asegúrate de que esto coincida con Image.creator
username = db.Column(db.String(80), primary_key=True)
# Longitud de la contraseña
password_hash = db.Column(db.String(256), nullable=False)
def set_password(self, password):
"""Genera el hash de la contraseña."""
self.password_hash = generate_password_hash(password, method="pbkdf2")
def check_password(self, password):
"""Verifica si el hash coincide con la contraseña proporcionada."""
return check_password_hash(self.password_hash, password)