Compare commits
4 Commits
28ac497c57
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b87145654a | ||
|
|
331f33286d | ||
|
|
0a2d1c94fe | ||
|
|
13fe482956 |
5
.env
Normal file
5
.env
Normal file
@@ -0,0 +1,5 @@
|
||||
DB_USERNAME=new_user
|
||||
DB_PASSWORD=password
|
||||
DB_HOST=localhost
|
||||
DB_PORT=3306
|
||||
DB_NAME=UseCaseDB
|
||||
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
.venvManjaro/
|
||||
app/__pycache__/
|
||||
app/models/__pycache__/
|
||||
app/codes/__pycache__/
|
||||
migrations/*
|
||||
27
app/__init__.py
Normal file
27
app/__init__.py
Normal file
@@ -0,0 +1,27 @@
|
||||
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__)
|
||||
|
||||
load_dotenv()
|
||||
|
||||
app.config['SECRET_KEY'] = 'mi_secreto'
|
||||
|
||||
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
|
||||
42
app/codes/user.py
Normal file
42
app/codes/user.py
Normal file
@@ -0,0 +1,42 @@
|
||||
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')
|
||||
|
||||
if username and password:
|
||||
user = User.query.filter_by(username=username).first()
|
||||
if user and user.check_password(password):
|
||||
token = jwt.encode({
|
||||
'username': username,
|
||||
'exp': datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(hours=1)
|
||||
}, current_app.config['SECRET_KEY'], algorithm='HS256')
|
||||
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)
|
||||
15
server.py
Normal file
15
server.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from app import create_app
|
||||
from flask import render_template, session, redirect
|
||||
|
||||
app = create_app()
|
||||
|
||||
@app.route('/', methods = ['GET'])
|
||||
def index():
|
||||
userId = session.get('userId')
|
||||
if userId:
|
||||
return "test"
|
||||
else:
|
||||
return "test"
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(debug=True, port="8080")
|
||||
Reference in New Issue
Block a user