40 lines
1.0 KiB
TypeScript
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 };
|
|
});
|
|
|