in teamcity-invitations-plugin-server/src/main/java/org/jetbrains/teamcity/invitations/AdditionalPermissionsUserWrapper.java [28:66]
public UserEx getWrappedUser() {
return (UserEx) Proxy.newProxyInstance(getClass().getClassLoader(), new Class<?>[]{UserEx.class},
(proxy, method, args) -> {
if (enabled.get()) {
switch (method.getName()) {
case "isPermissionGrantedForProject":
List<Permission> projectPermissions = additionalPermissions.get(args[0]);
if (projectPermissions != null && projectPermissions.contains(args[1])) {
return true;
} else {
return invoke(method, args);
}
case "isPermissionGrantedForAnyProject":
if (additionalPermissions.values().stream().anyMatch(list -> list.contains(args[0]))) {
return true;
} else {
return invoke(method, args);
}
case "getPermissionsGrantedForProject": {
projectPermissions = additionalPermissions.get(args[0]);
if (projectPermissions != null) {
List<Permission> base = ((Permissions) invoke(method, args)).toList();
base.addAll(projectPermissions);
return new Permissions(base);
} else {
return invoke(method, args);
}
}
default:
return invoke(method, args);
}
} else {
return invoke(method, args);
}
});
}