fix: show role options based on logged in user's role

(cherry picked from commit 2b1b21d2e20435a1306f03322d050b286e77cc65)
This commit is contained in:
Shariq Ansari 2025-06-17 14:39:56 +05:30 committed by Mergify
parent 142a94e042
commit aac50e1d10

View File

@ -130,7 +130,7 @@ import {
} from 'frappe-ui' } from 'frappe-ui'
import { ref, h, watch, onMounted } from 'vue' import { ref, h, watch, onMounted } from 'vue'
const { users: usersResource, getUserRole } = usersStore() const { users: usersResource, getUserRole, isAdmin, isManager } = usersStore()
const users = createListResource({ const users = createListResource({
doctype: 'CRM User', doctype: 'CRM User',
@ -170,7 +170,7 @@ function getMoreOptions(user) {
function getDropdownOptions(user) { function getDropdownOptions(user) {
const userRole = getUserRole(user.name) const userRole = getUserRole(user.name)
return [ let options = [
{ {
label: __('Admin'), label: __('Admin'),
component: (props) => component: (props) =>
@ -180,6 +180,7 @@ function getDropdownOptions(user) {
selected: userRole === 'System Manager', selected: userRole === 'System Manager',
onClick: () => updateRole(user, 'System Manager'), onClick: () => updateRole(user, 'System Manager'),
}), }),
condition: () => isAdmin(),
}, },
{ {
label: __('Manager'), label: __('Manager'),
@ -190,6 +191,7 @@ function getDropdownOptions(user) {
selected: userRole === 'Sales Manager', selected: userRole === 'Sales Manager',
onClick: () => updateRole(user, 'Sales Manager'), onClick: () => updateRole(user, 'Sales Manager'),
}), }),
condition: () => isManager(),
}, },
{ {
label: __('Sales User'), label: __('Sales User'),
@ -202,6 +204,8 @@ function getDropdownOptions(user) {
}), }),
}, },
] ]
return options.filter((option) => option.condition?.() || true)
} }
function RoleOption({ active, role, onClick, selected }) { function RoleOption({ active, role, onClick, selected }) {