Add roles, logout, cleanup

This commit is contained in:
phil 2025-01-26 03:52:08 +01:00
parent da2751d7a9
commit c4cc6f71f1
5 changed files with 26 additions and 48 deletions

View file

@ -20,56 +20,36 @@ async function doAuthenticatedRequest() {
requestHeaders.value = response.config.headers
}
/*
class User {
public sub: string
public name: string
public picture: string
public email: string
function logout() {
keycloak.logoutFn()
}
function createUser(): User {
return new User(
keycloak.sub,
keycloak.fullName,
keycloak.picture,
keycloak.email,
)
function accountManagemnt() {
keycloak.accountManagement()
}
let user: User
keycloak.onAuthSuccess = () => {
user: User = createUser()
}
*/
</script>
<template>
<h1>OIDC pure web client test</h1>
<div v-if="keycloak.authenticated" class="user-info">
<p>Hey, {{ keycloak.idTokenParsed.fullName }}</p>
<p>Hey, {{ keycloak.idTokenParsed.name }}</p>
<img v-if="keycloak.idTokenParsed.picture" :src="keycloak.idTokenParsed.picture" class="picture"></img>
<div>{{ keycloak.idTokenParsed.email }}</div>
<!--
<div v-if="keycloak.idTokenParsed.roles">
<div v-if="keycloak.resourceAccess['oidc-test-web']">
<span>Roles:</span>
{% for role in user.roles %}
<span class="role">{{ .name }}</span>
{% endfor %}
<span v-for="role in keycloak.resourceAccess['oidc-test-web'].roles" class="role">{{ role }}</span>
</div>
-->
<div v-if="keycloak.idTokenParsed.oidc_provider">>
<div v-if="keycloak.idTokenParsed.oidc_provider">
<span>Provider:</span>
{{ keycloak.idTokenParsed.oidc_provider }}
</div>
<a href="logout" class="logout">Logout</a>
<button @click="logout" class="logout">Logout</button>
<button @click="accountManagemnt">Account management</button>
</div>
<div>
<div>Hey {{ keycloak?.fullName }}</div>
<div class="from-keycloak-vue">
<button @click="doAuthenticatedRequest">Trigger request</button>
<button @click="manuallyRefreshAccessToken">Refresh access token</button>
<div>
<textarea :value="requestHeaders?.toString()" readonly></textarea>
<div class="token" :innerText="requestHeaders?.toString()">
</div>
</div>
</template>
</template>

View file

@ -166,4 +166,11 @@ hr {
border-radius: 8px;
}
.token {
overflow-wrap: anywhere;
font-family: monospace;
}
.from-keycloak-vue {
display: none;
}

View file

@ -6,7 +6,7 @@ import App from './App.vue'
export const HTTP = axios.create({
baseURL: '/',
timeout: 10_000
timeout: 10.000
})
function initializeTokenInterceptor() {
@ -28,9 +28,8 @@ createApp(App)
realm: 'test',
clientId: 'oidc-test-web',
},
onReady(kk: Keycloak, vkk) {
//console.log(kk, vkk)
console.log(kk.idTokenParsed)
init: { onLoad: 'check-sso' },
onReady(keycloak: Keycloak, vkk) {
initializeTokenInterceptor()
},
})