I have laravel/vue.js application which upon first page load returns structure like this
<script>
window.settings = {};
window.settings.user = {};
window.settings.user.timezone = 'Europe/Moscow';
window.settings.user.permissions = {"user.create":false,"user.show":true,"user.update":false};
</script>
And there will be many permissions.
What is the best place to put function which will be used on every page?
This function checks if current user (based on windows.settings.user.permissions
) can do something.
I think I can place it inside VueX
const store = new Vuex.Store({
getters: {
currentUserCan(perm) {
return window.settings.user.permissions[perm];
}
});
And then in template
<div v-if='$store.getters.currentUserCan("user.create")'>
<a href='#' @click.prevent='createUser'>Create new user</a>
</div>
May be there is a better solution?
P.S.
Here is how settings are returned from laravel (header of any page)
@if (Auth::user())
<script>
window.settings = {};
window.settings.user = {};
window.settings.user.timezone = '{{ Auth::user()->timezone }}';
window.settings.user.permissions = {!! json_encode(Auth::user()->getAllPermissions()); !!};
</script>
@endif