diff --git a/src/views/SettingsView.vue b/src/views/SettingsView.vue index 7f32bf1..a387bb4 100644 --- a/src/views/SettingsView.vue +++ b/src/views/SettingsView.vue @@ -5,6 +5,7 @@ import { apiClient, tryRequest } from '@services/ApiService' import ModalBox from '@components/ModalBox.vue' import SidePanel from '@components/SidePanel.vue' import type { Status, UserCreate, UserResponse, UserUpdate } from 'ccat-api' +import { Listbox, ListboxButton, ListboxOptions, ListboxOption } from '@headlessui/vue' const getStatus = async () => { const result = await tryRequest(apiClient?.api?.status.home(), 'Getting Cheshire Cat status', 'Unable to fetch Cheshire Cat status') @@ -13,7 +14,7 @@ const getStatus = async () => { const { state: cat } = useAsyncState(getStatus, {} as Status, { resetOnExecute: false }) const userStore = useUsers() -const { can, cannot } = usePerms() +const { can, cannot } = usePerms(), updateList = ref(1) const { deleteUser, updateUser, createUser } = userStore const { currentState, availablePerms } = storeToRefs(userStore) const currentUser = ref() @@ -56,6 +57,18 @@ const createOrUpdateUser = () => { else createUser(userInfo as UserCreate) editPanel.value?.togglePanel() } + +const userPermissions = computed({ + get: () => currentUser.value?.permissions ?? {}, + set: (value) => { + currentUser.value!.permissions = value + }, +}); + +const fillAll = (resource: string) => { + userPermissions.value[resource] = availablePerms.value[resource] ?? []; + updateList.value += 1 +};