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