dbilayer_oracle/reqhandlers/dbusers.py

68 lines
2.4 KiB
Python
Raw Permalink Normal View History

2023-05-15 18:06:03 +05:30
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)