package com.celements.rights.access;
import org.xwiki.component.annotation.Component;
import org.xwiki.component.annotation.Requirement;
import org.xwiki.model.reference.DocumentReference;
import org.xwiki.model.reference.EntityReference;
import org.xwiki.script.service.ScriptService;
import com.celements.rights.publication.EPubUnpub;
import com.celements.rights.publication.IPublicationServiceRole;
import com.xpn.xwiki.user.api.XWikiRightService;
import com.xpn.xwiki.user.api.XWikiUser;
@Component(RightsAccessScriptService.NAME)
public class RightsAccessScriptService implements ScriptService {
public static final String NAME = "rightsAccess";
@Requirement
IPublicationServiceRole pubSrv;
@Requirement
IRightsAccessFacadeRole rightsAccess;
public EPubUnpub getEPubUnpub(String name) {
return EPubUnpub.valueOf(name);
}
public EAccessLevel getEAccessLevel(String xwikiRight) {
return EAccessLevel.getAccessLevel(xwikiRight);
}
public XWikiUser getGuestUser() {
return new XWikiUser(XWikiRightService.GUEST_USER_FULLNAME);
}
public XWikiUser getUser(String username) {
return new XWikiUser(username);
}
public boolean isPublishActive(DocumentReference forDoc) {
return pubSrv.isPublishActive(forDoc);
}
public boolean hasAccessLevel(EntityReference ref, EAccessLevel level) {
return rightsAccess.hasAccessLevel(ref, level);
}
public boolean hasAccessLevel(EntityReference ref, EAccessLevel level, XWikiUser user) {
return rightsAccess.hasAccessLevel(ref, level, user);
}
public boolean hasAccessLevel(DocumentReference docRef, EAccessLevel level, XWikiUser user,
EPubUnpub unpublished) {
pubSrv.overridePubUnpub(unpublished);
return hasAccessLevel(docRef, level, user);
}
}