targo-frontend/src/stores/auth-store.ts

40 lines
1.0 KiB
TypeScript

import { computed, ref } from "vue";
import { defineStore } from "pinia";
import { AuthService } from "../modules/auth/services/services-auth";
import type { User } from "src/modules/shared/types/user-interface";
const defaultUser: User = {
firstName: 'Unknown',
lastName: 'Unknown',
email: 'guest@guest.com',
role: 'guest'
};
export const useAuthStore = defineStore('auth', () => {
const user = ref (defaultUser);
const authError = ref("");
const isAuthorizedUser = computed(() => user.value.role !== 'guest');
const login = () => {
//TODO: manage customer login process
};
const oidcLogin = () => {
const oidcPopup = AuthService.oidcLogin();
if (!oidcPopup) {
authError.value = "You have popups blocked on this website!";
}
};
const logout = () => {
user.value = defaultUser;
};
const setUser = (currentUser: User) => {
user.value = currentUser;
};
return { user, authError, isAuthorizedUser, login, oidcLogin, logout, setUser };
});