added logout function and persistent pinia store

This commit is contained in:
Jona Kläß
2024-05-02 15:21:33 +02:00
parent cb68ec0d35
commit 64edf9b81c
10 changed files with 104 additions and 202 deletions

View File

@@ -4,69 +4,31 @@ import {createPinia} from 'pinia';
import App from './App.vue';
import Keycloak from 'keycloak-js';
import { useKeycloakStore } from 'stores/keycloakStore';
import {useUserStore} from 'stores/user-store';
const app = createApp(App);
app.use(createPinia());
const pinia = createPinia();
app.use(pinia);
/**
* Initialisierungsoptionen für Keycloak.
* @param url URL zu Keycloak, Port definiert in keycloak_init.sh und quasar.config.js-Datei. Müssen identisch sein!
* @param realm Name des Realms, hinterlegt in realm-export.json von Keycloak und quasar.config.js-Datei. Müssen identisch sein!
* @param clientId Name des Clients, hinterlegt in realm-export.json von Keycloak und quasar.config.js-Datei. Müssen identisch sein!
* @param onLoad = 'login-required': Hierdurch wird zum Aufrufen der ganzen Applikation ein login benötigt.
* @param redirectUri: URL, zu der nach dem Login weitergeleitet wird. Hierbei wird die Port des Frontends aus der .env-Datei verwendet.
*/
/**
* Variablen sind in quasar.config.js definiert und werden hier verwendet.
* @param keycloakPort Port, auf dem Keycloak läuft, hinterlegt in docker-compose.yml
* @param frontendPort Port, auf dem das Frontend läuft, hinterlegt in quasar.config.js und realm-export.json von Keycloak für die Redirect-URL
* @param realm Name des Realms, hinterlegt in realm-export.json von Keycloak
* @param clientId Name des Clients, hinterlegt in realm-export.json von Keycloak
*/
const keycloakPort = "" + process.env.PORT_KEYCLOAK;
const frontendPort = "" + process.env.PORT_FRONTEND;
const realm = "" + process.env.KEYCLOAK_REALM;
const clientId = "" + process.env.KEYCLOAK_CLIENT_ID;
const userStore = useUserStore();
const keycloakStore = useKeycloakStore();
const keycloak = new Keycloak({
url: 'http://localhost:' + keycloakPort + '/',
realm: realm,
clientId: clientId
});
try {
await keycloak.init({
onLoad: 'login-required', //authentifizierung erforderlich
redirectUri: 'http://localhost:' + frontendPort + '/test/'
}).then( (auth) => {
console.log("Authenticated: " + auth);
});
} catch (error) {
console.error(error);
}
console.log(keycloak);
console.log(keycloak.subject);
const keycloak: Keycloak = await userStore.initKeycloak();
// Anfrage ans Backend
if (keycloak.subject != null) {
if (keycloak.subject) {
userStore.keycloakId = keycloak.subject;
//userStore.loadPtpUsersByKeycloakID(keycloak.subject);
userStore.getPtpUserByKeycloakID(keycloak.subject);
await userStore.getPtpUserByKeycloakID(keycloak.subject);
/*console.log(userStore.userLoaded);
if(userStore.userLoaded) {
console.log("Hier ist der Bruder: " + JSON.stringify(userStore.user));
}*/
userStore.loadPtpUsersByKeycloakID(keycloak.subject).then(user => {
userStore.loadPtpUsersByKeycloakID(keycloak.subject).then(user => {
console.log(JSON.stringify(user));
})
} else {
console.error("hier ist was schlimmes passiert menno");
}
keycloakStore.setKeycloak(keycloak);