fix: set default options for compatibility, allow update on pac-domain
This commit is contained in:
parent
378339e99a
commit
0f7ee2bf1a
@ -19,6 +19,18 @@ import de.hsadmin.mods.user.UnixUser;
|
||||
|
||||
public class DomainModuleImpl extends AbstractModuleImpl {
|
||||
|
||||
public static final String DOMOPT_GREYLISTING = "greylisting";
|
||||
public static final String DOMOPT_MULTIVIEWS = "multiviews";
|
||||
public static final String DOMOPT_INDEXES = "indexes";
|
||||
public static final String DOMOPT_HTDOCSFALLBACK = "htdocsfallback";
|
||||
public static final String DOMOPT_INCLUDES = "includes";
|
||||
public static final String DOMOPT_BACKUPFOREXTERNALMX = "backupmxforexternalmx";
|
||||
|
||||
public static final String[] ALL_DOMOPTS = new String[] { DOMOPT_GREYLISTING, DOMOPT_MULTIVIEWS,
|
||||
DOMOPT_INDEXES, DOMOPT_HTDOCSFALLBACK, DOMOPT_INCLUDES, DOMOPT_BACKUPFOREXTERNALMX };
|
||||
public static final String[] DEFAULT_DOMOPTS = new String[] { DOMOPT_GREYLISTING, DOMOPT_MULTIVIEWS,
|
||||
DOMOPT_INDEXES, DOMOPT_HTDOCSFALLBACK, DOMOPT_INCLUDES };
|
||||
|
||||
@Override
|
||||
public AbstractEntity initialize(AbstractEntity newEntity) throws AuthorisationException {
|
||||
AbstractEntity newDom = super.initialize(newEntity);
|
||||
@ -123,16 +135,18 @@ public class DomainModuleImpl extends AbstractModuleImpl {
|
||||
dom.setUser((UnixUser) adminQuery.getSingleResult());
|
||||
needsWriteAccessOn(newEntity, "add");
|
||||
em.persist(dom);
|
||||
Query q = em.createQuery("SELECT opt FROM " +
|
||||
DomainOption.class.getAnnotation(javax.persistence.Entity.class).name() +
|
||||
" opt WHERE opt.name=:optName");
|
||||
HashSet<DomainOption> domainOptions = new HashSet<DomainOption>();
|
||||
q.setParameter("optName", "greylisting");
|
||||
List<?> list = q.getResultList();
|
||||
if (list.size() != 1) {
|
||||
throw new HSAdminException("invalid domain option: " + "greylisting");
|
||||
} else {
|
||||
domainOptions.add((DomainOption) list.get(0));
|
||||
for (String domOpt : DEFAULT_DOMOPTS) {
|
||||
Query q = em.createQuery("SELECT opt FROM " +
|
||||
DomainOption.class.getAnnotation(javax.persistence.Entity.class).name() +
|
||||
" opt WHERE opt.name=:optName");
|
||||
q.setParameter("optName", domOpt);
|
||||
List<?> list = q.getResultList();
|
||||
if (list.size() == 1) {
|
||||
domainOptions.add((DomainOption) list.get(0));
|
||||
} else {
|
||||
throw new HSAdminException("invalid domain option: " + domOpt);
|
||||
}
|
||||
}
|
||||
dom.setDomainoptions(domainOptions);
|
||||
if (dom.isPacDomain()) {
|
||||
@ -234,8 +248,10 @@ public class DomainModuleImpl extends AbstractModuleImpl {
|
||||
if (dom.isPacDomain() && !dom.getUser().getName().equals(domPac.getName())) {
|
||||
throw new AuthorisationException(loginUser, method, dom);
|
||||
}
|
||||
if (dom.isPacDomain() && !isHostmaster && !"add".equals(method)) {
|
||||
throw new AuthorisationException(loginUser, method, dom);
|
||||
if (dom.isPacDomain() && !isHostmaster) {
|
||||
if (!"add".equals(method) && !"update".equals(method)) {
|
||||
throw new AuthorisationException(loginUser, method, dom);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw new AuthorisationException(loginUser, method, entity);
|
||||
|
Loading…
Reference in New Issue
Block a user