Added page visibility configurability.

This commit is contained in:
mmihaly
2023-12-21 19:19:36 -07:00
parent 40c9b41805
commit 3bf58308ff
3 changed files with 40 additions and 8 deletions

View File

@@ -29,6 +29,7 @@
<script>
import IconBurger from '@/assets/interface-icons/burger-menu.svg';
import { makePageSlug } from '@/utils/ConfigHelpers';
import { checkPageVisibility } from '@/utils/CheckPageVisibility';
export default {
name: 'Nav',
@@ -45,10 +46,11 @@ export default {
computed: {
/* Get links to sub-pages, and combine with nav-links */
allLinks() {
const subPages = this.$store.getters.pages.map((subPage) => ({
path: makePageSlug(subPage.name, 'home'),
title: subPage.name,
}));
const subPages = this.$store.getters.pages.filter((page) => checkPageVisibility(page))
.map((subPage) => ({
path: makePageSlug(subPage.name, 'home'),
title: subPage.name,
}));
const navLinks = this.links || [];
return [...navLinks, ...subPages];
},

View File

@@ -0,0 +1,18 @@
/**
* A helper function that checks if a page is visible based on current users permissions
* Checks a page's displayData for hideForUsers, showForUsers and hideForGuests
* Returns a boolean that determines if the user has the required permissions
*/
// Import helper functions from auth, to get current user, and check if guest
import { getCurrentUser } from '@/utils/Auth';
import { isVisibleToUser } from '@/utils/IsVisibleToUser';
/* Putting it all together, the function to export */
export const checkPageVisibility = (page) => {
const currentUser = getCurrentUser(); // Get current user object
const displayData = page.displayData || {};
return isVisibleToUser(displayData, currentUser);
};
export default checkPageVisibility;