diff --git a/public/locales/de-DE/translation.json b/public/locales/de-DE/translation.json index 5f7d6a9..005131d 100644 --- a/public/locales/de-DE/translation.json +++ b/public/locales/de-DE/translation.json @@ -639,6 +639,10 @@ "create": "Neue Autorisierung erstellen", "cancel-create": "Erstellung der Autorisierung abbrechen", "user-group": "Benutzer / Gruppe", + "user": "Benutzer", + "group": "Gruppe", + "user-id": "Benutzer-ID", + "group-id": "Gruppen-ID", "permissions": "Berechtigungen", "resource-id": "Ressourcen-ID", "global": "GLOBAL", diff --git a/public/locales/en-US/translation.json b/public/locales/en-US/translation.json index ac20fbe..f4674a6 100644 --- a/public/locales/en-US/translation.json +++ b/public/locales/en-US/translation.json @@ -639,6 +639,10 @@ "create": "Create new authorization", "cancel-create": "Cancel creating new authorization", "user-group": "User / Group", + "user": "User", + "group": "Group", + "user-id": "User ID", + "group-id": "Group ID", "permissions": "Permissions", "resource-id": "Resource ID", "global": "GLOBAL", diff --git a/src/pages/Admin.jsx b/src/pages/Admin.jsx index 92ac95e..78e3dfd 100644 --- a/src/pages/Admin.jsx +++ b/src/pages/Admin.jsx @@ -932,10 +932,11 @@ const AuthorizationCreate = ({ resource, resource_type, on_done }) => { state = useContext(AppState), { api: { authorization: { create } } } = state, [t] = useTranslation(), - form = useSignal({ type: 1, userId: '', permissions: [], resourceId: '*' }) + form = useSignal({ type: 1, assigneeType: 'user', userId: '', groupId: '', permissions: [], resourceId: '*' }) const set_value = (k, e) => form.value = { ...form.peek(), [k]: e.currentTarget.value }, + set_assignee_type = (e) => form.value = { ...form.peek(), assigneeType: e.currentTarget.value, userId: '', groupId: '' }, toggle_permission = (name, checked) => { const current = form.peek().permissions form.value = { @@ -945,11 +946,15 @@ const AuthorizationCreate = ({ resource, resource_type, on_done }) => { }, on_submit = e => { e.preventDefault() - const { type, userId, permissions, resourceId } = form.value + const { type, assigneeType, userId, groupId, permissions, resourceId } = form.value, + assignee = assigneeType === 'group' + ? { groupId: groupId || '*', userId: null } + : { userId: userId || '*', groupId: null } + void engine_rest.authorization.create(state, { type: Number(type), permissions, - userId: userId || '*', + ...assignee, resourceType: Number(resource_type), resourceId, }).then(() => { @@ -970,9 +975,23 @@ const AuthorizationCreate = ({ resource, resource_type, on_done }) => { - - set_value('userId', e)} placeholder="*" /> + + + + {form.value.assigneeType === 'group' + ? <> + + set_value('groupId', e)} placeholder="*" /> + > + : <> + + set_value('userId', e)} placeholder="*" /> + >}