The component where we are using the service user.
@8220494(service = AssetDownloadService.class)
public class AssetDownloadServiceImpl implements AssetDownloadService {
protected static final Logger LOGGER = LoggerFactory.getLogger(AssetDownloadServiceImpl.class);
@3214626
private ResourceResolverService resourceResolverService;
private boolean isAsset(String resourcePath, String propertyName) {
try (ResourceResolver resourceResolver = resourceResolverService.getResourceResolver()) {
Resource resource = resourceResolver.getResource(resourcePath);
if (resource == null) return false;
String fileReference = resource.getValueMap().get(propertyName, StringUtils.EMPTY);
Resource damImageResource = resourceResolver.getResource(fileReference);
return isBynderAsset(damImageResource);
} catch (RuntimeException ex) {
LOGGER.error("Exception occurred in isBynderAsset due to {}",ex.getMessage(), ex);
}
return false;
}
}
The ResourceResolverService
@8220494(service = ResourceResolverService.class, property = {
Constants.SERVICE_DESCRIPTION + "=ResourceResolver Provider for Service User"
})
public class ResourceResolverServiceImpl implements ResourceResolverService {
@3214626
ResourceResolverFactory resolverFactory;
private final Logger logger = LoggerFactory.getLogger(ResourceResolverServiceImpl.class);
@9944223
public ResourceResolver getResourceResolver() {
Map<String, Object> params = new HashMap<>();
params.put(resolverFactory.SUBSERVICE, "reader-user");
try {
return resolverFactory.getServiceResourceResolver(params);
} catch (LoginException e) {
logger.error("error due to : {}", e.getMessage(), e);
}
return null;
}
@9944223
public ResourceResolver getResourceResolverWriter() {
Map<String, Object> params = new HashMap<>();
params.put(resolverFactory.SUBSERVICE, "writer-user");
try {
return resolverFactory.getServiceResourceResolver(params);
} catch (LoginException e) {
logger.error("error due to : {}", e.getMessage(), e);
}
return null;
}
} You can replicate this service user from author. and for extra permissions you can use the netcentric acl tool. Or you can set permissions manualy.