shell bypass 403
<template>
<div class="am-page-header am-section">
<el-row :type="($router.currentRoute.name === 'wpamelia-calendar') ? '' : 'flex'" align="middle">
<el-col :span="($router.currentRoute.name === 'wpamelia-calendar') ? 6 : 18">
<!-- Logo -->
<div class="am-logo">
<img width="92" class="logo-big" :src="$root.getUrl + 'public/img/amelia-logo-horizontal.svg'">
<img width="28" class="logo-small" :src="$root.getUrl + 'public/img/amelia-logo-symbol.svg'">
</div>
<!-- /Logo -->
<!-- Title -->
<h1 class="am-page-title">
{{ bookableType ? $root.labels[bookableType] : $router.currentRoute.meta.title }}
<!-- Appointments -->
<span class="am-appointments-number approved" v-if="appointmentsApproved >= 0">
{{ appointmentsApproved }}
</span>
<!-- /Appointments -->
<span class="am-appointments-number pending" v-if="appointmentsPending >= 0">
{{ appointmentsPending }}
</span>
<!-- Employees -->
<span v-if="employeesTotal >= 0 && $root.settings.capabilities.canReadOthers === true">
<span class="total-number">{{ employeesTotal }}</span> {{ $root.labels.total }}
</span>
<!-- /Employees -->
<!-- Customers -->
<span v-if="customersTotal >= 0">
<span class="total-number">{{ customersTotal }}</span> {{ $root.labels.total }}
</span>
<!-- /Customers -->
<!-- Locations -->
<span v-if="locationsTotal >= 0">
<span class="total-number">{{ locationsTotal }}</span> {{ $root.labels.total }}
</span>
<!-- Services -->
<span v-if="servicesTotal >= 0 && bookableType === 'services'">
<span class="total-number">{{ servicesTotal }}</span> {{ $root.labels.total }}
</span>
<!-- Packages -->
<span v-if="packagesTotal >= 0 && bookableType === 'packages'">
<span class="total-number">{{ packagesTotal }}</span> {{ $root.labels.total }}
</span>
<!-- Resources -->
<span v-if="resourcesTotal >= 0 && bookableType === 'resources'">
<span class="total-number">{{ resourcesTotal }}</span> {{ $root.labels.total }}
</span>
<!-- Finance -->
<span v-if="financeTotal >= 0">
<span class="total-number">{{ financeTotal }}</span> {{ $root.labels.total }}
</span>
</h1>
<!-- /Title -->
</el-col>
<!-- Buttons and Filters -->
<el-col
:span="($router.currentRoute.name === 'wpamelia-calendar') ? 18 : 6"
class="align-right v-calendar-column"
>
<!-- New Appointment -->
<el-button
v-if="$router.currentRoute.name === 'wpamelia-appointments' && ($root.settings.capabilities.canWriteOthers === true || (this.$root.settings.role === 'provider' && this.$root.settings.roles.allowWriteAppointments))"
type="primary"
@click="showDialogAppointment" class="am-dialog-create"
>
<i class="el-icon-plus"></i> <span class="button-text">{{ $root.labels.new_appointment }}</span>
</el-button>
<!-- New Event -->
<el-button
v-if="$router.currentRoute.name === 'wpamelia-events' && ($root.settings.capabilities.canWriteOthers === true || (this.$root.settings.role === 'provider' && this.$root.settings.roles.allowWriteEvents))"
type="primary"
@click="showDialogEvent" class="am-dialog-create"
>
<i class="el-icon-plus"></i> <span class="button-text">{{ $root.labels.new_event }}</span>
</el-button>
<!-- Add Employee -->
<el-button
v-if="$router.currentRoute.name === 'wpamelia-employees' && $root.settings.capabilities.canWrite === true && $root.settings.capabilities.canWriteOthers === true"
type="primary" @click="showDialogEmployee"
class="am-dialog-create"
>
<i class="el-icon-plus"></i> <span class="button-text">{{ $root.labels.add_employee }}</span>
</el-button>
<!-- Add Customer -->
<el-button
v-if="$router.currentRoute.name === 'wpamelia-customers' && $root.settings.capabilities.canWrite === true"
type="primary" @click="showDialogCustomer"
class="am-dialog-create"
>
<i class="el-icon-plus"></i> <span class="button-text">{{ $root.labels.add_customer }}</span>
</el-button>
<!-- Add Location -->
<el-button
v-if="$router.currentRoute.name === 'wpamelia-locations' && $root.settings.capabilities.canWrite === true"
type="primary" @click="showDialogLocation"
class="am-dialog-create"
:class="licenceClassDisabled()"
:disabled="notInLicence()"
>
<i class="el-icon-plus"></i> <span class="button-text">{{ $root.labels.add_location }}</span>
</el-button>
<!-- Add Service -->
<el-button
v-if="$router.currentRoute.name === 'wpamelia-services' && categoriesTotal > 0 && $root.settings.capabilities.canWrite === true && bookableType === 'services'"
type="primary"
@click="showDialogService"
class="am-dialog-create"
>
<i class="el-icon-plus"></i> <span class="button-text">{{ $root.labels.add_service }}</span>
</el-button>
<!-- Add Package -->
<el-button
v-if="$router.currentRoute.name === 'wpamelia-services' && $root.settings.capabilities.canWrite === true && bookableType === 'packages'"
type="primary"
@click="packagesTotal >= 0 ? showDialogPackage() : showDialogPackageBooking()"
class="am-dialog-create"
:class="licenceClassDisabled('pro')"
:disabled="notInLicence('pro')"
>
<i class="el-icon-plus"></i> <span class="button-text">{{ packagesTotal >= 0 ? $root.labels.add_package : $root.labels.book_package }}</span>
</el-button>
<!-- Add Resource -->
<el-button
v-if="$router.currentRoute.name === 'wpamelia-services' && $root.settings.capabilities.canWrite === true && bookableType === 'resources'"
type="primary"
@click="showDialogResource()"
class="am-dialog-create"
:class="licenceClassDisabled('pro')"
:disabled="notInLicence('pro')"
>
<i class="el-icon-plus"></i> <span class="button-text">{{ $root.labels.add_resource }}</span>
</el-button>
<!-- New Tax -->
<el-button
v-if="$router.currentRoute.name === 'wpamelia-finance' && addNewTaxBtnDisplay && $root.settings.capabilities.canWrite === true"
type="primary"
@click="showDialogTax"
class="am-dialog-create"
:class="licenceClassDisabled()"
:disabled="notInLicence()"
>
<i class="el-icon-plus"></i> <span class="button-text">{{ $root.labels.new_tax }}</span>
</el-button>
<!-- New Coupon -->
<el-button
v-if="$router.currentRoute.name === 'wpamelia-finance' && addNewCouponBtnDisplay && $root.settings.capabilities.canWrite === true"
type="primary"
@click="showDialogCoupon"
class="am-dialog-create"
:class="licenceClassDisabled('starter')"
:disabled="notInLicence('starter')"
>
<i class="el-icon-plus"></i> <span class="button-text">{{ $root.labels.new_coupon }}</span>
</el-button>
<!-- New Custom Field -->
<transition name="fade">
<el-button
v-if="$router.currentRoute.name === 'wpamelia-cf' && addNewCustomFieldBtnDisplay"
type="primary"
@click="showDialogCustomFields" class="am-dialog-create"
>
<i class="el-icon-plus"></i> <span class="button-text">{{ $root.labels.add_custom_field }}</span>
</el-button>
</transition>
<!-- Dashboard Datepicker -->
<div class="v-calendar-column" v-if="$router.currentRoute.name === 'wpamelia-dashboard'">
<div class="el-form-item__content">
<v-date-picker
v-model="params.dates"
@input="changeFilter"
mode='range'
popover-visibility="focus"
popover-direction="bottom"
popover-align="right"
tint-color='#1A84EE'
:show-day-popover=false
:input-props='{class: "el-input__inner"}'
:is-expanded=false
:is-required=true
input-class="el-input__inner"
:formats="vCalendarFormats"
:is-double-paned="true"
>
</v-date-picker>
</div>
</div>
<div v-if="$router.currentRoute.name === 'wpamelia-calendar'" class="am-calendar-header-filters">
<el-form :inline="true" class="demo-form-inline">
<!-- Service Filter -->
<el-form-item :label="$root.labels.services + ':'">
<el-select
v-model="params.services"
multiple
filterable
collapse-tags
:loading=!fetched
:placeholder="$root.labels.all_services"
@change="changeFilter"
>
<div
v-for="category in categories"
:key="category.id"
>
<div
class="am-drop-parent"
@click="selectAllInCategory(category.id)"
>
<span>{{ category.name }}</span>
</div>
<el-option
v-for="service in category.serviceList"
:key="service.id"
:label="service.name"
:value="service.id"
class="am-drop-child"
>
</el-option>
</div>
</el-select>
</el-form-item>
<!-- Location Filter -->
<el-form-item :label="$root.labels.locations + ':'" v-show="locations.length">
<el-select
v-model="params.locations"
multiple
clearable
collapse-tags
:placeholder="$root.labels.all_locations"
:loading=!fetched
@change="changeFilter"
>
<el-option
v-for="location in locations"
:key="location.id"
:label="location.name"
:value="location.id"
>
</el-option>
</el-select>
</el-form-item>
</el-form>
<!-- New Appointment -->
<el-button
v-if="$router.currentRoute.name === 'wpamelia-calendar' && ($root.settings.role === 'admin' || $root.settings.role === 'manager' || ($root.settings.role === 'provider' && $root.settings.roles.allowWriteAppointments))"
type="primary"
@click="showDialogAppointment" class="am-dialog-create"
>
<i class="el-icon-plus"></i> <span class="button-text">{{ $root.labels.new_appointment }}</span>
</el-button>
</div>
<div v-if="oldCustomize && $router.currentRoute.name === 'wpamelia-customize'" class="am-calendar-header-filters">
<!-- Go Back -->
<el-button
type="primary"
@click="showMainCustomize" class="am-dialog-create"
>
<span class="button-text">{{ $root.labels.go_back }}</span>
</el-button>
</div>
</el-col>
</el-row>
</div>
</template>
<script>
import licenceMixin from '../../../js/common/mixins/licenceMixin'
import dateMixin from '../../../js/common/mixins/dateMixin'
import imageMixin from '../../../js/common/mixins/imageMixin'
export default {
mixins: [
licenceMixin,
dateMixin,
imageMixin
],
props: [
'oldCustomize',
'appointmentsApproved',
'appointmentsPending',
'employeesTotal',
'customersTotal',
'locationsTotal',
'packagesTotal',
'resourcesTotal',
'servicesTotal',
'categoriesTotal',
'financeTotal',
'addNewTaxBtnDisplay',
'addNewCouponBtnDisplay',
'addNewCustomFieldBtnDisplay',
'locations',
'categories',
'bookableType',
'params',
'fetched'
],
methods: {
showMainCustomize () {
this.$emit('showMainCustomize', null)
},
showDialogCustomer () {
this.$emit('newCustomerBtnClicked', null)
},
showDialogAppointment () {
this.$emit('newAppointmentBtnClicked', null)
},
showDialogEvent () {
this.$emit('newEventBtnClicked', null)
},
showDialogEmployee () {
this.$emit('newEmployeeBtnClicked')
},
showDialogLocation () {
this.$emit('newLocationBtnClicked')
},
showDialogService () {
this.$emit('newServiceBtnClicked')
},
showDialogPackage () {
this.$emit('newPackageBtnClicked')
},
showDialogPackageBooking () {
this.$emit('newPackageBookingBtnClicked')
},
showDialogResource () {
this.$emit('newResourceBtnClicked')
},
showDialogTax () {
this.$emit('newTaxBtnClicked')
},
showDialogCoupon () {
this.$emit('newCouponBtnClicked')
},
showDialogCustomFields () {
this.$emit('newCustomFieldBtnClicked')
},
selectAllInCategory (id) {
this.$emit('selectAllInCategory', id)
},
changeFilter () {
this.$emit('changeFilter')
}
}
}
</script>