Skip to content
Snippets Groups Projects
auth.py 924 B
from flask import jsonify, request
from flask_jwt_extended import create_access_token
from flask_cors import cross_origin
from datetime import timedelta

from areas import api_v1
from config import *
from helpers import HydraOauth, BadRequest


@api_v1.route("/login", methods=["POST"])
@cross_origin()
def login():
    authorization_url = HydraOauth.authorize()
    return jsonify({"authorizationUrl": authorization_url})


@api_v1.route("/hydra/callback")
@cross_origin()
def hydra_callback():
    state = request.args.get("state")
    code = request.args.get("code")
    if state == None:
        raise BadRequest("Missing state query param")

    if code == None:
        raise BadRequest("Missing code query param")

    token = HydraOauth.get_token(state, code)
    access_token = create_access_token(
        identity=token, expires_delta=timedelta(days=365)
    )

    return jsonify({"access_token": access_token})