#7995: Added hasAcl to check only one acl #1654
|
@ -30,9 +30,16 @@ export function useAcl() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function hasAcl(model, prop, accessType) {
|
||||||
|
const modelAcl = state.getAcls().value[model];
|
||||||
|
const propAcl = modelAcl?.[prop] || modelAcl?.['*'];
|
||||||
|
return !!(propAcl?.[accessType] || propAcl?.['*']);
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
fetch,
|
fetch,
|
||||||
hasAny,
|
hasAny,
|
||||||
state,
|
state,
|
||||||
|
hasAcl,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,12 +100,8 @@ const onChangePass = (oldPass) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
hasitManagementAccess.value = useAcl().hasAny([
|
hasitManagementAccess.value = useAcl().hasAcl('VnUser', 'higherPrivileges', 'WRITE');
|
||||||
{ model: 'VnUser', props: 'higherPrivileges', accessType: 'WRITE' },
|
hasSysadminAccess.value = useAcl().hasAcl('VnUser', 'adminUser', 'WRITE');
|
||||||
]);
|
|
||||||
hasSysadminAccess.value = useAcl().hasAny([
|
|
||||||
{ model: 'VnUser', props: 'adminUser', accessType: 'WRITE' },
|
|
||||||
]);
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
|
@ -227,7 +223,7 @@ onMounted(() => {
|
||||||
<QItemSection>{{ t('account.card.actions.deactivateUser.name') }}</QItemSection>
|
<QItemSection>{{ t('account.card.actions.deactivateUser.name') }}</QItemSection>
|
||||||
</QItem>
|
</QItem>
|
||||||
<QItem
|
<QItem
|
||||||
v-if="useAcl().hasAny([{ model: 'VnRole', props: '*', accessType: 'WRITE' }])"
|
v-if="useAcl().hasAcl('VnRole', '*', 'WRITE')"
|
||||||
v-ripple
|
v-ripple
|
||||||
clickable
|
clickable
|
||||||
@click="showSyncDialog = true"
|
@click="showSyncDialog = true"
|
||||||
|
|
|
@ -25,7 +25,7 @@ import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.v
|
||||||
const { openConfirmationModal } = useVnConfirm();
|
const { openConfirmationModal } = useVnConfirm();
|
||||||
const { sendEmail, openReport } = usePrintService();
|
const { sendEmail, openReport } = usePrintService();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const { hasAny } = useAcl();
|
const { hasAcl } = useAcl();
|
||||||
|
|
||||||
const quasar = useQuasar();
|
const quasar = useQuasar();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
@ -276,9 +276,7 @@ const showBalancePdf = ({ id }) => {
|
||||||
>
|
>
|
||||||
<VnInput
|
<VnInput
|
||||||
v-model="scope.value"
|
v-model="scope.value"
|
||||||
:disable="
|
:disable="!hasAcl('Receipt', '*', 'WRITE')"
|
||||||
!hasAny([{ model: 'Receipt', props: '*', accessType: 'WRITE' }])
|
|
||||||
"
|
|
||||||
@keypress.enter="scope.set"
|
@keypress.enter="scope.set"
|
||||||
autofocus
|
autofocus
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -25,9 +25,7 @@ const { validate } = useValidator();
|
||||||
const { notify } = useNotify();
|
const { notify } = useNotify();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const canEditZone = useAcl().hasAny([
|
const canEditZone = useAcl().hasAcl('Ticket', 'editZone', 'WRITE');
|
||||||
{ model: 'Ticket', props: 'editZone', accessType: 'WRITE' },
|
|
||||||
]);
|
|
||||||
|
|
||||||
const agencyFetchRef = ref();
|
const agencyFetchRef = ref();
|
||||||
const warehousesOptions = ref([]);
|
const warehousesOptions = ref([]);
|
||||||
|
|
|
@ -55,9 +55,7 @@ const isClaimable = computed(() => {
|
||||||
if (ticket.value) {
|
if (ticket.value) {
|
||||||
const landedPlusWeek = new Date(ticket.value.landed);
|
const landedPlusWeek = new Date(ticket.value.landed);
|
||||||
landedPlusWeek.setDate(landedPlusWeek.getDate() + 7);
|
landedPlusWeek.setDate(landedPlusWeek.getDate() + 7);
|
||||||
const createAfterDeadline = acl.hasAny([
|
const createAfterDeadline = acl.hasAcl('Claim', 'createAfterDeadline', 'WRITE');
|
||||||
{ model: 'Claim', props: 'createAfterDeadline', accessType: 'WRITE' },
|
|
||||||
]);
|
|
||||||
return landedPlusWeek >= Date.vnNew() || createAfterDeadline;
|
return landedPlusWeek >= Date.vnNew() || createAfterDeadline;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -37,7 +37,7 @@ const cloneTravelWithEntries = async () => {
|
||||||
router.push({ name: 'TravelBasicData', params: { id: data.id } });
|
router.push({ name: 'TravelBasicData', params: { id: data.id } });
|
||||||
};
|
};
|
||||||
|
|
||||||
const canDelete = computed(() => useAcl().hasAny('Travel', '*', 'WRITE'));
|
const canDelete = computed(() => useAcl().hasAcl('Travel', '*', 'WRITE'));
|
||||||
|
|
||||||
const openDeleteEntryDialog = (id) => {
|
const openDeleteEntryDialog = (id) => {
|
||||||
quasar
|
quasar
|
||||||
|
|
|
@ -18,9 +18,7 @@ const router = useRouter();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const acl = useAcl();
|
const acl = useAcl();
|
||||||
const canSeeNotes = computed(() =>
|
const canSeeNotes = computed(() => acl.hasAcl('Worker', '__get__business', 'READ'));
|
||||||
acl.hasAny([{ model: 'Worker', props: '__get__business', accessType: 'READ' }]),
|
|
||||||
);
|
|
||||||
const workerIsFreelance = ref();
|
const workerIsFreelance = ref();
|
||||||
const WorkerFreelanceRef = ref();
|
const WorkerFreelanceRef = ref();
|
||||||
const workerCalendarFilterRef = ref(null);
|
const workerCalendarFilterRef = ref(null);
|
||||||
|
|
|
@ -9,7 +9,7 @@ import VnSelect from 'src/components/common/VnSelect.vue';
|
||||||
import { useArrayData } from 'src/composables/useArrayData';
|
import { useArrayData } from 'src/composables/useArrayData';
|
||||||
import FetchData from 'components/FetchData.vue';
|
import FetchData from 'components/FetchData.vue';
|
||||||
|
|
||||||
const { hasAny } = useAcl();
|
const { hasAcl } = useAcl();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const fetchData = ref();
|
const fetchData = ref();
|
||||||
const originaLockerId = ref();
|
const originaLockerId = ref();
|
||||||
|
@ -58,11 +58,7 @@ const init = async (data) => {
|
||||||
option-label="code"
|
option-label="code"
|
||||||
option-value="id"
|
option-value="id"
|
||||||
hide-selected
|
hide-selected
|
||||||
:readonly="
|
:readonly="!hasAcl('Worker', '__get__locker', 'READ')"
|
||||||
!hasAny([
|
|
||||||
{ model: 'Worker', props: '__get__locker', accessType: 'READ' },
|
|
||||||
])
|
|
||||||
"
|
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</FormModel>
|
</FormModel>
|
||||||
|
|
|
@ -68,13 +68,9 @@ const arrayData = useArrayData('Worker');
|
||||||
const acl = useAcl();
|
const acl = useAcl();
|
||||||
const selectedDateYear = computed(() => moment(selectedDate.value).isoWeekYear());
|
const selectedDateYear = computed(() => moment(selectedDate.value).isoWeekYear());
|
||||||
const worker = computed(() => arrayData.store?.data);
|
const worker = computed(() => arrayData.store?.data);
|
||||||
const canSend = computed(() =>
|
const canSend = computed(() => acl.hasAcl('WorkerTimeControl', 'sendMail', 'WRITE'));
|
||||||
acl.hasAny([{ model: 'WorkerTimeControl', props: 'sendMail', accessType: 'WRITE' }]),
|
|
||||||
);
|
|
||||||
const canUpdate = computed(() =>
|
const canUpdate = computed(() =>
|
||||||
acl.hasAny([
|
acl.hasAcl('WorkerTimeControl', 'updateMailState', 'WRITE'),
|
||||||
{ model: 'WorkerTimeControl', props: 'updateMailState', accessType: 'WRITE' },
|
|
||||||
]),
|
|
||||||
);
|
);
|
||||||
const isHimself = computed(() => user.value.id === Number(route.params.id));
|
const isHimself = computed(() => user.value.id === Number(route.params.id));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue