from app.api import bp_user from flask_jwt_extended import jwt_required, get_jwt_identity, get_jwt from flask import request, abort, jsonify from datetime import timedelta from app.services.user_service import UserService from app.extensions import jwt_redis_blocklist @bp_user.route('/login', methods=['POST']) def login(): username = request.json.get('username') password = request.json.get('password') if username is None or password is None: return abort(400) result, status_code = UserService.login(username, password) return jsonify(**result), status_code @bp_user.route('/logout', methods=['DELETE']) @jwt_required() def logout(): jti = get_jwt()["jti"] jwt_redis_blocklist.set(jti, "", ex=timedelta(days=1)) return {"Success": "Successfully logged out"}, 200 @bp_user.route('/create', methods=['POST']) def create_user(): username = request.json.get('username') email = request.json.get('email') password = request.json.get('password') if username is None or email is None or password is None: return abort(400) result, status_code = UserService.create_user(username, email, password) return jsonify(**result), status_code @bp_user.route('/update/email', methods=['POST']) @jwt_required() def update_email(): username = get_jwt_identity() new_mail = request.json.get('new_email') if new_mail is None: return abort(400) result, status_code = UserService.update_email(username, new_mail) return jsonify(**result), status_code @bp_user.route('/update/username', methods=['POST']) @jwt_required() def update_username(): username = get_jwt_identity() new_username = request.json.get('new_username') if new_username is None: return abort(400) result, status_code = UserService.update_username(username, new_username) return jsonify(**result), status_code @bp_user.route('/update/password', methods=['POST']) @jwt_required() def update_password(): username = get_jwt_identity() new_password = request.json.get('new_password') if new_password is None: return abort(400) result, status_code = UserService.update_password(username, new_password) return jsonify(**result), status_code