dashboard/helpers/hydra_oauth.py

41 lines
1.1 KiB
Python
Raw Normal View History

2022-01-18 10:48:18 +01:00
from flask import request, session
from requests_oauthlib import OAuth2Session
from config import *
from helpers import HydraError
class HydraOauth:
SESSION_KEY = "oauth_state"
@staticmethod
def authorize():
try:
hydra = OAuth2Session(HYDRA_CLIENT_ID)
authorization_url, state = hydra.authorization_url(
HYDRA_AUTHORIZATION_BASE_URL
)
# State is used to prevent CSRF, keep this for later.
session[HydraOauth.SESSION_KEY] = state
return authorization_url
except Exception as err:
raise HydraError(str(err), 500)
@staticmethod
def get_token(state):
2022-01-18 10:48:18 +01:00
try:
hydra = OAuth2Session(HYDRA_CLIENT_ID, state=state)
2022-01-18 10:48:18 +01:00
token = hydra.fetch_token(
TOKEN_URL,
client_secret=HYDRA_CLIENT_SECRET,
2022-01-19 10:51:39 +01:00
authorization_response="https://dashboard.init.stackspin.net"
+ request.get_full_path(),
2022-01-18 10:48:18 +01:00
)
session["hydra_token"] = token
return token
except Exception as err:
raise HydraError(str(err), 500)