Jelajahi Sumber

[web] Add admin permissions `modify-group` & `modify-managed-group` (#27456)

* Add capabilities `modify-group` and `modify-managed-group`

* Fix: Warning: validateDOMNesting(...): <span> cannot appear as a child of <option>

* Add `form-control` to select (fix styles)

* Check if admin can modify the group (frontend)

* Check if admin can modify the group (backend)

* Update tests

* Fix: Set `useSettingsUKAMF` state from `data?.useSettingsUKAMF`

* Add tests: Subscriptions update with adminRolesEnabled

* Use `getAdminCapabilities` helper

* Update `requireModifyGroupPermission` to array

Co-authored-by: Andrew Rumble <andrew.rumble@overleaf.com>

* Rename `canModify` to `canModifySubscription`

Co-authored-by: Andrew Rumble <andrew.rumble@overleaf.com>

* Refactor `requireModifyGroupPermission` stub

Co-authored-by: Andrew Rumble <andrew.rumble@overleaf.com>

* Test with `adminRolesEnabled` in SubscriptionDeletionTests.mjs

* Update test description with `adminRoles`

---------

Co-authored-by: Andrew Rumble <andrew.rumble@overleaf.com>
GitOrigin-RevId: 37b9a2e838fd566a33aa3a70631cebfd01b520ef
Antoine Clausse 1 tahun lalu
induk
melakukan
9774d9048c

+ 3 - 0
services/web/test/acceptance/src/helpers/DeletedSubscription.mjs

@@ -3,6 +3,7 @@ import MockSubscription from './Subscription.mjs'
 import SubscriptionUpdater from '../../../../app/src/Features/Subscription/SubscriptionUpdater.js'
 import { Subscription as SubscriptionModel } from '../../../../app/src/models/Subscription.js'
 import { DeletedSubscription as DeletedSubscriptionModel } from '../../../../app/src/models/DeletedSubscription.js'
+import { promisifyClass } from '@overleaf/promise-utils'
 
 class DeletedSubscription {
   constructor(options = {}) {
@@ -41,4 +42,6 @@ class DeletedSubscription {
   }
 }
 
+DeletedSubscription.promises = promisifyClass(DeletedSubscription)
+
 export default DeletedSubscription

+ 2 - 0
services/web/types/admin-capabilities.ts

@@ -4,7 +4,9 @@ export type AdminCapability =
   | 'create-recurly-account'
   | 'create-subscription'
   | 'modify-feature-override'
+  | 'modify-group'
   | 'modify-login-status'
+  | 'modify-managed-group'
   | 'manage-survey'
   | 'modify-split-test'
   | 'modify-user-email'