Some small difference with Nuxt3’s use of plugins.
First of all we need to use defineNuxtPlugin()
.
// plugins/userHasAccess.ts
export default defineNuxtPlugin(() => {
return {
provide: {
// params can be added here
userHasAccess: (user: User, access: string | string[]) => {
if (typeof access === "string") {
return user?.roles?.includes(access);
} else {
return user?.roles?.some((r) => access.includes(r));
}
},
},
};
});
The plugins are already registered globally for use.
// pages/index.vue
<template>
<div v-if="$userHasAccess(user, 'ROLE_NEEDED')">
I can be seen
</div>
</template>
<script setup lang="ts">
const { $userHasAccess } = useNuxtApp();
import { useAuthStore } from "~/store/auth";
const authStore = useAuthStore();
const { user } = storeToRefs(authStore);
</script>
The user object looks like —
{
"email" : "yourmemail@company.com",
"roles" : ["ROLE_NEEDED"]
}
Leave a Reply