More auth / role checks for navlinks
This commit is contained in:
@@ -1,25 +1,35 @@
|
||||
import { defineStore } from 'pinia';
|
||||
import { ID, account, functions, teams } from 'boot/appwrite';
|
||||
import { ExecutionMethod, OAuthProvider, type Models } from 'appwrite';
|
||||
import { ref } from 'vue';
|
||||
import { computed, ref } from 'vue';
|
||||
|
||||
export const useAuthStore = defineStore('auth', () => {
|
||||
const currentUser = ref<Models.User<Models.Preferences> | null>(null);
|
||||
const currentUserTeams = ref<Models.TeamList<Models.Preferences> | null>(
|
||||
null
|
||||
);
|
||||
const userNames = ref<Record<string, string>>({});
|
||||
|
||||
async function init() {
|
||||
try {
|
||||
currentUser.value = await account.get();
|
||||
currentUserTeams.value = await teams.list();
|
||||
} catch {
|
||||
currentUser.value = null;
|
||||
currentUserTeams.value = null;
|
||||
}
|
||||
}
|
||||
|
||||
const hasRequiredRole = async (requiredRoles: string[]): Promise<boolean> => {
|
||||
const userTeams = await teams.list();
|
||||
const userTeamNames = userTeams.teams.map((team) => team.name);
|
||||
console.log(requiredRoles.some((role) => userTeamNames.includes(role)));
|
||||
return requiredRoles.some((role) => userTeamNames.includes(role));
|
||||
const currentUserTeamNames = computed(() =>
|
||||
currentUserTeams.value
|
||||
? currentUserTeams.value.teams.map((team) => team.name)
|
||||
: []
|
||||
);
|
||||
|
||||
const hasRequiredRole = (requiredRoles: string[]): boolean => {
|
||||
return requiredRoles.some((role) =>
|
||||
currentUserTeamNames.value.includes(role)
|
||||
);
|
||||
};
|
||||
|
||||
async function register(email: string, password: string) {
|
||||
@@ -28,8 +38,9 @@ export const useAuthStore = defineStore('auth', () => {
|
||||
}
|
||||
async function login(email: string, password: string) {
|
||||
await account.createEmailPasswordSession(email, password);
|
||||
currentUser.value = await account.get();
|
||||
init();
|
||||
}
|
||||
|
||||
async function googleLogin() {
|
||||
account.createOAuth2Session(
|
||||
OAuthProvider.Google,
|
||||
|
||||
Reference in New Issue
Block a user