From d6b98132c5ac7f8ceb957962f33036f1fe65172f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christian=20B=C3=B6ttcher?= <c.boettcher@fz-juelich.de>
Date: Mon, 6 Mar 2023 10:36:31 +0100
Subject: [PATCH] check integration via blueprint and single view

---
 plugins/unity_integration.py | 43 ++++++++++++++++++------------------
 1 file changed, 22 insertions(+), 21 deletions(-)

diff --git a/plugins/unity_integration.py b/plugins/unity_integration.py
index 210af5a..53735b7 100644
--- a/plugins/unity_integration.py
+++ b/plugins/unity_integration.py
@@ -1,6 +1,6 @@
 import os, random, string
 from authlib.integrations.flask_client import OAuth
-from flask import url_for, redirect, current_app as app
+from flask import url_for, redirect, current_app as app, Blueprint
 from flask_login import login_user
 from flask_appbuilder import expose, BaseView as AppBuilderBaseView
 from airflow.plugins_manager import AirflowPlugin
@@ -26,16 +26,17 @@ oauth.register(
 
 )
 
-class UnityIntegrationLoginView(AppBuilderBaseView):
-    #@expose("/unity_login")
-    @app.route('/unity_login')
-    def unity_login():
-        redirect_uri = url_for('unity_authorize', _external=True)
+unity = Blueprint('unity', __name__, url_prefix="/unity")
+
+class UnityIntegrationView(AppBuilderBaseView):
+
+    @unity.route('/login')
+    def login():
+        redirect_uri = url_for('authorize', _external=True)
         return oauth.unity.authorize_redirect(redirect_uri)
-class UnityIntegrationAuthView(AppBuilderBaseView):
-    #@expose("/unity_authorize")
-    @app.route('/unity_authorize')
-    async def unity_authorize():
+    
+    @unity.route('/authorize')
+    async def authorize():
         token = await oauth.unity.authorize_access_token()
         user = await oauth.unity.userinfo(token=token)
         # get relevant data from token
@@ -65,21 +66,21 @@ class UnityIntegrationAuthView(AppBuilderBaseView):
         # login as that user
         login_user(fab_user, remember=False)
         return redirect('/')
+    
+    @unity.route('/logout')
+    def logout():
+        pass
 
-v_unity_login_view = UnityIntegrationLoginView()
-v_unity_login_package = {
-    "name": "Unity Login View",
-    "category": "Unity Integration",
-    "view": v_unity_login_view,
-}
 
-v_unity_auth_view = UnityIntegrationAuthView()
-v_unity_auth_package = {
-    "name": "Unity Auth View",
+v_unity_view = UnityIntegrationView()
+v_unity_package = {
+    "name": "Unity SSO View",
     "category": "Unity Integration",
-    "view": v_unity_auth_view,
+    "view": v_unity_view,
 }
 
+
 class UnityIntegrationPlugin(AirflowPlugin):
     name = "unity_integration"
-    appbuilder_views = [v_unity_auth_package, v_unity_login_package]
\ No newline at end of file
+    appbuilder_views = [v_unity_package]
+    flask_blueprints = [unity]
\ No newline at end of file
-- 
GitLab