Register user done
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
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