Team based role auth for routes

This commit is contained in:
2024-05-23 09:32:22 -04:00
parent 55bc1acbb3
commit c03ad48615
6 changed files with 63 additions and 26 deletions

View File

@@ -1,5 +1,5 @@
import { defineStore } from 'pinia';
import { ID, account, functions } from 'boot/appwrite';
import { ID, account, functions, teams } from 'boot/appwrite';
import { ExecutionMethod, OAuthProvider, type Models } from 'appwrite';
import { ref } from 'vue';
@@ -15,6 +15,13 @@ export const useAuthStore = defineStore('auth', () => {
}
}
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));
};
async function register(email: string, password: string) {
await account.create(ID.unique(), email, password);
return await login(email, password);
@@ -65,6 +72,7 @@ export const useAuthStore = defineStore('auth', () => {
return {
currentUser,
getUserNameById,
hasRequiredRole,
register,
login,
googleLogin,