Explorar o código

Merge pull request #13933 from overleaf/bg-managed-users-add-missing-jsdoc-param

refactor getUserValidationStatus in PermissionsManager

GitOrigin-RevId: 80ef8142d3556e47e1d6cb323148f1f1042057aa
Brian Gough %!s(int64=3) %!d(string=hai) anos
pai
achega
d2f470450e

+ 7 - 5
services/web/app/src/Features/Authorization/PermissionsManager.js

@@ -282,17 +282,19 @@ function hasPermission(groupPolicy, capability) {
 
 /**
  * Asynchronously checks which policies a user complies with using the
- * applicable validators. Each validator is an async function that takes a object
- * with user and subscription properties and returns a boolean.
+ * applicable validators. Each validator is an async function that takes an object
+ * with user, groupPolicy, and subscription properties and returns a boolean.
  *
- * @param {Object} user - The user object to check.
- * @param {Object} groupPolicy - The group policy object to check.
+ * @param {Object} options - The options object.
+ * @param {Object} options.user - The user object to check.
+ * @param {Object} options.groupPolicy - The group policy object to check.
+ * @param {Object} options.subscription - The subscription object for the group policy.
  * @returns {Promise<Map>} A promise that resolves with a Map object containing
  *   the validation status for each enforced policy. The keys of the Map are the
  *   enforced policy names, and the values are booleans indicating whether the
  *   user complies with the policy.
  */
-async function getUserValidationStatus(user, groupPolicy, subscription) {
+async function getUserValidationStatus({ user, groupPolicy, subscription }) {
   // find all the enforced policies for the user
   const enforcedPolicyNames = getEnforcedPolicyNames(groupPolicy)
   // for each enforced policy, we have a list of capabilities with expected values

+ 4 - 4
services/web/app/src/Features/Subscription/TeamInvitesController.js

@@ -93,11 +93,11 @@ async function viewInvite(req, res, next) {
       }
 
       validationStatus =
-        await PermissionsManager.promises.getUserValidationStatus(
+        await PermissionsManager.promises.getUserValidationStatus({
           user,
-          subscription.groupPolicy,
-          subscription
-        )
+          groupPolicy: subscription.groupPolicy,
+          subscription,
+        })
 
       return res.render('subscriptions/team/invite-managed', {
         inviterName: invite.inviterName,

+ 2 - 7
services/web/test/acceptance/src/helpers/Subscription.js

@@ -74,13 +74,8 @@ class Subscription {
     return PermissionsManager.getUserCapabilities(groupPolicy)
   }
 
-  getUserValidationStatus(user, groupPolicy, subscription, callback) {
-    PermissionsManager.getUserValidationStatus(
-      user,
-      groupPolicy,
-      subscription,
-      callback
-    )
+  getUserValidationStatus(params, callback) {
+    PermissionsManager.getUserValidationStatus(params, callback)
   }
 
   enrollManagedUser(user, callback) {

+ 9 - 9
services/web/test/unit/src/Authorization/PermissionsManagerTests.js

@@ -288,11 +288,11 @@ describe('PermissionsManager', function () {
       const user = { prop: 'allowed' }
       const subscription = { prop: 'managed' }
       const result =
-        await this.PermissionsManager.promises.getUserValidationStatus(
+        await this.PermissionsManager.promises.getUserValidationStatus({
           user,
           groupPolicy,
-          subscription
-        )
+          subscription,
+        })
       expect(result).to.deep.equal(new Map([['policy', true]]))
     })
 
@@ -312,11 +312,11 @@ describe('PermissionsManager', function () {
       const user = { prop: 'not allowed' }
       const subscription = { prop: 'managed' }
       const result =
-        await this.PermissionsManager.promises.getUserValidationStatus(
+        await this.PermissionsManager.promises.getUserValidationStatus({
           user,
           groupPolicy,
-          subscription
-        )
+          subscription,
+        })
       expect(result).to.deep.equal(new Map([['policy', false]]))
     })
     it('should return the status for multiple policies according to whether the user conforms', async function () {
@@ -356,11 +356,11 @@ describe('PermissionsManager', function () {
       const user = { prop: 'allowed' }
       const subscription = { prop: 'managed' }
       const result =
-        await this.PermissionsManager.promises.getUserValidationStatus(
+        await this.PermissionsManager.promises.getUserValidationStatus({
           user,
           groupPolicy,
-          subscription
-        )
+          subscription,
+        })
       expect(result).to.deep.equal(
         new Map([
           ['policy1', true],