79 lines
2.1 KiB
Python
79 lines
2.1 KiB
Python
|
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
|