summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-05-10 13:04:03 -0400
committerHazelnoot <acomputerdog@gmail.com>2025-05-12 13:31:16 -0400
commit655290f8a496fbda1aa66f3de1e33cdefe08aa00 (patch)
treeae98662f89c848dd1456eca21f811203d20bc72c /packages
parentmerge: Make muted post placeholders look clickable (resolves #502) (!1019) (diff)
downloadsharkey-655290f8a496fbda1aa66f3de1e33cdefe08aa00.tar.gz
sharkey-655290f8a496fbda1aa66f3de1e33cdefe08aa00.tar.bz2
sharkey-655290f8a496fbda1aa66f3de1e33cdefe08aa00.zip
add "is from local bubble instance" role condition
Diffstat (limited to 'packages')
-rw-r--r--packages/backend/src/core/RoleService.ts4
-rw-r--r--packages/backend/src/models/Role.ts8
-rw-r--r--packages/frontend/src/pages/admin/RolesEditorFormula.vue1
3 files changed, 13 insertions, 0 deletions
diff --git a/packages/backend/src/core/RoleService.ts b/packages/backend/src/core/RoleService.ts
index e87c459d5c..039932b76d 100644
--- a/packages/backend/src/core/RoleService.ts
+++ b/packages/backend/src/core/RoleService.ts
@@ -262,6 +262,10 @@ export class RoleService implements OnApplicationShutdown, OnModuleInit {
return user.host.toLowerCase() === value.host.toLowerCase();
}
}
+ // Is the user from a local bubble instance
+ case 'fromBubbleInstance': {
+ return user.host != null && this.meta.bubbleInstances.includes(user.host);
+ }
// サスペンド済みユーザである
case 'isSuspended': {
return user.isSuspended;
diff --git a/packages/backend/src/models/Role.ts b/packages/backend/src/models/Role.ts
index 2caf3e0bd3..f6e3050830 100644
--- a/packages/backend/src/models/Role.ts
+++ b/packages/backend/src/models/Role.ts
@@ -57,6 +57,13 @@ type CondFormulaValueIsFromInstance = {
};
/**
+ * Is the user from a local bubble instance
+ */
+type CondFormulaValueFromBubbleInstance = {
+ type: 'fromBubbleInstance';
+};
+
+/**
* 既に指定のマニュアルロールにアサインされている場合のみ成立とする
*/
type CondFormulaValueRoleAssignedTo = {
@@ -234,6 +241,7 @@ export type RoleCondFormulaValue = { id: string } & (
CondFormulaValueIsLocal |
CondFormulaValueIsRemote |
CondFormulaValueIsFromInstance |
+ CondFormulaValueFromBubbleInstance |
CondFormulaValueIsSuspended |
CondFormulaValueIsLocked |
CondFormulaValueIsBot |
diff --git a/packages/frontend/src/pages/admin/RolesEditorFormula.vue b/packages/frontend/src/pages/admin/RolesEditorFormula.vue
index 0f3afd5b22..b7375b0faf 100644
--- a/packages/frontend/src/pages/admin/RolesEditorFormula.vue
+++ b/packages/frontend/src/pages/admin/RolesEditorFormula.vue
@@ -10,6 +10,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<option value="isLocal">{{ i18n.ts._role._condition.isLocal }}</option>
<option value="isRemote">{{ i18n.ts._role._condition.isRemote }}</option>
<option value="isFromInstance">{{ i18n.ts._role._condition.isFromInstance }}</option>
+ <option value="fromBubbleInstance">{{ i18n.ts._role._condition.fromBubbleInstance }}</option>
<option value="isSuspended">{{ i18n.ts._role._condition.isSuspended }}</option>
<option value="isLocked">{{ i18n.ts._role._condition.isLocked }}</option>
<option value="isBot">{{ i18n.ts._role._condition.isBot }}</option>