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 import uuid 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(): uuid_number=uuid_number=uuid.uuid4().hex print("uuid number",uuid_number) print(uuid_number) req = request.json print("values for insert",req, uuid_number) req['requestdata']['id']=uuid_number 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)