{"record":{"id":"ff535c8f037bf39d","repo":"apolloconfig/apollo","slug":"portal-user-session-is-required-ff535c","errorCode":null,"errorMessage":"Portal user session is required","messagePattern":"Portal user session is required","errorType":"exception","errorClass":"AccessDeniedException","httpStatus":403,"severity":"error","filePath":"apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/UserController.java","lineNumber":139,"sourceCode":"\n  @Override\n  public ResponseEntity<Void> changeUserEnabled(OpenUserDTO openUserDTO, String operator) {\n    boolean consumerRequest = requireUserManagementMutationPermission(operator);\n    if (!consumerRequest && !unifiedPermissionValidator.isSuperAdmin()) {\n      throw new AccessDeniedException(\"Change user enabled operation is forbidden\");\n    }\n    UserPO user = OpenApiModelConverters.toUserPO(openUserDTO);\n    if (userService instanceof SpringSecurityUserService) {\n      ((SpringSecurityUserService) userService).changeEnabled(user);\n    } else {\n      throw new UnsupportedOperationException(\"change user enabled is unsupported\");\n    }\n    return ResponseEntity.ok().build();\n  }\n\n  private void requirePortalUserRequest() {\n    if (!isPortalUserIdentity()) {\n      throw new AccessDeniedException(\"Portal user session is required\");\n    }\n  }\n\n  private void requireUserManagementReadPermission() {\n    if (UserIdentityConstants.USER.equals(UserIdentityContextHolder.getAuthType())) {\n      return;\n    }\n    if (UserIdentityConstants.USER_TOKEN.equals(UserIdentityContextHolder.getAuthType())\n        && unifiedPermissionValidator.hasManageUsersPermission()) {\n      return;\n    }\n    if (UserIdentityConstants.CONSUMER.equals(UserIdentityContextHolder.getAuthType())\n        && unifiedPermissionValidator.hasManageUsersPermission()) {\n      return;\n    }\n    throw new AccessDeniedException(\"Manage users permission is required\");\n  }\n","sourceCodeStart":121,"sourceCodeEnd":157,"githubUrl":"https://github.com/apolloconfig/apollo/blob/d95fc18d112589efc09ddcbe1507047584d55251/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/UserController.java#L121-L157","documentation":"Thrown by requirePortalUserRequest when the request's auth type is not a portal user identity (USER or USER_TOKEN).","triggerScenarios":"Thrown when a user-management OpenAPI call that requires an interactive portal session is invoked without a logged-in portal user.","commonSituations":"Endpoint called with only a consumer token where a portal session is mandatory; session expired or cookie missing.","solutions":["Authenticate with a portal user session or a user token; consumer tokens are not accepted for this endpoint.","Ensure the session cookie or user-token header is sent with the request."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"d95fc18d112589efc09ddcbe1507047584d55251","analyzedAt":"2026-08-14T04:00:05.477Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}