Uploaded image for project: 'Bitbucket Data Center'
  1. Bitbucket Data Center
  2. BSERV-3593

Can't use PullRequestService.find method with SecurityService

    XMLWordPrintable

Details

    Description

      Since Stash 2.5.0 `find` method has @PreAuthorize("hasGlobalPermission('LICENSED_USER')"), but SecirityService has single parameter for `permission`.

      I need to use follow code:

      doWithPermissions(securityService,
          "Get all open pull-requests in attempt to merge them",
          Lists.newArrayList(Permission.REPO_READ, Permission.LICENSED_USER),
          findOp(pullRequestService, authenticationContext));
      
      private static <T, E extends RuntimeException> T doWithPermissions(
              final SecurityService securityService,
              final String reason,
              final List<Permission> permissions,
              final Operation<T, E> op) {
          Permission permission = permissions.get(0);
          List<Permission> permissionsTail = permissions.subList(1, permissions.size());
          if (permissionsTail.size() > 0) {
              return securityService.doWithPermission(reason, permission,
                      doWithPermissionsOp(securityService, reason, op, permissionsTail));
          }
          return securityService.doWithPermission(reason, permission, op);
      }
      
      private static <T, E extends RuntimeException> Operation<T, E> doWithPermissionsOp(
              final SecurityService securityService,
              final String reason,
              final Operation<T, E> delegate,
              final List<Permission> permissions) {
          return new Operation<T, E>() {
              @Override
              public T perform() throws E {
                  return doWithPermissions(securityService, reason, permissions, delegate);
              }
          };
      }
      

      Attachments

        Activity

          People

            jhinch jhinch (Atlassian)
            3652ed9ede2e Alexey Efimov
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: