This commit is contained in:
@ -1,5 +1,5 @@
|
||||
import { defineStore } from "pinia";
|
||||
import keycloakService from '@/services/keycloak';
|
||||
import keycloakService from "@/services/keycloak";
|
||||
import type Keycloak from "keycloak-js";
|
||||
|
||||
const useAuthStore = defineStore("storeAuth", {
|
||||
@ -11,44 +11,51 @@ const useAuthStore = defineStore("storeAuth", {
|
||||
refreshToken: "",
|
||||
username: "",
|
||||
},
|
||||
}
|
||||
};
|
||||
},
|
||||
persist: true,
|
||||
getters: {},
|
||||
actions: {
|
||||
// Initialize Keycloak OAuth
|
||||
async initOauth(keycloak: Keycloak, clearData = true) {
|
||||
if(clearData) { await this.clearUserData(); }
|
||||
if (clearData) {
|
||||
await this.clearUserData();
|
||||
}
|
||||
|
||||
this.authenticated = !!keycloak.authenticated; // the !! removes undefined
|
||||
if (this.authenticated && keycloak.token && keycloak.idTokenParsed && keycloak.refreshToken){
|
||||
if (
|
||||
this.authenticated &&
|
||||
keycloak.token &&
|
||||
keycloak.idTokenParsed &&
|
||||
keycloak.refreshToken
|
||||
) {
|
||||
this.user.username = keycloak.idTokenParsed.given_name;
|
||||
this.user.token = keycloak.token;
|
||||
this.user.refreshToken = keycloak.refreshToken;
|
||||
}
|
||||
},
|
||||
async login(){
|
||||
async login() {
|
||||
try {
|
||||
const keycloak = await keycloakService.callLogin();
|
||||
if (keycloak)
|
||||
await this.initOauth(keycloak);
|
||||
if (keycloak) await this.initOauth(keycloak);
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
console.log(error);
|
||||
}
|
||||
},
|
||||
async signup() {
|
||||
try {
|
||||
const keycloak = await keycloakService.callSignup();
|
||||
if (keycloak)
|
||||
await this.initOauth(keycloak);
|
||||
if (keycloak) await this.initOauth(keycloak);
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
console.log(error);
|
||||
}
|
||||
},
|
||||
// Logout user
|
||||
async logout() {
|
||||
try {
|
||||
await keycloakService.CallLogout(import.meta.env.VITE_APP_URL + "/test");
|
||||
await keycloakService.CallLogout(
|
||||
import.meta.env.VITE_APP_URL + "/test"
|
||||
);
|
||||
await this.clearUserData();
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
@ -58,8 +65,7 @@ const useAuthStore = defineStore("storeAuth", {
|
||||
async refreshUserToken() {
|
||||
try {
|
||||
const keycloak = await keycloakService.CallTokenRefresh();
|
||||
if (keycloak)
|
||||
await this.initOauth(keycloak, false);
|
||||
if (keycloak) await this.initOauth(keycloak, false);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
@ -69,13 +75,13 @@ const useAuthStore = defineStore("storeAuth", {
|
||||
this.authenticated = false;
|
||||
this.user = {
|
||||
token: "",
|
||||
refreshToken: "",
|
||||
username: "",
|
||||
refreshToken: "",
|
||||
username: "",
|
||||
};
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
type AuthStore = ReturnType<typeof useAuthStore>
|
||||
type AuthStore = ReturnType<typeof useAuthStore>;
|
||||
|
||||
export {useAuthStore, type AuthStore}
|
||||
export { useAuthStore, type AuthStore };
|
||||
|
Reference in New Issue
Block a user