feat: function that tells if an authentified person is an admin
This commit is contained in:
parent
09eeaacfa6
commit
32de0d6ca8
@ -5,6 +5,7 @@ import { createPinia } from "pinia";
|
|||||||
import piniaPluginPersistedstate from "pinia-plugin-persistedstate";
|
import piniaPluginPersistedstate from "pinia-plugin-persistedstate";
|
||||||
import keycloakService from "./services/keycloak";
|
import keycloakService from "./services/keycloak";
|
||||||
import { type AuthStore, useAuthStore } from "@/stores/authStore.ts";
|
import { type AuthStore, useAuthStore } from "@/stores/authStore.ts";
|
||||||
|
import { jwtDecode } from "jwt-decode";
|
||||||
|
|
||||||
let store: AuthStore;
|
let store: AuthStore;
|
||||||
|
|
||||||
@ -28,6 +29,32 @@ keycloakService.CallInit(() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
type TokenPayload = {
|
||||||
|
realm_access?: {
|
||||||
|
roles?: string[];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
function isAdmin(){
|
||||||
|
if (store.authenticated && store.user.token) {
|
||||||
|
try {
|
||||||
|
const decoded = jwtDecode<TokenPayload>(store.user.token);
|
||||||
|
const roles = decoded.realm_access?.roles || [];
|
||||||
|
|
||||||
|
if (roles.includes("MyINPulse-admin")) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.error("Failed to decode token", err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// this shit made by me so i can run the canva vue app
|
// this shit made by me so i can run the canva vue app
|
||||||
//createApp(App).use(router).mount('#app');
|
//createApp(App).use(router).mount('#app');
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user