Add permission descriptions and role defaults to CompanyUsers Create/Edit
- Added form-text blurbs under every permission checkbox on both pages so admins know exactly what each permission unlocks at a glance - Replaced single Accountant default with a full roleDefaults map covering Viewer, Worker, Accountant, and Manager roles - Create page applies defaults on load and on role change (fresh form) - Edit page preserves saved permissions on load; only resets to defaults when the role is explicitly changed Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -119,90 +119,105 @@
|
|||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageJobs" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageJobs" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageJobs" class="form-check-label">Can Manage Jobs</label>
|
<label asp-for="CanManageJobs" class="form-check-label">Can Manage Jobs</label>
|
||||||
|
<div class="form-text text-muted small">Create, edit, and update job status; manage job items, worker assignments, and time entries</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageInventory" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageInventory" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageInventory" class="form-check-label">Can Manage Inventory</label>
|
<label asp-for="CanManageInventory" class="form-check-label">Can Manage Inventory</label>
|
||||||
|
<div class="form-text text-muted small">Add and adjust powder stock, record transactions, manage reorder levels</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageCustomers" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageCustomers" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageCustomers" class="form-check-label">Can Manage Customers</label>
|
<label asp-for="CanManageCustomers" class="form-check-label">Can Manage Customers</label>
|
||||||
|
<div class="form-text text-muted small">Create and edit customer records, pricing tiers, tax exemption, and credit limits</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanCreateQuotes" class="form-check-input permission-checkbox" />
|
<input asp-for="CanCreateQuotes" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanCreateQuotes" class="form-check-label">Can Create Quotes</label>
|
<label asp-for="CanCreateQuotes" class="form-check-label">Can Create Quotes</label>
|
||||||
|
<div class="form-text text-muted small">Build quotes with line items and AI photo quoting; convert accepted quotes to jobs</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanApproveQuotes" class="form-check-input permission-checkbox" />
|
<input asp-for="CanApproveQuotes" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanApproveQuotes" class="form-check-label">Can Approve Quotes</label>
|
<label asp-for="CanApproveQuotes" class="form-check-label">Can Approve Quotes</label>
|
||||||
|
<div class="form-text text-muted small">Accept or reject submitted quotes on behalf of the company</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageCalendar" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageCalendar" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageCalendar" class="form-check-label">Can Manage Calendar</label>
|
<label asp-for="CanManageCalendar" class="form-check-label">Can Manage Calendar</label>
|
||||||
|
<div class="form-text text-muted small">Create, edit, and delete oven schedule batches and calendar events</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanViewCalendar" class="form-check-input permission-checkbox" />
|
<input asp-for="CanViewCalendar" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanViewCalendar" class="form-check-label">Can View Calendar</label>
|
<label asp-for="CanViewCalendar" class="form-check-label">Can View Calendar</label>
|
||||||
|
<div class="form-text text-muted small">View the oven scheduler and job calendar (read-only, no editing)</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageProducts" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageProducts" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageProducts" class="form-check-label">Can Manage Products</label>
|
<label asp-for="CanManageProducts" class="form-check-label">Can Manage Products</label>
|
||||||
|
<div class="form-text text-muted small">Add and edit catalog items, service pricing, and pricing tier configurations</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanViewProducts" class="form-check-input permission-checkbox" />
|
<input asp-for="CanViewProducts" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanViewProducts" class="form-check-label">Can View Products</label>
|
<label asp-for="CanViewProducts" class="form-check-label">Can View Products</label>
|
||||||
|
<div class="form-text text-muted small">Browse the service catalog and inventory items (read-only, no editing)</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageEquipment" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageEquipment" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageEquipment" class="form-check-label">Can Manage Equipment</label>
|
<label asp-for="CanManageEquipment" class="form-check-label">Can Manage Equipment</label>
|
||||||
|
<div class="form-text text-muted small">Add and update equipment records, track status changes and operating costs</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageVendors" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageVendors" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageVendors" class="form-check-label">Can Manage Vendors</label>
|
<label asp-for="CanManageVendors" class="form-check-label">Can Manage Vendors</label>
|
||||||
|
<div class="form-text text-muted small">Add and edit vendor/supplier records, payment terms, and contact information</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageMaintenance" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageMaintenance" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageMaintenance" class="form-check-label">Can Manage Maintenance</label>
|
<label asp-for="CanManageMaintenance" class="form-check-label">Can Manage Maintenance</label>
|
||||||
|
<div class="form-text text-muted small">Schedule and record equipment maintenance tasks, assign technicians, log parts used</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageInvoices" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageInvoices" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageInvoices" class="form-check-label">Can Manage Invoices</label>
|
<label asp-for="CanManageInvoices" class="form-check-label">Can Manage Invoices</label>
|
||||||
|
<div class="form-text text-muted small">Create invoices, record payments, send to customers, issue voids and write-offs</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanViewReports" class="form-check-input permission-checkbox" />
|
<input asp-for="CanViewReports" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanViewReports" class="form-check-label">Can View Reports</label>
|
<label asp-for="CanViewReports" class="form-check-label">Can View Reports</label>
|
||||||
|
<div class="form-text text-muted small">Access financial and operational reports, analytics dashboards, and data exports</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageBills" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageBills" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageBills" class="form-check-label">Can Manage Bills & AP</label>
|
<label asp-for="CanManageBills" class="form-check-label">Can Manage Bills & AP</label>
|
||||||
|
<div class="form-text text-muted small">Enter and pay vendor bills, manage purchase orders and accounts payable</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
@@ -237,32 +252,33 @@
|
|||||||
const permissionCheckboxes = document.querySelectorAll('.permission-checkbox');
|
const permissionCheckboxes = document.querySelectorAll('.permission-checkbox');
|
||||||
const adminAlert = document.getElementById('companyAdminAlert');
|
const adminAlert = document.getElementById('companyAdminAlert');
|
||||||
|
|
||||||
const accountantDefaults = ['CanManageInvoices', 'CanViewReports', 'CanManageVendors', 'CanManageBills', 'CanManageAccounting'];
|
const roleDefaults = {
|
||||||
|
'Viewer': ['CanViewCalendar', 'CanViewProducts'],
|
||||||
|
'Worker': ['CanManageJobs', 'CanViewCalendar', 'CanViewProducts'],
|
||||||
|
'Accountant': ['CanManageInvoices', 'CanViewReports', 'CanManageVendors', 'CanManageBills', 'CanManageAccounting'],
|
||||||
|
'Manager': ['CanManageJobs', 'CanManageInventory', 'CanManageCustomers', 'CanCreateQuotes', 'CanApproveQuotes',
|
||||||
|
'CanManageCalendar', 'CanViewCalendar', 'CanManageProducts', 'CanViewProducts',
|
||||||
|
'CanManageEquipment', 'CanManageVendors', 'CanManageMaintenance', 'CanManageInvoices',
|
||||||
|
'CanViewReports', 'CanManageBills']
|
||||||
|
};
|
||||||
|
|
||||||
function updatePermissionState() {
|
function updatePermissionState() {
|
||||||
const role = roleSelect.value;
|
const role = roleSelect.value;
|
||||||
const isCompanyAdmin = role === 'CompanyAdmin';
|
const isCompanyAdmin = role === 'CompanyAdmin';
|
||||||
const isAccountant = role === 'Accountant';
|
|
||||||
|
|
||||||
adminAlert.style.display = isCompanyAdmin ? 'block' : 'none';
|
adminAlert.style.display = isCompanyAdmin ? 'block' : 'none';
|
||||||
|
const defaults = roleDefaults[role] || [];
|
||||||
permissionCheckboxes.forEach(checkbox => {
|
permissionCheckboxes.forEach(checkbox => {
|
||||||
if (isCompanyAdmin) {
|
if (isCompanyAdmin) {
|
||||||
checkbox.checked = true;
|
checkbox.checked = true;
|
||||||
checkbox.disabled = true;
|
checkbox.disabled = true;
|
||||||
} else {
|
} else {
|
||||||
checkbox.disabled = false;
|
checkbox.disabled = false;
|
||||||
if (isAccountant) {
|
checkbox.checked = defaults.includes(checkbox.id);
|
||||||
checkbox.checked = accountantDefaults.includes(checkbox.id);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run on page load
|
|
||||||
updatePermissionState();
|
updatePermissionState();
|
||||||
|
|
||||||
// Run when role changes
|
|
||||||
roleSelect.addEventListener('change', updatePermissionState);
|
roleSelect.addEventListener('change', updatePermissionState);
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -136,90 +136,105 @@
|
|||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageJobs" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageJobs" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageJobs" class="form-check-label">Can Manage Jobs</label>
|
<label asp-for="CanManageJobs" class="form-check-label">Can Manage Jobs</label>
|
||||||
|
<div class="form-text text-muted small">Create, edit, and update job status; manage job items, worker assignments, and time entries</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageInventory" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageInventory" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageInventory" class="form-check-label">Can Manage Inventory</label>
|
<label asp-for="CanManageInventory" class="form-check-label">Can Manage Inventory</label>
|
||||||
|
<div class="form-text text-muted small">Add and adjust powder stock, record transactions, manage reorder levels</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageCustomers" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageCustomers" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageCustomers" class="form-check-label">Can Manage Customers</label>
|
<label asp-for="CanManageCustomers" class="form-check-label">Can Manage Customers</label>
|
||||||
|
<div class="form-text text-muted small">Create and edit customer records, pricing tiers, tax exemption, and credit limits</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanCreateQuotes" class="form-check-input permission-checkbox" />
|
<input asp-for="CanCreateQuotes" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanCreateQuotes" class="form-check-label">Can Create Quotes</label>
|
<label asp-for="CanCreateQuotes" class="form-check-label">Can Create Quotes</label>
|
||||||
|
<div class="form-text text-muted small">Build quotes with line items and AI photo quoting; convert accepted quotes to jobs</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanApproveQuotes" class="form-check-input permission-checkbox" />
|
<input asp-for="CanApproveQuotes" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanApproveQuotes" class="form-check-label">Can Approve Quotes</label>
|
<label asp-for="CanApproveQuotes" class="form-check-label">Can Approve Quotes</label>
|
||||||
|
<div class="form-text text-muted small">Accept or reject submitted quotes on behalf of the company</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageCalendar" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageCalendar" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageCalendar" class="form-check-label">Can Manage Calendar</label>
|
<label asp-for="CanManageCalendar" class="form-check-label">Can Manage Calendar</label>
|
||||||
|
<div class="form-text text-muted small">Create, edit, and delete oven schedule batches and calendar events</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanViewCalendar" class="form-check-input permission-checkbox" />
|
<input asp-for="CanViewCalendar" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanViewCalendar" class="form-check-label">Can View Calendar</label>
|
<label asp-for="CanViewCalendar" class="form-check-label">Can View Calendar</label>
|
||||||
|
<div class="form-text text-muted small">View the oven scheduler and job calendar (read-only, no editing)</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageProducts" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageProducts" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageProducts" class="form-check-label">Can Manage Products</label>
|
<label asp-for="CanManageProducts" class="form-check-label">Can Manage Products</label>
|
||||||
|
<div class="form-text text-muted small">Add and edit catalog items, service pricing, and pricing tier configurations</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanViewProducts" class="form-check-input permission-checkbox" />
|
<input asp-for="CanViewProducts" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanViewProducts" class="form-check-label">Can View Products</label>
|
<label asp-for="CanViewProducts" class="form-check-label">Can View Products</label>
|
||||||
|
<div class="form-text text-muted small">Browse the service catalog and inventory items (read-only, no editing)</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageEquipment" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageEquipment" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageEquipment" class="form-check-label">Can Manage Equipment</label>
|
<label asp-for="CanManageEquipment" class="form-check-label">Can Manage Equipment</label>
|
||||||
|
<div class="form-text text-muted small">Add and update equipment records, track status changes and operating costs</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageVendors" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageVendors" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageVendors" class="form-check-label">Can Manage Vendors</label>
|
<label asp-for="CanManageVendors" class="form-check-label">Can Manage Vendors</label>
|
||||||
|
<div class="form-text text-muted small">Add and edit vendor/supplier records, payment terms, and contact information</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageMaintenance" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageMaintenance" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageMaintenance" class="form-check-label">Can Manage Maintenance</label>
|
<label asp-for="CanManageMaintenance" class="form-check-label">Can Manage Maintenance</label>
|
||||||
|
<div class="form-text text-muted small">Schedule and record equipment maintenance tasks, assign technicians, log parts used</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageInvoices" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageInvoices" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageInvoices" class="form-check-label">Can Manage Invoices</label>
|
<label asp-for="CanManageInvoices" class="form-check-label">Can Manage Invoices</label>
|
||||||
|
<div class="form-text text-muted small">Create invoices, record payments, send to customers, issue voids and write-offs</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanViewReports" class="form-check-input permission-checkbox" />
|
<input asp-for="CanViewReports" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanViewReports" class="form-check-label">Can View Reports</label>
|
<label asp-for="CanViewReports" class="form-check-label">Can View Reports</label>
|
||||||
|
<div class="form-text text-muted small">Access financial and operational reports, analytics dashboards, and data exports</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input asp-for="CanManageBills" class="form-check-input permission-checkbox" />
|
<input asp-for="CanManageBills" class="form-check-input permission-checkbox" />
|
||||||
<label asp-for="CanManageBills" class="form-check-label">Can Manage Bills & AP</label>
|
<label asp-for="CanManageBills" class="form-check-label">Can Manage Bills & AP</label>
|
||||||
|
<div class="form-text text-muted small">Enter and pay vendor bills, manage purchase orders and accounts payable</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
@@ -263,39 +278,45 @@
|
|||||||
const adminAlert = document.getElementById('companyAdminAlert');
|
const adminAlert = document.getElementById('companyAdminAlert');
|
||||||
const isSuperAdmin = @((ViewBag.IsSuperAdmin as bool? ?? false) ? "true" : "false");
|
const isSuperAdmin = @((ViewBag.IsSuperAdmin as bool? ?? false) ? "true" : "false");
|
||||||
|
|
||||||
const accountantDefaults = ['CanManageInvoices', 'CanViewReports', 'CanManageVendors', 'CanManageBills', 'CanManageAccounting'];
|
const roleDefaults = {
|
||||||
|
'Viewer': ['CanViewCalendar', 'CanViewProducts'],
|
||||||
|
'Worker': ['CanManageJobs', 'CanViewCalendar', 'CanViewProducts'],
|
||||||
|
'Accountant': ['CanManageInvoices', 'CanViewReports', 'CanManageVendors', 'CanManageBills', 'CanManageAccounting'],
|
||||||
|
'Manager': ['CanManageJobs', 'CanManageInventory', 'CanManageCustomers', 'CanCreateQuotes', 'CanApproveQuotes',
|
||||||
|
'CanManageCalendar', 'CanViewCalendar', 'CanManageProducts', 'CanViewProducts',
|
||||||
|
'CanManageEquipment', 'CanManageVendors', 'CanManageMaintenance', 'CanManageInvoices',
|
||||||
|
'CanViewReports', 'CanManageBills']
|
||||||
|
};
|
||||||
|
|
||||||
function updatePermissionState() {
|
// On page load: only lock CompanyAdmin; preserve saved permission values for other roles.
|
||||||
const role = roleSelect.value;
|
function initPermissionLock() {
|
||||||
const isCompanyAdmin = role === 'CompanyAdmin';
|
if (isSuperAdmin) return;
|
||||||
const isAccountant = role === 'Accountant';
|
const isCompanyAdmin = roleSelect.value === 'CompanyAdmin';
|
||||||
|
adminAlert.style.display = isCompanyAdmin ? 'block' : 'none';
|
||||||
if (isSuperAdmin) {
|
if (isCompanyAdmin) {
|
||||||
adminAlert.style.display = 'none';
|
permissionCheckboxes.forEach(cb => { cb.checked = true; cb.disabled = true; });
|
||||||
permissionCheckboxes.forEach(checkbox => { checkbox.disabled = false; });
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// On role change: apply role defaults so the admin gets a sensible starting point.
|
||||||
|
function applyRoleDefaults() {
|
||||||
|
const role = roleSelect.value;
|
||||||
|
const isCompanyAdmin = role === 'CompanyAdmin';
|
||||||
adminAlert.style.display = isCompanyAdmin ? 'block' : 'none';
|
adminAlert.style.display = isCompanyAdmin ? 'block' : 'none';
|
||||||
|
const defaults = roleDefaults[role] || [];
|
||||||
permissionCheckboxes.forEach(checkbox => {
|
permissionCheckboxes.forEach(checkbox => {
|
||||||
if (isCompanyAdmin) {
|
if (isCompanyAdmin) {
|
||||||
checkbox.checked = true;
|
checkbox.checked = true;
|
||||||
checkbox.disabled = true;
|
checkbox.disabled = true;
|
||||||
} else {
|
} else {
|
||||||
checkbox.disabled = false;
|
checkbox.disabled = false;
|
||||||
if (isAccountant) {
|
checkbox.checked = defaults.includes(checkbox.id);
|
||||||
checkbox.checked = accountantDefaults.includes(checkbox.id);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run on page load
|
initPermissionLock();
|
||||||
updatePermissionState();
|
roleSelect.addEventListener('change', applyRoleDefaults);
|
||||||
|
|
||||||
// Run when role changes
|
|
||||||
roleSelect.addEventListener('change', updatePermissionState);
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user