Pārlūkot izejas kodu

Merge pull request #2306 from overleaf/sk-fix-restricted-users-redux

Hide review panel UI and data for restricted users

GitOrigin-RevId: c2211b71860f2d7e8b54c40a7a89a1dd2e6a5d5a
Shane Kilkelly 7 gadi atpakaļ
vecāks
revīzija
365bd08425

+ 27 - 0
services/web/app/src/Features/Authorization/AuthorizationManager.js

@@ -1,5 +1,6 @@
 let AuthorizationManager
 const CollaboratorsGetter = require('../Collaborators/CollaboratorsGetter')
+const CollaboratorsHandler = require('../Collaborators/CollaboratorsHandler')
 const ProjectGetter = require('../Project/ProjectGetter')
 const { User } = require('../../models/User')
 const PrivilegeLevels = require('./PrivilegeLevels')
@@ -15,6 +16,32 @@ module.exports = AuthorizationManager = {
     )
   },
 
+  isRestrictedUserForProject(userId, projectId, callback) {
+    this.getPrivilegeLevelForProject(
+      userId,
+      projectId,
+      null,
+      (err, privilegeLevel) => {
+        if (err) {
+          return callback(err)
+        }
+        CollaboratorsHandler.userIsTokenMember(
+          userId,
+          projectId,
+          (err, isTokenMember) => {
+            if (err) {
+              return callback(err)
+            }
+            callback(
+              null,
+              this.isRestrictedUser(userId, privilegeLevel, isTokenMember)
+            )
+          }
+        )
+      }
+    )
+  },
+
   getPublicAccessLevel(projectId, callback) {
     if (!ObjectId.isValid(projectId)) {
       return callback(new Error('invalid project id'))

+ 2 - 1
services/web/app/views/project/editor/editor.pug

@@ -75,7 +75,8 @@ div.full-size(
 			line-height="settings.lineHeight || ui.defaultLineHeight"
 		)
 
-		include ./review-panel
+		if !isRestrictedTokenMember
+			include ./review-panel
 
 	.ui-layout-east
 		div(ng-if="ui.pdfLayout == 'sideBySide'")

+ 1 - 0
services/web/test/unit/src/Authorization/AuthorizationManagerTests.js

@@ -28,6 +28,7 @@ describe('AuthorizationManager', function() {
       },
       requires: {
         '../Collaborators/CollaboratorsGetter': (this.CollaboratorsGetter = {}),
+        '../Collaborators/CollaboratorsHandler': (this.CollaboratorsHandler = {}),
         '../Project/ProjectGetter': (this.ProjectGetter = {}),
         '../../models/User': {
           User: (this.User = {})