Team based role auth for routes
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user