fix: session update

manzilcheck
Kushal Dotel 6 months ago
parent b21c4a6c49
commit a7b728951d
  1. 3
      backend/app.py
  2. 69
      backend/blueprints/session/__init__.py

@ -14,6 +14,8 @@ from utils.utils import random_string_generator, hash_string
from blueprints.profile import profile as profileBlueprint
from blueprints.session import session as sessionBlueprint
app = Flask(__name__)
# Set configuration directly on the app instance
app.config['ALLOWED_EXTENSIONS'] = {'png', 'jpg', 'jpeg', 'gif'}
@ -23,6 +25,7 @@ app.config["SQLALCHEMY_DATABASE_URI"] = DB_URI
db.init_app(app)
app.register_blueprint(profileBlueprint, url_prefix='/api/profile')
app.register_blueprint(sessionBlueprint,url_prefix='/api/session')
@app.route('/', methods=['GET', 'POST'])

@ -0,0 +1,69 @@
from email.policy import default
from flask import Blueprint, request, jsonify, current_app, g
from werkzeug.utils import secure_filename
from datetime import datetime
from utils.auth import auth_required, requires_role
from db.model import db
from db.model import User, Session, UserRole # Adjust based on your model's location
# from constants import UserRole
from werkzeug.security import generate_password_hash,check_password_hash
import uuid
import os
from config import *
from utils.utils import password_check_sanity,is_valid_email,InsecurePasswordException
from sqlalchemy.exc import IntegrityError
session = Blueprint('session', __name__)
@session.route('/create', methods=['POST'])
def login():
"""
Handle user login.
"""
data = request.form # Expecting JSON body
# Extract credentials from request
# username = data.get('username')
email = data.get('email')
password = data.get('password')
user_agent = request.headers.get('User-Agent', 'Unknown')
# Validate required fields
if not email or not password:
return jsonify({"error": "email and password are required"}), 400
# Find the user by username
# user = User.query.filter_by(username=username).first()
user = User.query.filter_by(email=email).first()
if not user:
return jsonify({"error": "Invalid email or password"}), 401
# Verify the password
if not check_password_hash(user.hash_password, password):
return jsonify({"error": "Invalid email or password"}), 401
# Create a new session
session_key = str(uuid.uuid4()) # Generate a unique session key
new_session = Session(
userID=user.id,
user=user, # Pass the user object here
key=session_key,
ua=user_agent,
creationDate=datetime.utcnow(),
lastUsed=datetime.utcnow(),
isValid=True
)
try:
db.session.add(new_session)
db.session.commit()
return jsonify({
"message": "Login successful",
"session_key": session_key,
"user_id": str(user.id)
}), 200
except Exception as e:
db.session.rollback()
return jsonify({"error": "Login failed, please try again later."}), 500
Loading…
Cancel
Save