import { Admin } from 'pocketbase'; import { PocketbaseService } from './pocketbase.service'; import { useEventBus } from '@vueuse/core'; const API = PocketbaseService.getApi(); export class AuthService { public static isAdmin(): boolean { if(API.authStore.isValid && API.authStore.model) { return !API.authStore.model.collectionId; } this.logout(); return false; } public static getAdmin(): Admin { if(this.isAdmin()) { return API.authStore.model as Admin; } throw new Error('Not authenticated'); } public static async loginAsAdmin(email: string, password: string): Promise { const response = await API.admins.authWithPassword(email, password); if(response) { useEventBus('isAdmin').emit(true); return response.admin; } throw new Error('Invalid credentials'); } public static logout(): void { API.authStore.clear(); useEventBus('isAdmin').emit(false); } }