68 lines
2.4 KiB
Python
68 lines
2.4 KiB
Python
from flask import Blueprint, request, jsonify
|
|
from core.bll import bllengine
|
|
from flask_cors import cross_origin
|
|
from flask_jwt_extended import create_access_token, get_jwt, jwt_required
|
|
from reqhandlers.blocklist import BLOCKLIST
|
|
import datetime
|
|
from datetime import timedelta
|
|
|
|
users = Blueprint('users', __name__)
|
|
|
|
|
|
@users.route('/projects/reqtest')
|
|
def retest():
|
|
return "success"
|
|
|
|
# I Register User
|
|
|
|
@users.route('/register', methods=['POST'])
|
|
@cross_origin()
|
|
@jwt_required(optional=True)
|
|
def register():
|
|
req=request.json
|
|
resp=bllengine.performRegistration(req)
|
|
return jsonify(resp)
|
|
|
|
# II Login User
|
|
|
|
@users.route('/login', methods=['POST'])
|
|
@cross_origin()
|
|
@jwt_required(optional=True)
|
|
def login():
|
|
req=request.json
|
|
resp=bllengine.performLoginActivity(req)
|
|
if 'user_details' in resp:
|
|
try:
|
|
# expires=datetime.datetime.utcnow() + datetime.timedelta(days=1)
|
|
expires=datetime.timedelta(days=1)
|
|
print(expires)
|
|
token=create_access_token(identity=resp['user_details']['username'],expires_delta=expires)
|
|
print("token generated successfully",token)
|
|
resp['jwt_token']=token
|
|
return jsonify({"responseid": req['requestid'], "responsefor": "User Login", "responsesetto": "UI", "response": resp})
|
|
except:
|
|
return jsonify({"responseid": req['requestid'], "responsefor": "User Login", "responsesetto": "UI", "response": "Error Ocuured"})
|
|
else:
|
|
return jsonify({"responseid": req['requestid'], "responsefor": "User Login", "responsesetto": "UI", "response": resp})
|
|
|
|
# III Logout User
|
|
|
|
@users.route('/logout', methods=['POST'])
|
|
@cross_origin()
|
|
@jwt_required()
|
|
def logout():
|
|
req=request.json
|
|
resp={}
|
|
if isinstance(req, dict):
|
|
print(get_jwt())
|
|
jti=get_jwt()['jti']
|
|
if (jti not in BLOCKLIST):
|
|
BLOCKLIST.add(jti)
|
|
print(BLOCKLIST)
|
|
resp={"responseid": req['requestid'], "responsefor": "User Logout", "responsesetto": "UI", "response": {"message": "User Loggedout Successfully"}}
|
|
else:
|
|
resp={"responseid": req['requestid'], "responsefor": "User Logout", "responsesetto": "UI", "response": {"message": "User has been already loggedout or else not yet logged in"}}
|
|
else:
|
|
resp={"responseid": req['requestid'], "responsefor": "User Logout", "responsesetto": "UI", "response": {"message": "Error Encountered"}}
|
|
return jsonify(resp)
|