diff --git a/hsarback/build.xml b/hsarback/build.xml
index b4dd781..b891cfb 100644
--- a/hsarback/build.xml
+++ b/hsarback/build.xml
@@ -67,11 +67,22 @@
-
+
+
+
+
+
diff --git a/hsarback/conf/META-INF/persistence.xml b/hsarback/conf/META-INF/persistence.xml
index 5a87c07..ed005fe 100644
--- a/hsarback/conf/META-INF/persistence.xml
+++ b/hsarback/conf/META-INF/persistence.xml
@@ -27,9 +27,6 @@
-->
-
diff --git a/hsarback/database/data.sql b/hsarback/database/data.sql
index 29b47ae..1560528 100644
--- a/hsarback/database/data.sql
+++ b/hsarback/database/data.sql
@@ -43,3 +43,81 @@ INSERT INTO component (basepacket_id, basecomponent_id, min_quantity, max_quanti
SELECT basepacket_id, basecomponent_id, 0, 4, 0, 1, 0, false FROM basepacket, basecomponent WHERE basepacket_code='DW/B' AND basecomponent_code='APACHE';
INSERT INTO component (basepacket_id, basecomponent_id, min_quantity, max_quantity, default_quantity, increment_quantity, include_quantity, admin_only)
SELECT basepacket_id, basecomponent_id, 0, 0, 0, 1, 0, false FROM basepacket, basecomponent WHERE basepacket_code='SW/B' AND basecomponent_code='APACHE';
+
+--
+-- Table: business_partner
+--
+INSERT INTO business_partner (member_id, member_code, member_since, shares_signed)
+ VALUES (10000, 'hsh00-hsh', current_date, 0);
+
+--
+-- table: contact
+--
+INSERT INTO contact (bp_id, salut, first_name, last_name, firma, email)
+ SELECT bp_id, 'Herr', 'Uwe', 'Mueller', 'Hostsharing eG', 'service@hostsharing.net' FROM business_partner WHERE member_id=10000;
+
+--
+-- table: bank_account
+--
+INSERT INTO bank_account (bp_id)
+ SELECT bp_id FROM business_partner WHERE member_id=10000;
+
+--
+-- table: billdata
+--
+INSERT INTO billdata (bp_id)
+ SELECT bp_id FROM business_partner WHERE member_id=10000;
+
+--
+-- Table: inet_addr
+--
+INSERT INTO inet_addr (inet_addr, description)
+ VALUES (inet '192.168.108.200', 'address 200');
+INSERT INTO inet_addr (inet_addr, description)
+ VALUES (inet '192.168.108.201', 'address 201');
+INSERT INTO inet_addr (inet_addr, description)
+ VALUES (inet '192.168.108.202', 'address 202');
+INSERT INTO inet_addr (inet_addr, description)
+ VALUES (inet '192.168.108.203', 'address 203');
+INSERT INTO inet_addr (inet_addr, description)
+ VALUES (inet '192.168.108.204', 'address 204');
+INSERT INTO inet_addr (inet_addr, description)
+ VALUES (inet '192.168.108.205', 'address 205');
+INSERT INTO inet_addr (inet_addr, description)
+ VALUES (inet '192.168.108.206', 'address 206');
+INSERT INTO inet_addr (inet_addr, description)
+ VALUES (inet '192.168.108.207', 'address 207');
+INSERT INTO inet_addr (inet_addr, description)
+ VALUES (inet '192.168.108.208', 'address 208');
+INSERT INTO inet_addr (inet_addr, description)
+ VALUES (inet '192.168.108.209', 'address 209');
+INSERT INTO inet_addr (inet_addr, description)
+ VALUES (inet '192.168.108.210', 'address 210');
+
+--
+-- Table: Hive
+--
+INSERT INTO hive (hive_name, inet_addr_id, description)
+ SELECT 'h81', inet_addr_id, 'Test Hive h081' FROM inet_addr WHERE inet_addr = inet '192.168.108.200';
+
+--
+-- table: packet
+--
+INSERT INTO packet (packet_name, bp_id, hive_id, created, cur_inet_addr_id)
+ SELECT 'hsh00', business_partner.bp_id, hive.hive_id, current_date, inet_addr.inet_addr_id FROM business_partner, hive, inet_addr
+ WHERE hive_name='h81' AND inet_addr = inet '192.168.108.201' AND member_id = 10000;
+INSERT INTO packet (packet_name, bp_id, hive_id, created, cur_inet_addr_id)
+ SELECT 'hsh01', business_partner.bp_id, hive.hive_id, current_date, inet_addr.inet_addr_id FROM business_partner, hive, inet_addr
+ WHERE hive_name='h81' AND inet_addr = inet '192.168.108.202' AND member_id = 10000;
+--
+-- table: unixuser
+--
+INSERT INTO unixuser (name, comment, shell, homedir, locked, packet_id, userid)
+ SELECT 'hsh00', 'packet hsh00', '/bin/bash', '/home/pacs/hsh00', FALSE, packet_id, 10001 FROM packet
+ WHERE packet_name='hsh00';
+INSERT INTO unixuser (name, comment, shell, homedir, locked, packet_id, userid)
+ SELECT 'hsh01', 'packet hsh01', '/bin/bash', '/home/pacs/hsh01', FALSE, packet_id, 10002 FROM packet
+ WHERE packet_name='hsh01';
+INSERT INTO unixuser (name, comment, shell, homedir, locked, packet_id, userid)
+ SELECT 'hsh01-pe', 'hostmaster pe', '/bin/bash', '/home/pacs/hsh01/users/pe', FALSE, packet_id, 10003 FROM packet
+ WHERE packet_name='hsh01';
diff --git a/hsarback/database/schema.sql b/hsarback/database/schema.sql
index cb2a11a..36a6e63 100644
--- a/hsarback/database/schema.sql
+++ b/hsarback/database/schema.sql
@@ -930,10 +930,3 @@ ALTER TABLE ONLY queue_task
ADD CONSTRAINT queue_task_user_id_fkey FOREIGN KEY (user_id) REFERENCES unixuser(unixuser_id) ON DELETE SET NULL;
---
--- Name: queue_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY queue
- ADD CONSTRAINT queue_user_id_fkey FOREIGN KEY (user_id) REFERENCES unixuser(unixuser_id) DEFERRABLE;
-
diff --git a/hsarback/src/de/hsadmin/core/model/AbstractModuleImpl.java b/hsarback/src/de/hsadmin/core/model/AbstractModuleImpl.java
index 86f0f64..a2d2cb7 100644
--- a/hsarback/src/de/hsadmin/core/model/AbstractModuleImpl.java
+++ b/hsarback/src/de/hsadmin/core/model/AbstractModuleImpl.java
@@ -301,11 +301,7 @@ public abstract class AbstractModuleImpl implements ModuleInterface {
*/
public UnixUser getLoginUser() {
if (loginUser == null) {
- log.debug("getting login user");
- Query userQuery = transaction.getEntityManager().createQuery("SELECT u FROM UnixUsers u WHERE u.name=:name");
- userQuery.setParameter("name", transaction.getLoginName());
- loginUser = (UnixUser) userQuery.getSingleResult();
- log.debug("found login user: " + loginUser.getName());
+ loginUser = transaction.getLoginUser();
}
return loginUser;
}
diff --git a/hsarback/src/de/hsadmin/core/model/Transaction.java b/hsarback/src/de/hsadmin/core/model/Transaction.java
index 52f5d73..27cfb87 100644
--- a/hsarback/src/de/hsadmin/core/model/Transaction.java
+++ b/hsarback/src/de/hsadmin/core/model/Transaction.java
@@ -12,6 +12,7 @@ import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
+import javax.persistence.Query;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -22,6 +23,7 @@ import de.hsadmin.cliClientConnector.TechnicalException;
import de.hsadmin.core.model.onetier.PersistenceManager;
import de.hsadmin.core.qserv.QueueClient;
import de.hsadmin.core.qserv.QueueTask;
+import de.hsadmin.mods.user.UnixUser;
public class Transaction {
@@ -176,4 +178,15 @@ public class Transaction {
}
}
+ public UnixUser getLoginUser() {
+ String loginName = getLoginName();
+ if (loginName != null && loginName.length() == 2) {
+ loginName = "hsh01-" + loginName;
+ }
+ Query userQuery = getEntityManager().createQuery("SELECT u FROM UnixUsers u WHERE u.name = :username");
+ userQuery.setParameter("username", loginName);
+ UnixUser unixUser = (UnixUser) userQuery.getSingleResult();
+ return unixUser;
+ }
+
}
diff --git a/hsarback/src/de/hsadmin/mods/user/UnixUser.java b/hsarback/src/de/hsadmin/mods/user/UnixUser.java
index 57594db..f3d27fe 100644
--- a/hsarback/src/de/hsadmin/mods/user/UnixUser.java
+++ b/hsarback/src/de/hsadmin/mods/user/UnixUser.java
@@ -16,6 +16,7 @@ import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;
+import de.hsadmin.core.model.AbstractEntity;
import de.hsadmin.core.model.EntityInfo;
import de.hsadmin.core.model.FieldValidation;
import de.hsadmin.mods.pac.Pac;
@@ -24,7 +25,7 @@ import de.hsadmin.mods.pac.Pac;
@Table(name = "unixuser")
@SequenceGenerator(name = "UnixUsersSeqGen", sequenceName = "unixuser_unixuser_id_seq")
@EntityInfo(name = "UNIX-Zugang/Mailbox")
-public class UnixUser extends de.hsadmin.core.model.AbstractEntity implements Serializable {
+public class UnixUser extends AbstractEntity implements Serializable {
private static final long serialVersionUID = 7823071611805642906L;
@@ -269,7 +270,8 @@ public class UnixUser extends de.hsadmin.core.model.AbstractEntity implements Se
*/
public boolean hasHostmasterRole() {
// TODO: hardcoded Hostsharing conventions
- return getName().length() == 2;
+ String login = getName();
+ return login.length() == 2 || ((login.startsWith("hsh01-") && login.length() == 8));
}
/**
diff --git a/hsarback/src/de/hsadmin/remote/AbstractRemote.java b/hsarback/src/de/hsadmin/remote/AbstractRemote.java
index 8223740..9511c3e 100644
--- a/hsarback/src/de/hsadmin/remote/AbstractRemote.java
+++ b/hsarback/src/de/hsadmin/remote/AbstractRemote.java
@@ -41,8 +41,7 @@ public abstract class AbstractRemote implements IRemote {
try {
if (authentication.login(user, ticket)) {
ModuleInterface module = new GenericModuleImpl(transaction);
- UnixUser unixUser = null;
- unixUser = (UnixUser) module.findByString(UnixUser.class, user);
+ UnixUser unixUser = transaction.getLoginUser();
List list = module.search(getEntityClass(),
buildQueryCondition(whereParams), null);
if (list == null) {
@@ -103,8 +102,7 @@ public abstract class AbstractRemote implements IRemote {
try {
if (authentication.login(user, ticket)) {
ModuleInterface module = new GenericModuleImpl(transaction);
- UnixUser unixUser = null;
- unixUser = (UnixUser) module.findByString(UnixUser.class, user);
+ UnixUser unixUser = transaction.getLoginUser();
String queryCondition = buildQueryCondition(whereParams);
if (queryCondition == null || queryCondition.length() == 0) {
throw new HSAdminException(
@@ -141,8 +139,7 @@ public abstract class AbstractRemote implements IRemote {
try {
if (authentication.login(user, ticket)) {
ModuleInterface module = new GenericModuleImpl(transaction);
- UnixUser unixUser = null;
- unixUser = (UnixUser) module.findByString(UnixUser.class, user);
+ UnixUser unixUser = transaction.getLoginUser();
ArrayList