forked from Kispi/Core
All checks were successful
continuous-integration/drone/push Build is passing
33 lines
No EOL
975 B
TypeScript
33 lines
No EOL
975 B
TypeScript
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<Admin> {
|
|
const response = await API.admins.authWithPassword(email, password);
|
|
if(response) {
|
|
useEventBus<boolean>('isAdmin').emit(true);
|
|
return response.admin;
|
|
}
|
|
throw new Error('Invalid credentials');
|
|
}
|
|
public static logout(): void {
|
|
API.authStore.clear();
|
|
useEventBus<boolean>('isAdmin').emit(false);
|
|
}
|
|
} |