2,8 → 2,10 |
|
import java.util.*; |
import net.sf.hibernate.*; |
import net.sf.hibernate.type.Type; |
import ak.hostcaptain.util.HibernateUtil; |
import ak.hostcaptain.util.ModelException; |
import ak.hostcaptain.util.ModelSecurityException; |
|
public class MailAliasManager |
{ |
33,26 → 35,43 |
{ |
} |
|
public MailAlias create() |
public MailAlias create(User editor) |
throws ModelException |
{ |
if(!allowedToCreate(editor)) throw new ModelSecurityException(); |
|
MailAlias alias = new MailAlias(); |
alias.setDestinations(new ArrayList()); |
return alias; |
} |
|
public MailAlias get(Long id) |
public boolean allowedToCreate(User editor) |
throws ModelException |
{ |
return editor.isSuperuser() |
|| InetDomainManager.getInstance().areInetDomainsAvailable(editor); |
} |
|
public MailAlias get(User editor, Long id) |
throws ModelException |
{ |
MailAlias alias; |
|
try { |
return (MailAlias)HibernateUtil.currentSession().load(MailAlias.class, id); |
alias = (MailAlias)HibernateUtil.currentSession().load(MailAlias.class, id); |
} |
catch(HibernateException ex) |
{ |
throw new ModelException(ex); |
} |
|
if(!alias.viewableBy(editor)) |
throw new ModelSecurityException(); |
|
return alias; |
} |
|
public MailAlias findForName(String name) |
protected MailAlias findForName(String name) |
throws ModelException |
{ |
try { |
70,9 → 89,12 |
} |
} |
|
public void save(MailAlias mailAlias) |
public void save(User editor, MailAlias mailAlias) |
throws ModelException |
{ |
if(!mailAlias.editableBy(editor)) |
throw new ModelSecurityException(); |
|
try { |
HibernateUtil.currentSession().saveOrUpdate(mailAlias); |
} |
82,9 → 104,12 |
} |
} |
|
public void delete(MailAlias mailAlias) |
public void delete(User editor, MailAlias mailAlias) |
throws ModelException |
{ |
if(!mailAlias.deleteableBy(editor)) |
throw new ModelSecurityException(); |
|
try { |
HibernateUtil.currentSession().delete(mailAlias); |
} |
94,11 → 119,18 |
} |
} |
|
public Collection listMailAliases() |
public Collection listMailAliases(User editor) |
throws ModelException |
{ |
try { |
if(editor.isSuperuser()) |
return HibernateUtil.currentSession().find("from MailAlias"); |
else |
return HibernateUtil.currentSession().find( |
"select a from MailAlias a left join a.domain as d" |
+ " where d.owner=? or a.owner=?", |
new Object[] { editor, editor }, |
new Type[] { Hibernate.entity(User.class), Hibernate.entity(User.class) } ); |
} |
catch(HibernateException ex) |
{ |
106,13 → 138,24 |
} |
} |
|
public Collection listMailAliases(User owner) |
public boolean areMailAliasesAvailable(User editor) |
throws ModelException |
{ |
try { |
return HibernateUtil.currentSession().find( |
"from MailAlias where owner=?", owner, Hibernate.entity(User.class)); |
if(editor.isSuperuser() |
|| InetDomainManager.getInstance().areInetDomainsAvailable(editor)) |
{ |
return true; |
} |
else { |
return ((Integer)HibernateUtil.currentSession().iterate( |
"select count(*) from MailAlias a left join a.domain as d" |
+ " where d.owner=? or a.owner=?", |
new Object[] { editor, editor }, |
new Type[] { Hibernate.entity(User.class), Hibernate.entity(User.class) }) |
.next()).intValue() > 0; |
} |
} |
catch(HibernateException ex) |
{ |
throw new ModelException(ex); |