feat: implement assign/unassign user to group in admin panel

pull/7973/head
Gabriel Mowses (Mouse) 1 week ago
parent 78b112ad3c
commit 3deaa69450

@ -1107,12 +1107,58 @@ async function refreshUsers () {
state.isLoadingUsers = false
}
function assignUser () {
async function assignUser () {
$q.dialog({
title: 'Assign User',
message: 'Enter user email:',
prompt: { model: '', type: 'email' },
cancel: true,
persistent: false
}).onOk(async (email) => {
try {
// Find user by email
const resp = await APOLLO_CLIENT.query({
query: gql`query($q:String!){users(query:$q){id name email}}`,
variables: { q: email },
fetchPolicy: 'network-only'
})
const user = resp?.data?.users?.[0]
if (!user) {
$q.notify({ type: 'negative', message: 'User not found' })
return
}
// Assign to group
const result = await APOLLO_CLIENT.mutate({
mutation: gql`mutation($g:UUID!,$u:UUID!){assignUserToGroup(groupId:$g,userId:$u){operation{succeeded message}}}`,
variables: { g: state.group.id, u: user.id }
})
if (result?.data?.assignUserToGroup?.operation?.succeeded) {
$q.notify({ type: 'positive', message: `${user.name || user.email} added to group` })
refreshUsers()
} else {
throw new Error(result?.data?.assignUserToGroup?.operation?.message || 'Failed')
}
} catch (err) {
$q.notify({ type: 'negative', message: err.message })
}
})
}
function unassignUser () {
async function unassignUser (row) {
try {
const result = await APOLLO_CLIENT.mutate({
mutation: gql`mutation($g:UUID!,$u:UUID!){unassignUserFromGroup(groupId:$g,userId:$u){operation{succeeded message}}}`,
variables: { g: state.group.id, u: row.id }
})
if (result?.data?.unassignUserFromGroup?.operation?.succeeded) {
$q.notify({ type: 'positive', message: `${row.name || row.email} removed from group` })
refreshUsers()
} else {
throw new Error(result?.data?.unassignUserFromGroup?.operation?.message || 'Failed')
}
} catch (err) {
$q.notify({ type: 'negative', message: err.message })
}
}
// MOUNTED

Loading…
Cancel
Save