WangJPLeo commented on code in PR #10289:
URL: https://github.com/apache/dolphinscheduler/pull/10289#discussion_r884930429
##########
dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertPluginInstanceMapper.xml:
##########
@@ -59,4 +59,12 @@
where instance_name = #{instanceName} limit 1
</select>
+ <select id="queryAllAlertPluginInstanceList"
+
resultType="org.apache.dolphinscheduler.dao.entity.AlertPluginInstance">
Review Comment:
The method here and line 27 are duplicates.
##########
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AccessTokenMapper.java:
##########
@@ -61,4 +61,12 @@ IPage<AccessToken> selectAccessTokenPage(Page page,
* @return delete result
*/
int deleteAccessTokenByUserId(@Param("userId") int userId);
+
+ /**
+ * list authorized Projects
+ * @param userId
+ * @param accessTokensIds
+ * @return access token for specified user
+ */
+ List<AccessToken> listAuthorizedAccessToken(@Param("userId") int userId,
@Param("accessTokensIds")List<Integer> accessTokensIds);
Review Comment:
The length of the mapped SQL judgment set should be the same as the method
parameter type, SQL uses size() or the method parameter is changed to an array.
##########
dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/permission/ResourcePermissionCheckServiceImpl.java:
##########
@@ -111,17 +116,375 @@ public List<AuthorizationType> authorizationTypes() {
@Override
public boolean permissionCheck(int userId, String url, Logger logger) {
- // all users can create projects
return true;
}
-
@Override
public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
return projectMapper.listAuthorizedProjects(userId,
null).stream().map(Project::getId).collect(toSet());
}
}
+ @Component
+ public static class K8sNamespaceResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final K8sNamespaceMapper k8sNamespaceMapper;
+
+
+
+ public K8sNamespaceResourceList(K8sNamespaceMapper k8sNamespaceMapper)
{
+ this.k8sNamespaceMapper = k8sNamespaceMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.K8S_NAMESPACE);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+
+ @Component
+ public static class EnvironmentResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final EnvironmentMapper environmentMapper;
+
+
+
+ public EnvironmentResourceList(EnvironmentMapper environmentMapper) {
+ this.environmentMapper = environmentMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.ENVIRONMENT);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+ @Component
+ public static class QueueResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final QueueMapper queueMapper;
+
+
+
+ public QueueResourceList(QueueMapper queueMapper) {
+ this.queueMapper = queueMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.QUEUE);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+
+ @Component
+ public static class WorkerGroupResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final WorkerGroupMapper workerGroupMapper;
+
+
+
+ public WorkerGroupResourceList(WorkerGroupMapper workerGroupMapper) {
+ this.workerGroupMapper = workerGroupMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.WORKER_GROUP);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
Review Comment:
Worker Group also belongs to resource permissions.
##########
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/UserMapper.java:
##########
@@ -172,4 +172,15 @@ IPage<User> queryUserPaging(Page page,
* @return user list
*/
List<User> queryAuthedUserListByProjectId(@Param("projectId") int
projectId);
+
+ /**
+ * list authorized User
+ * @param userId
+ * @param resourcesIds
+ * @param <T>
+ * @return
+ */
+ <T> List<User> listAuthorizedUsersList (@Param("userId") int userId,
@Param("resourcesIds")T[] resourcesIds);
+
Review Comment:
The User module changes here and above are to be cancelled.
##########
dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/permission/ResourcePermissionCheckServiceImpl.java:
##########
@@ -111,17 +116,375 @@ public List<AuthorizationType> authorizationTypes() {
@Override
public boolean permissionCheck(int userId, String url, Logger logger) {
- // all users can create projects
return true;
}
-
@Override
public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
return projectMapper.listAuthorizedProjects(userId,
null).stream().map(Project::getId).collect(toSet());
}
}
+ @Component
+ public static class K8sNamespaceResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final K8sNamespaceMapper k8sNamespaceMapper;
+
+
+
+ public K8sNamespaceResourceList(K8sNamespaceMapper k8sNamespaceMapper)
{
+ this.k8sNamespaceMapper = k8sNamespaceMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.K8S_NAMESPACE);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+
+ @Component
+ public static class EnvironmentResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final EnvironmentMapper environmentMapper;
+
+
+
+ public EnvironmentResourceList(EnvironmentMapper environmentMapper) {
+ this.environmentMapper = environmentMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.ENVIRONMENT);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+ @Component
+ public static class QueueResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final QueueMapper queueMapper;
+
+
+
+ public QueueResourceList(QueueMapper queueMapper) {
+ this.queueMapper = queueMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.QUEUE);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+
+ @Component
+ public static class WorkerGroupResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final WorkerGroupMapper workerGroupMapper;
+
+
+
+ public WorkerGroupResourceList(WorkerGroupMapper workerGroupMapper) {
+ this.workerGroupMapper = workerGroupMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.WORKER_GROUP);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+ /**
+ * AlertPluginInstance Resource
+ */
+ @Component
+ public static class AlertPluginInstanceResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final AlertPluginInstanceMapper alertPluginInstanceMapper;
+
+
+
+ public AlertPluginInstanceResourceList(AlertPluginInstanceMapper
alertPluginInstanceMapper) {
+ this.alertPluginInstanceMapper = alertPluginInstanceMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return
Collections.singletonList(AuthorizationType.ALERT_PLUGIN_INSTANCE);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+ /**
+ * AlertPluginInstance Resource
+ */
+ @Component
+ public static class AlertGroupResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final AlertGroupMapper alertGroupMapper;
+
+
+
+ public AlertGroupResourceList(AlertGroupMapper alertGroupMapper) {
+ this.alertGroupMapper = alertGroupMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.ALERT_GROUP);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return alertGroupMapper.listAuthorizedAlertGroupList(userId,
null).stream().map(AlertGroup::getId).collect(toSet());
+ }
+ }
+
+ /**
+ * Tenant Resource
+ */
+ @Component
+ public static class TenantResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final TenantMapper tenantMapper;
+
+
+
+ public TenantResourceList(TenantMapper tenantMapper) {
+ this.tenantMapper = tenantMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.TENANT);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+ /**
+ * User Resource
+ */
+ @Component
+ public static class UsersResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
Review Comment:
This module is not required.
##########
dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/permission/ResourcePermissionCheckServiceImpl.java:
##########
@@ -111,17 +116,375 @@ public List<AuthorizationType> authorizationTypes() {
@Override
public boolean permissionCheck(int userId, String url, Logger logger) {
- // all users can create projects
return true;
}
-
@Override
public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
return projectMapper.listAuthorizedProjects(userId,
null).stream().map(Project::getId).collect(toSet());
}
}
+ @Component
+ public static class K8sNamespaceResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final K8sNamespaceMapper k8sNamespaceMapper;
+
+
+
+ public K8sNamespaceResourceList(K8sNamespaceMapper k8sNamespaceMapper)
{
+ this.k8sNamespaceMapper = k8sNamespaceMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.K8S_NAMESPACE);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+
+ @Component
+ public static class EnvironmentResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final EnvironmentMapper environmentMapper;
+
+
+
+ public EnvironmentResourceList(EnvironmentMapper environmentMapper) {
+ this.environmentMapper = environmentMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.ENVIRONMENT);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
Review Comment:
The data source belongs to the resource permission and cannot return an
empty collection.
##########
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/UsersServiceImpl.java:
##########
@@ -151,11 +158,16 @@ public Map<String, Object> createUser(User loginUser,
//check all user params
String msg = this.checkUserParams(userName, userPassword, email,
phone);
+ if(resourcePermissionCheckService.functionDisabled()){
+ putMsg(result, Status.FUNCTION_DISABLED, msg);
Review Comment:
After the interface of the User module is verified using the
functionDisabled method, no other permission verification is required.
##########
dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/permission/ResourcePermissionCheckServiceImpl.java:
##########
@@ -111,17 +116,375 @@ public List<AuthorizationType> authorizationTypes() {
@Override
public boolean permissionCheck(int userId, String url, Logger logger) {
- // all users can create projects
return true;
}
-
@Override
public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
return projectMapper.listAuthorizedProjects(userId,
null).stream().map(Project::getId).collect(toSet());
}
}
+ @Component
+ public static class K8sNamespaceResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final K8sNamespaceMapper k8sNamespaceMapper;
+
+
+
+ public K8sNamespaceResourceList(K8sNamespaceMapper k8sNamespaceMapper)
{
+ this.k8sNamespaceMapper = k8sNamespaceMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.K8S_NAMESPACE);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+
+ @Component
+ public static class EnvironmentResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final EnvironmentMapper environmentMapper;
+
+
+
+ public EnvironmentResourceList(EnvironmentMapper environmentMapper) {
+ this.environmentMapper = environmentMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.ENVIRONMENT);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+ @Component
+ public static class QueueResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final QueueMapper queueMapper;
+
+
+
+ public QueueResourceList(QueueMapper queueMapper) {
+ this.queueMapper = queueMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.QUEUE);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+
+ @Component
+ public static class WorkerGroupResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final WorkerGroupMapper workerGroupMapper;
+
+
+
+ public WorkerGroupResourceList(WorkerGroupMapper workerGroupMapper) {
+ this.workerGroupMapper = workerGroupMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.WORKER_GROUP);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+ /**
+ * AlertPluginInstance Resource
+ */
+ @Component
+ public static class AlertPluginInstanceResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final AlertPluginInstanceMapper alertPluginInstanceMapper;
+
+
+
+ public AlertPluginInstanceResourceList(AlertPluginInstanceMapper
alertPluginInstanceMapper) {
+ this.alertPluginInstanceMapper = alertPluginInstanceMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return
Collections.singletonList(AuthorizationType.ALERT_PLUGIN_INSTANCE);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+ /**
+ * AlertPluginInstance Resource
+ */
+ @Component
+ public static class AlertGroupResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final AlertGroupMapper alertGroupMapper;
+
+
+
+ public AlertGroupResourceList(AlertGroupMapper alertGroupMapper) {
+ this.alertGroupMapper = alertGroupMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.ALERT_GROUP);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return alertGroupMapper.listAuthorizedAlertGroupList(userId,
null).stream().map(AlertGroup::getId).collect(toSet());
+ }
+ }
+
+ /**
+ * Tenant Resource
+ */
+ @Component
+ public static class TenantResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final TenantMapper tenantMapper;
+
+
+
+ public TenantResourceList(TenantMapper tenantMapper) {
+ this.tenantMapper = tenantMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.TENANT);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+ /**
+ * User Resource
+ */
+ @Component
+ public static class UsersResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final UserMapper userMapper;
+
+
+
+ public UsersResourceList(UserMapper userMapper) {
+ this.userMapper = userMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.USER);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return userMapper.listAuthorizedUsersList(userId,
null).stream().map(User::getId).collect(toSet());
+ }
+ }
+
+ /**
+ * DataSource Resource
+ */
+ @Component
+ public static class DataSourceResourceList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final DataSourceMapper dataSourceMapper;
+
+
+
+ public DataSourceResourceList(DataSourceMapper dataSourceMapper) {
+ this.dataSourceMapper = dataSourceMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.DATASOURCE);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return dataSourceMapper.listAuthorizedDataSource(userId,
null).stream().map(DataSource::getId).collect(toSet());
+ }
+ }
+
+ /**
+ * DataAnalysis Resource
+ */
+ @Component
+ public static class DataAnalysisList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final CommandMapper commandMapper;
+
+
+
+ public DataAnalysisList(CommandMapper commandMapper) {
+ this.commandMapper = commandMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.DATA_ANALYSIS);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+ /**
+ * DataQuality Resource
+ */
+ @Component
+ public static class DataQualityList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final DqRuleMapper dqRuleMapper;
+
+
+
+ public DataQualityList(DqRuleMapper dqRuleMapper) {
+ this.dqRuleMapper = dqRuleMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.DATA_QUALITY);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
+ return Collections.emptySet();
+ }
+ }
+
+ /**
+ * AccessToken Resource
+ */
+ @Component
+ public static class AccessTokenList implements
ResourceAcquisitionAndPermissionCheck<Integer> {
+
+ private final AccessTokenMapper accessTokenMapper;
+
+
+
+ public AccessTokenList(AccessTokenMapper accessTokenMapper) {
+ this.accessTokenMapper = accessTokenMapper;
+ }
+
+ @Override
+ public List<AuthorizationType> authorizationTypes() {
+ return Collections.singletonList(AuthorizationType.ACCESS_TOKEN);
+ }
+
+ @Override
+ public boolean permissionCheck(int userId, String url, Logger logger) {
+ return true;
+ }
+
+
+ @Override
+ public Set<Integer> listAuthorizedResource(int userId, Logger logger) {
Review Comment:
AccessToken is not a resource permission.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]