- Connected keycloak

- changed backend-api port
- started to work with the keycloak token to receive userdata
- connected backend-api
This commit is contained in:
josch
2024-04-29 10:30:25 +02:00
parent 12bc0a3733
commit ab1c4d0705
11 changed files with 127 additions and 82 deletions

View File

@@ -5,6 +5,7 @@ import App from './App.vue';
import Keycloak, {type KeycloakConfig, type KeycloakInitOptions} from 'keycloak-js';
import { useKeycloakStore } from 'stores/keycloakStore';
import {useUserStore} from 'stores/user-store';
const app = createApp(App);
app.use(createPinia());
@@ -18,74 +19,44 @@ app.use(createPinia());
* @param redirectUri: URL, zu der nach dem Login weitergeleitet wird. Hierbei wird die Port des Frontends aus der .env-Datei verwendet.
*/
console.log("Keycloak Client ID: "+process.env.KEYCLOAK_CLIENT_ID);
const keycloak = new Keycloak({
url: 'http://localhost:8083/',
realm: 'PraxistransferKeycloak',
clientId: 'praxistransfer'
});
const keycloakConfig: KeycloakConfig = {
url: 'http://localhost:'+ process.env.PORT_KEYCLOAK as string+'/',
realm: process.env.KEYCLOAK_REALM as string,
clientId: process.env.KEYCLOAK_CLIENT_ID as string,
};
const initOptions: KeycloakInitOptions = {
onLoad: 'login-required',
redirectUri: 'http://localhost:8080/'//+ import.meta.env.PORT_FRONTEND as string +'/',
};
console.log(keycloakConfig);
console.log(initOptions);
const keycloak: Keycloak = new Keycloak(keycloakConfig);
console.log("ICH WAR HIER");
const keycloakStore = useKeycloakStore();
keycloakStore.setKeycloak(keycloak);
/**
* Initialisierung von Keycloak.
* Beginnt authentifizierungsprozess und lädt die Applikation neu, falls Authentifizierung fehlschlägt.
* Weiterhin wird ein Tokenrefresh alle 70 Sekunden initialisiert.
*/
if(keycloakStore.keycloak) {
await keycloakStore.keycloak.init(initOptions).then((auth: boolean) => {
if(keycloakStore.keycloak) {
if (!auth) {
window.location.reload(); //Falls Authentifizierung fehlschlägt, wird die Seite neu geladen.
} else {
console.log('Authenticated'); //Loggt, dass Authentifizierung erfolgreich war.
app.mount('#app'); //App wird geladen.
if (keycloakStore.keycloak.token) { //Überprüft, ob Token vorhanden ist.
console.log('Token: ' + keycloakStore.keycloak.token); //Loggt Token.
localStorage.setItem('vue-keycloak-token', keycloakStore.keycloak.token); //Token wird in localStorage gespeichert, um es später auswerten zu können.
} else console.log('No Token'); //Loggt, dass kein Token vorhanden ist.
if (keycloakStore.keycloak.refreshToken) { //Überprüft, ob Refresh-Token vorhanden ist.
console.log('Refresh-Token: ' + keycloakStore.keycloak.refreshToken); //Loggt Refresh-Token.
localStorage.setItem('vue-keycloak-refresh-token', keycloakStore.keycloak.refreshToken); //Refresh-Token wird in localStorage gespeichert, um bei Ablauf des Tokens ein neues Token ohne erneute Authentifizierung zu erhalten.
} else console.log('No Refresh-Token'); //Loggt, dass kein Refresh-Token vorhanden ist.
if (keycloakStore.keycloak.userInfo){ //Überprüft, ob User-Informationen vorhanden sind.
console.log('User: ' + keycloakStore.keycloak.userInfo); //Loggt User-Informationen.
localStorage.setItem('vue-keycloak-user', JSON.stringify(keycloakStore.keycloak.userInfo)); //User-Informationen werden in localStorage gespeichert, um sie später auswerten zu können.
} else console.log('No User'); //Loggt, dass keine User-Informationen vorhanden sind.
}
//Token Refresh
setInterval(() => {
keycloak.updateToken(70).then((refreshed: boolean) => { //Token wird alle 70 Sekunden aktualisiert.
if (refreshed) {
console.log('Token refreshed');
} else {
console.warn('Token not refreshed');
if (keycloak.tokenParsed && keycloak.tokenParsed.exp && keycloak.timeSkew) { //Fängt Probleme mit undefined Variablen ab
console.log('Token is still valid for '
+ Math.round(keycloak.tokenParsed.exp + keycloak.timeSkew - new Date().getTime() / 1000) + ' seconds'); //Loggt, wie lange das Token noch gültig ist.
}
}
}).catch(() => {
console.error('Failed to refresh token'); //Loggt, dass Token nicht aktualisiert werden konnte.
});
}, 60000);
}
}).catch((e) => {
console.error('Authenticated Failed', e);
try {
const authenticated = await keycloak.init({
onLoad: 'login-required',
redirectUri: 'http://localhost:8080/test/'
}).then( (auth) => {
console.log("Authenticated :" + authenticated);
});
} catch (error) {
console.error(error);
}
if(keycloakStore.keycloak){
if(keycloakStore.keycloak.userInfo){
console.log('User: ' + keycloakStore.keycloak.userInfo);
} else console.log('No User');
} else console.log('Keycloak not initialized');
console.log(keycloak);
console.log(keycloak.subject);
// Anfrage ans Backend
const userStore = useUserStore();
if (keycloak.subject != null) {
//userStore.loadPtpUsersByKeycloakID(keycloak.subject);
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 => {
console.log(JSON.stringify(user));
})
} else {
console.log("hier ist was schlimmes passiert menno");
}