Register user done
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
from flask import Flask
|
||||
from dotenv import load_dotenv
|
||||
from flask_migrate import Migrate
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
import os
|
||||
|
||||
# Cargar las variables de entorno desde .env
|
||||
|
||||
|
||||
db = SQLAlchemy()
|
||||
migrate = Migrate() # Inicializar Migrate
|
||||
|
||||
def create_app():
|
||||
app = Flask(__name__)
|
||||
@@ -12,8 +16,12 @@ def create_app():
|
||||
|
||||
app.config['SECRET_KEY'] = 'mi_secreto'
|
||||
|
||||
# Registro de blueprints
|
||||
from app.codes.user import login
|
||||
app.register_blueprint(login, url_prefix='/')
|
||||
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')}"
|
||||
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
||||
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
|
||||
|
||||
@@ -2,10 +2,13 @@ from flask import Blueprint, request, jsonify, current_app
|
||||
import datetime
|
||||
import jwt
|
||||
|
||||
login = Blueprint('login', __name__)
|
||||
from app.models.user import User
|
||||
from app import db
|
||||
|
||||
@login.route('/login', methods=['POST'])
|
||||
def login_view():
|
||||
user = Blueprint('user', __name__)
|
||||
|
||||
@user.route('/login', methods=['POST'])
|
||||
def login():
|
||||
data = request.get_json()
|
||||
username = data.get('username')
|
||||
password = data.get('password')
|
||||
@@ -20,3 +23,20 @@ def login_view():
|
||||
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
|
||||
18
app/models/user.py
Normal file
18
app/models/user.py
Normal 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)
|
||||
Reference in New Issue
Block a user