From 6c5ef2f42c0c3c51df3e81b3f8a036635fd87802 Mon Sep 17 00:00:00 2001 From: phil Date: Fri, 14 Feb 2025 16:11:26 +0100 Subject: [PATCH] Start app when keycloak is ready; components --- src/App.vue | 106 ++++++++------------------------------- src/ResourceButton.vue | 28 ++++++++--- src/ResourceResponse.vue | 23 +++++++++ src/TokenView.vue | 30 +++++++++++ src/UserInfo.vue | 45 +++++++++++++++++ src/main.ts | 34 +++---------- 6 files changed, 144 insertions(+), 122 deletions(-) create mode 100644 src/ResourceResponse.vue create mode 100644 src/TokenView.vue create mode 100644 src/UserInfo.vue diff --git a/src/App.vue b/src/App.vue index 08c0ee9..c120088 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,13 +1,16 @@ + + diff --git a/src/TokenView.vue b/src/TokenView.vue new file mode 100644 index 0000000..91b34eb --- /dev/null +++ b/src/TokenView.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/UserInfo.vue b/src/UserInfo.vue new file mode 100644 index 0000000..cfc1c31 --- /dev/null +++ b/src/UserInfo.vue @@ -0,0 +1,45 @@ + + + diff --git a/src/main.ts b/src/main.ts index b9bfc24..e2ab97d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,8 +1,8 @@ -import { createApp, ref } from 'vue' +import { createApp } from 'vue' import Keycloak from "keycloak-js" import VueKeycloakJs from '@dsb-norge/vue-keycloak-js' import axios, { type AxiosInstance } from 'axios' -import App from './App.vue' +import App from '@/App.vue' interface Settings { keycloakUri: string @@ -17,6 +17,9 @@ interface Settings { export interface Resource { name: string + default_resource_id: string + role_required: string + scope_required: string } export interface Resources { @@ -51,14 +54,12 @@ axios.get("settings.json").then().then( }, onReady(keycloak: Keycloak) { initializeTokenInterceptor(keycloak) - checkPerms('links-to-check') + app.mount("#app") }, }) - app.mount("#app") } ) - function initializeTokenInterceptor(keycloak: Keycloak) { authServer.interceptors.request.use(axiosSettings => { if (keycloak.authenticated) { @@ -80,27 +81,4 @@ function initializeTokenInterceptor(keycloak: Keycloak) { }) } -export async function checkResource(elem: HTMLLinkElement) { - const url = elem.getAttribute("resource-name") - if (!url) return - await resourceServer.get(url).then( - resp => { - elem.classList.add("hasResponseStatus") - elem.classList.add("status-" + resp.status) - elem.title = "Response code: " + resp.status + " - " + resp.statusText - }).catch(err => { - elem.classList.add("hasResponseStatus") - elem.classList.add("status-" + err.response.status) - elem.title = "Response code: " + err.response.status + " - " + err.response.statusText - }) -} - -function checkPerms(className: string) { - // Scan elements with className and check the respose - var rootElems = document.getElementsByClassName(className) - Array.from(rootElems).forEach(elem => - Array.from(elem.children).forEach(elem => checkResource(elem)) - ) -} - const app = createApp(App)