From 7b7faf1e84c4f2c53a9adbfd918d91590c890a0a Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 13 Jan 2023 14:22:53 +0900 Subject: 招待コード発行を権限を持つユーザーが行えるように MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolve #9541 --- packages/frontend/src/pages/admin/index.vue | 4 ++-- packages/frontend/src/pages/admin/roles.editor.vue | 16 ++++++++++++++++ packages/frontend/src/pages/admin/roles.vue | 10 ++++++++++ packages/frontend/src/ui/_common_/common.ts | 19 ++++++++++++++++++- 4 files changed, 46 insertions(+), 3 deletions(-) (limited to 'packages/frontend/src') diff --git a/packages/frontend/src/pages/admin/index.vue b/packages/frontend/src/pages/admin/index.vue index 83f3c10d1d..0166960ff6 100644 --- a/packages/frontend/src/pages/admin/index.vue +++ b/packages/frontend/src/pages/admin/index.vue @@ -80,7 +80,7 @@ const menuDef = $computed(() => [{ action: lookup, }, ...(instance.disableRegistration ? [{ type: 'button', - icon: 'ti ti-user', + icon: 'ti ti-user-plus', text: i18n.ts.invite, action: invite, }] : [])], @@ -223,7 +223,7 @@ provideMetadataReceiver((info) => { }); const invite = () => { - os.api('admin/invite').then(x => { + os.api('invite').then(x => { os.alert({ type: 'info', text: x.code, diff --git a/packages/frontend/src/pages/admin/roles.editor.vue b/packages/frontend/src/pages/admin/roles.editor.vue index e1efb8dcec..1d83ae3244 100644 --- a/packages/frontend/src/pages/admin/roles.editor.vue +++ b/packages/frontend/src/pages/admin/roles.editor.vue @@ -77,6 +77,19 @@ + + + +
+ + + + + + +
+
+ @@ -160,6 +173,8 @@ let options_ltlAvailable_useDefault = $ref(role?.options?.ltlAvailable?.useDefau let options_ltlAvailable_value = $ref(role?.options?.ltlAvailable?.value ?? false); let options_canPublicNote_useDefault = $ref(role?.options?.canPublicNote?.useDefault ?? true); let options_canPublicNote_value = $ref(role?.options?.canPublicNote?.value ?? false); +let options_canInvite_useDefault = $ref(role?.options?.canInvite?.useDefault ?? true); +let options_canInvite_value = $ref(role?.options?.canInvite?.value ?? false); let options_driveCapacityMb_useDefault = $ref(role?.options?.driveCapacityMb?.useDefault ?? true); let options_driveCapacityMb_value = $ref(role?.options?.driveCapacityMb?.value ?? 0); let options_antennaLimit_useDefault = $ref(role?.options?.antennaLimit?.useDefault ?? true); @@ -176,6 +191,7 @@ function getOptions() { gtlAvailable: { useDefault: options_gtlAvailable_useDefault, value: options_gtlAvailable_value }, ltlAvailable: { useDefault: options_ltlAvailable_useDefault, value: options_ltlAvailable_value }, canPublicNote: { useDefault: options_canPublicNote_useDefault, value: options_canPublicNote_value }, + canInvite: { useDefault: options_canInvite_useDefault, value: options_canInvite_value }, driveCapacityMb: { useDefault: options_driveCapacityMb_useDefault, value: options_driveCapacityMb_value }, antennaLimit: { useDefault: options_antennaLimit_useDefault, value: options_antennaLimit_value }, }; diff --git a/packages/frontend/src/pages/admin/roles.vue b/packages/frontend/src/pages/admin/roles.vue index f74a3dcf5a..6495074bb7 100644 --- a/packages/frontend/src/pages/admin/roles.vue +++ b/packages/frontend/src/pages/admin/roles.vue @@ -32,6 +32,14 @@ + + + + + + + + @@ -81,6 +89,7 @@ const roles = await os.api('admin/roles/list'); let options_gtlAvailable = $ref(instance.baseRole.gtlAvailable); let options_ltlAvailable = $ref(instance.baseRole.ltlAvailable); let options_canPublicNote = $ref(instance.baseRole.canPublicNote); +let options_canInvite = $ref(instance.baseRole.canInvite); let options_driveCapacityMb = $ref(instance.baseRole.driveCapacityMb); let options_antennaLimit = $ref(instance.baseRole.antennaLimit); @@ -90,6 +99,7 @@ async function updateBaseRole() { gtlAvailable: options_gtlAvailable, ltlAvailable: options_ltlAvailable, canPublicNote: options_canPublicNote, + canInvite: options_canInvite, driveCapacityMb: options_driveCapacityMb, antennaLimit: options_antennaLimit, }, diff --git a/packages/frontend/src/ui/_common_/common.ts b/packages/frontend/src/ui/_common_/common.ts index c63e962a8d..079b31489e 100644 --- a/packages/frontend/src/ui/_common_/common.ts +++ b/packages/frontend/src/ui/_common_/common.ts @@ -2,6 +2,7 @@ import * as os from '@/os'; import { instance } from '@/instance'; import { host } from '@/config'; import { i18n } from '@/i18n'; +import { $i } from '@/account'; export function openInstanceMenu(ev: MouseEvent) { os.popupMenu([{ @@ -46,7 +47,23 @@ export function openInstanceMenu(ev: MouseEvent) { to: '/clicker', text: '🍪👈', icon: 'ti ti-cookie', - }], + }, ($i && ($i.isRoot || $i.role.canInvite) && instance.disableRegistration) ? { + text: i18n.ts.invite, + icon: 'ti ti-user-plus', + action: () => { + os.api('invite').then(x => { + os.alert({ + type: 'info', + text: x.code, + }); + }).catch(err => { + os.alert({ + type: 'error', + text: err, + }); + }); + }, + } : undefined], }, null, { text: i18n.ts.help, icon: 'ti ti-question-circle', -- cgit v1.2.3-freya