diff --git a/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserRemote.java b/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserRemote.java new file mode 100644 index 0000000..e663012 --- /dev/null +++ b/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserRemote.java @@ -0,0 +1,12 @@ +package de.hsadmin.service.ldap; + +import de.hsadmin.xmlrpc.AbstractRemote; + +public class LdapUserRemote extends AbstractRemote { + + @Override + protected String getModuleLookup() { + return "LdapUserServiceLocal"; + } + +} diff --git a/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserService.java b/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserService.java index cd4a838..60336d6 100644 --- a/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserService.java +++ b/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserService.java @@ -3,6 +3,11 @@ package de.hsadmin.service.ldap; import javax.ejb.Stateless; import de.hsadmin.common.error.TechnicalException; +import de.hsadmin.common.error.UserException; +import de.hsadmin.login.RequestContext; +import de.hsadmin.login.RequiredScope; +import de.hsadmin.login.Role; +import de.hsadmin.login.ScopePolicy; import de.hsadmin.module.impl.AbstractModule; @Stateless @@ -13,4 +18,12 @@ public class LdapUserService extends AbstractModule implements LdapU return new LdapUserVO(); } + @Override + @RequiredScope({ @ScopePolicy(Role.SYSTEM), @ScopePolicy(value=Role.CUSTOMER, property="customer") }) + public LdapUserVO create(RequestContext requestContext, LdapUserVO prototype) + throws UserException, TechnicalException + { + return super.create(requestContext, prototype); + } + } diff --git a/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserVO.java b/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserVO.java index a535781..3626f7c 100644 --- a/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserVO.java +++ b/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserVO.java @@ -13,42 +13,48 @@ import de.hsadmin.module.property.StringSet; public class LdapUserVO extends AbstractVO { + @Required(true) + @ReadWrite(ReadWritePolicy.WRITEONCE) + @Search(SearchPolicy.EQUALS) + @Pattern(regexp="[a-z0-9]{3}") + private String customer; // refers to customer + @Required(true) @ReadWrite(ReadWritePolicy.WRITEONCE) @Search(SearchPolicy.EQUALS) @Pattern(regexp="[a-z0-9]{3}\\-[a-z0-9]+") - private String uid; + private String username; // ldap uid @ReadWrite(ReadWritePolicy.READWRITE) - private String userPassword; + private String password; // ldap userPassword @Required(true) @ReadWrite(ReadWritePolicy.READWRITE) @Search(SearchPolicy.EQUALS) - private String sn; + private String surname; // ldap sn @ReadWrite(ReadWritePolicy.READWRITE) @Search(SearchPolicy.EQUALS) - private String givenName; + private String givenname; // ldap givenName @Required(true) @ReadWrite(ReadWritePolicy.READWRITE) @Search(SearchPolicy.EQUALS) @Pattern(regexp="[a-zA-Z0-9\\.\\-\\_]*@[a-z0-9äöüß\\.\\-]*") - private String mail; + private String mail; // ldap mail @ReadWrite(ReadWritePolicy.READWRITE) @Pattern(regexp="[\\+\\d\\-\\ \\(\\)\\/]*") - private String mobile; + private String mobile; // ldap mobile @ReadWrite(ReadWritePolicy.READWRITE) @Pattern(regexp="[\\+\\d\\-\\ \\(\\)\\/]*") - private String homePhone; + private String phone; // ldap homePhone @ReadWrite(ReadWritePolicy.READWRITE) @Search(SearchPolicy.EQUALS) @Pattern(regexp="[a-z0-9]*") - private String nickName; + private String nickname; // ldap nickName @ReadWrite(ReadWritePolicy.READWRITE) private StringSet sshPublicKey; @@ -57,36 +63,44 @@ public class LdapUserVO extends AbstractVO { super(); } - public String getUid() { - return uid; + public String getCustomer() { + return customer; } - public void setUid(String uid) { - this.uid = uid; + public void setCustomer(String customer) { + this.customer = customer; } - public String getUserPassword() { - return userPassword; + public String getUsername() { + return username; } - public void setUserPassword(String userPassword) { - this.userPassword = userPassword; + public void setUsername(String uid) { + this.username = uid; } - public String getSn() { - return sn; + public String getPassword() { + return password; } - public void setSn(String sn) { - this.sn = sn; + public void setPassword(String userPassword) { + this.password = userPassword; } - public String getGivenName() { - return givenName; + public String getSurname() { + return surname; } - public void setGivenName(String givenName) { - this.givenName = givenName; + public void setSurname(String sn) { + this.surname = sn; + } + + public String getGivenname() { + return givenname; + } + + public void setGivenname(String givenName) { + this.givenname = givenName; } public String getMail() { @@ -105,20 +119,20 @@ public class LdapUserVO extends AbstractVO { this.mobile = mobile; } - public String getHomePhone() { - return homePhone; + public String getPhone() { + return phone; } - public void setHomePhone(String homePhone) { - this.homePhone = homePhone; + public void setPhone(String homePhone) { + this.phone = homePhone; } - public String getNickName() { - return nickName; + public String getNickname() { + return nickname; } - public void setNickName(String nickName) { - this.nickName = nickName; + public void setNickname(String nickName) { + this.nickname = nickName; } public StringSet getSshPublicKey() { diff --git a/ldap-services/src/main/resources/META-INF/persistence.xml b/ldap-services/src/main/resources/META-INF/persistence.xml new file mode 100644 index 0000000..a432242 --- /dev/null +++ b/ldap-services/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,26 @@ + + + + HsarDataSource + de.hsadmin.bo.customer.Contact + de.hsadmin.bo.customer.Customer + de.hsadmin.bo.customer.MemberShare + de.hsadmin.bo.customer.MemberAsset + de.hsadmin.bo.customer.SEPADirectDebit + de.hsadmin.bo.domain.Domain + de.hsadmin.bo.domain.DomainOption + de.hsadmin.bo.domain.EMailAddress + de.hsadmin.bo.pac.BaseComponent + de.hsadmin.bo.pac.BasePac + de.hsadmin.bo.pac.Component + de.hsadmin.bo.pac.EMailAlias + de.hsadmin.bo.pac.Hive + de.hsadmin.bo.pac.INetAddress + de.hsadmin.bo.pac.Pac + de.hsadmin.bo.pac.PacComponent + de.hsadmin.bo.pac.UnixUser + + diff --git a/ldap-services/src/main/resources/org/apache/xmlrpc/webserver/XmlRpcServlet.properties b/ldap-services/src/main/resources/org/apache/xmlrpc/webserver/XmlRpcServlet.properties new file mode 100644 index 0000000..0b6b4bf --- /dev/null +++ b/ldap-services/src/main/resources/org/apache/xmlrpc/webserver/XmlRpcServlet.properties @@ -0,0 +1,2 @@ +ldapuser=de.hsadmin.service.ldap.LdapUserRemote +property=de.hsadmin.service.property.PropertyRemote \ No newline at end of file diff --git a/ldap-services/src/main/webapp/WEB-INF/web.xml b/ldap-services/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..5661fb2 --- /dev/null +++ b/ldap-services/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,20 @@ + + + + + XmlRpcServlet + de.hsadmin.xmlrpc.HSXmlRpcServlet + + enabledForExtensions + true + + + + + XmlRpcServlet + /xmlrpc/* + + + diff --git a/ldap-services/src/test/java/de/hsadmin/service/ldap/ValidationTest.java b/ldap-services/src/test/java/de/hsadmin/service/ldap/ValidationTest.java index 81f3f4c..1e20134 100644 --- a/ldap-services/src/test/java/de/hsadmin/service/ldap/ValidationTest.java +++ b/ldap-services/src/test/java/de/hsadmin/service/ldap/ValidationTest.java @@ -14,23 +14,32 @@ import de.hsadmin.module.property.StringProperty; public class ValidationTest { + private static final String CUSTOMER = "customer"; + private static final String LDAP_SN = "surname"; + private static final String LDAP_MAIL = "mail"; + private static final String LDAP_UID = "username"; + private LdapUserVO vo; private ValidationDelegate val; @Before public void setUp() throws Exception { vo = new LdapUserVO(); + final String custOk = "abc"; final String uidOk = "abc-someuid"; final String mailOk = "someone@example.org"; final String snOk = "Mustermann"; - ((StringProperty) vo.get("uid")).setValue(uidOk); - String uid = vo.getUid(); + ((StringProperty) vo.get(CUSTOMER)).setValue(custOk); + String cust = vo.getCustomer(); + assertEquals(custOk, cust); + ((StringProperty) vo.get(LDAP_UID)).setValue(uidOk); + String uid = vo.getUsername(); assertEquals(uidOk, uid); - ((StringProperty) vo.get("mail")).setValue(mailOk); + ((StringProperty) vo.get(LDAP_MAIL)).setValue(mailOk); String mail = vo.getMail(); assertEquals(mailOk, mail); - ((StringProperty) vo.get("sn")).setValue(snOk); - String sn = vo.getSn(); + ((StringProperty) vo.get(LDAP_SN)).setValue(snOk); + String sn = vo.getSurname(); assertEquals(snOk, sn); val = new ValidationDelegate(); } @@ -49,8 +58,8 @@ public class ValidationTest { } final String uidFail = "ac-someuid"; try { - ((StringProperty) vo.get("uid")).setValue(uidFail); - String uid = vo.getUid(); + ((StringProperty) vo.get(LDAP_UID)).setValue(uidFail); + String uid = vo.getUsername(); assertEquals(uidFail, uid); val.checkPrototypeIsCreateable(vo); fail("expect UserException"); @@ -68,7 +77,7 @@ public class ValidationTest { public void testSetMail() { final String mailFail = "someuid"; try { - ((StringProperty) vo.get("mail")).setValue(mailFail); + ((StringProperty) vo.get(LDAP_MAIL)).setValue(mailFail); String mail = vo.getMail(); assertEquals(mailFail, mail); val.checkPrototypeIsCreateable(vo); diff --git a/ldap-services/src/test/tomee/conf/hsadmin.properties b/ldap-services/src/test/tomee/conf/hsadmin.properties new file mode 100644 index 0000000..cb2d37f --- /dev/null +++ b/ldap-services/src/test/tomee/conf/hsadmin.properties @@ -0,0 +1,6 @@ +ticketvalidator.class=de.hsadmin.login.cas.TestTicketValidator +cas.validate.url=https://login.hostsharing.net:443/cas/proxyValidate +cas.service.url=https://config.hostsharing.net:443/hsar/backend +accountprefix.hostmaster=hsh01 +accountprefix.customer=hsh00 +domainpostfix.pacdomain=hostsharing.net diff --git a/ldap-services/src/test/tomee/conf/tomee.xml b/ldap-services/src/test/tomee/conf/tomee.xml new file mode 100644 index 0000000..d634222 --- /dev/null +++ b/ldap-services/src/test/tomee/conf/tomee.xml @@ -0,0 +1,10 @@ + + + + JtaManager = true + JdbcDriver = org.postgresql.Driver + JdbcUrl = jdbc:postgresql://localhost:5432/hsadmin_db + UserName = hsadmin_dbuser + Password = SelfDefinedPassword + +