This commit is contained in:
parent
00ed10014d
commit
89e4f30bcf
|
@ -3,7 +3,8 @@
|
|||
|
||||
<SessionHandler class="ch.eitchnet.privilege.handler.DefaultSessionHandler">
|
||||
<Parameters>
|
||||
<Parameter name="userXmlFile" value="PrivilegeUsers.xml" />
|
||||
<Parameter name="usersXmlFile" value="PrivilegeUsers.xml" />
|
||||
<Parameter name="rolesXmlFile" value="PrivilegeRoles.xml" />
|
||||
</Parameters>
|
||||
</SessionHandler>
|
||||
<EncryptionHandler class="ch.eitchnet.privilege.handler.DefaultEncryptionHandler">
|
||||
|
@ -13,7 +14,7 @@
|
|||
</EncryptionHandler>
|
||||
<PolicyHandler class="ch.eitchnet.privilege.handler.DefaultPolicyHandler">
|
||||
<Parameters>
|
||||
<Parameter name="policyXmlFile" value="RestrictionPolicy.xml" />
|
||||
<Parameter name="policyXmlFile" value="RestrictionPolicies.xml" />
|
||||
</Parameters>
|
||||
</PolicyHandler>
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<PrivilegeRoles>
|
||||
|
||||
<Role name="">
|
||||
<Privilege name="">
|
||||
<allAllowed></allAllowed>
|
||||
<Role name="admin">
|
||||
<Privilege name="Service" policy="default">
|
||||
<allAllowed>true</allAllowed>
|
||||
<deny></deny>
|
||||
<allow></allow>
|
||||
</Privilege>
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<PrivilegesUsers>
|
||||
|
||||
<User username="" firstname="" surname="" state="">
|
||||
<User username="eitch" password="adc83b19e793491b1c6ea0fd8b46cd9f32e592fc">
|
||||
<firstname>Robert</firstname>
|
||||
<surname>von Burg</surname>
|
||||
<state>NEW</state>
|
||||
<locale>en_GB</locale>
|
||||
<Roles>
|
||||
<Role></Role>
|
||||
<role>admin</role>
|
||||
</Roles>
|
||||
</User>
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<RestrictionPolicies>
|
||||
|
||||
<Policy name="" class="" />
|
||||
<Policy name="default" class="ch.eitchnet.privilege.policy.DefaultRestriction" />
|
||||
|
||||
</RestrictionPolicies>
|
|
@ -19,12 +19,28 @@ public class XmlConstants {
|
|||
public static final String XML_HANDLER_SESSION = "SessionHandler";
|
||||
public static final String XML_HANDLER_POLICY = "PolicyHandler";
|
||||
|
||||
public static final String XML_ROLES = "Roles";
|
||||
public static final String XML_ROLE = "role";
|
||||
public static final String XML_USER = "User";
|
||||
public static final String XML_PRIVILEGE = "Privilege";
|
||||
public static final String XML_POLICY = "Policy";
|
||||
public static final String XML_PARAMETERS = "Parameters";
|
||||
public static final String XML_ALL_ALLOWED = "allAllowed";
|
||||
public static final String XML_DENY = "deny";
|
||||
public static final String XML_ALLOW = "allow";
|
||||
public static final String XML_FIRSTNAME = "firstname";
|
||||
public static final String XML_SURNAME = "surname";
|
||||
public static final String XML_STATE = "state";
|
||||
public static final String XML_LOCALE = "locale";
|
||||
|
||||
public static final String XML_ATTR_CLASS = "class";
|
||||
public static final String XML_ATTR_NAME = "name";
|
||||
public static final String XML_ATTR_POLICY = "policy";
|
||||
public static final String XML_ATTR_USERNAME = "username";
|
||||
public static final String XML_ATTR_PASSWORD = "password";
|
||||
|
||||
public static final String XML_PARAM_HASH_ALGORITHM = "hashAlgorithm";
|
||||
public static final String XML_PARAM_POLICY_FILE = "policyXmlFile";
|
||||
public static final String XML_PARAM_ROLES_FILE = "rolesXmlFile";
|
||||
public static final String XML_PARAM_USERS_FILE = "usersXmlFile";
|
||||
}
|
||||
|
|
|
@ -10,12 +10,19 @@
|
|||
|
||||
package ch.eitchnet.privilege.handler;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.dom4j.Element;
|
||||
|
||||
import ch.eitchnet.privilege.base.PrivilegeContainer;
|
||||
import ch.eitchnet.privilege.base.XmlConstants;
|
||||
import ch.eitchnet.privilege.helper.ConfigurationHelper;
|
||||
import ch.eitchnet.privilege.helper.XmlHelper;
|
||||
import ch.eitchnet.privilege.i18n.AccessDeniedException;
|
||||
import ch.eitchnet.privilege.i18n.PrivilegeException;
|
||||
import ch.eitchnet.privilege.model.Certificate;
|
||||
|
@ -173,9 +180,104 @@ public class DefaultSessionHandler implements SessionHandler {
|
|||
* @see ch.eitchnet.privilege.base.PrivilegeContainerObject#initialize(org.dom4j.Element)
|
||||
*/
|
||||
public void initialize(Element element) {
|
||||
|
||||
// get parameters
|
||||
Element parameterElement = element.element(XmlConstants.XML_PARAMETERS);
|
||||
Map<String, String> parameterMap = ConfigurationHelper.convertToParameterMap(parameterElement);
|
||||
|
||||
// get roles file name
|
||||
String rolesFileName = parameterMap.get(XmlConstants.XML_PARAM_ROLES_FILE);
|
||||
if (rolesFileName == null || rolesFileName.isEmpty()) {
|
||||
throw new PrivilegeException("[" + SessionHandler.class.getName() + "] Defined parameter "
|
||||
+ XmlConstants.XML_PARAM_ROLES_FILE + " is invalid");
|
||||
}
|
||||
|
||||
// get roles file
|
||||
File rolesFile = new File(PrivilegeContainer.getInstance().getBasePath() + "/" + rolesFileName);
|
||||
if (!rolesFile.exists()) {
|
||||
throw new PrivilegeException("[" + SessionHandler.class.getName() + "] Defined parameter "
|
||||
+ XmlConstants.XML_PARAM_ROLES_FILE + " is invalid as roles file does not exist at path "
|
||||
+ rolesFile.getAbsolutePath());
|
||||
}
|
||||
|
||||
// parse roles xml file to XML document
|
||||
Element rolesRootElement = XmlHelper.parseDocument(rolesFile).getRootElement();
|
||||
readRoles(rolesRootElement);
|
||||
|
||||
// TODO read roles
|
||||
|
||||
// get users file name
|
||||
String usersFileName = parameterMap.get(XmlConstants.XML_PARAM_USERS_FILE);
|
||||
if (usersFileName == null || usersFileName.isEmpty()) {
|
||||
throw new PrivilegeException("[" + SessionHandler.class.getName() + "] Defined parameter "
|
||||
+ XmlConstants.XML_PARAM_USERS_FILE + " is invalid");
|
||||
}
|
||||
|
||||
// get users file
|
||||
File usersFile = new File(PrivilegeContainer.getInstance().getBasePath() + "/" + usersFileName);
|
||||
if (!usersFile.exists()) {
|
||||
throw new PrivilegeException("[" + SessionHandler.class.getName() + "] Defined parameter "
|
||||
+ XmlConstants.XML_PARAM_USERS_FILE + " is invalid as users file does not exist at path "
|
||||
+ usersFile.getAbsolutePath());
|
||||
}
|
||||
|
||||
// parse users xml file to XML document
|
||||
Element usersRootElement = XmlHelper.parseDocument(usersFile).getRootElement();
|
||||
readUsers(usersRootElement);
|
||||
|
||||
// TODO read users
|
||||
|
||||
// TODO implement
|
||||
}
|
||||
|
||||
/**
|
||||
* @param usersRootElement
|
||||
*/
|
||||
private void readUsers(Element usersRootElement) {
|
||||
|
||||
List<Element> userElements = usersRootElement.elements(XmlConstants.XML_USER);
|
||||
for (Element userElement : userElements) {
|
||||
|
||||
String username = userElement.attributeValue(XmlConstants.XML_ATTR_USERNAME);
|
||||
String password = userElement.attributeValue(XmlConstants.XML_ATTR_PASSWORD);
|
||||
|
||||
String firstname = userElement.element(XmlConstants.XML_FIRSTNAME).getTextTrim();
|
||||
String surname = userElement.element(XmlConstants.XML_SURNAME).getTextTrim();
|
||||
|
||||
UserState userState = UserState.valueOf(userElement.element(XmlConstants.XML_STATE).getTextTrim());
|
||||
|
||||
// TODO better handling needed
|
||||
String localeName = userElement.element(XmlConstants.XML_LOCALE).getTextTrim();
|
||||
Locale locale = new Locale(localeName);
|
||||
|
||||
Element rolesElement = userElement.element(XmlConstants.XML_ROLES);
|
||||
List<Element> rolesElementList = rolesElement.elements(XmlConstants.XML_ROLE);
|
||||
List<String> roleList = new LinkedList<String>();
|
||||
for (Element roleElement : rolesElementList) {
|
||||
String roleName = roleElement.getTextTrim();
|
||||
if (roleList.isEmpty()) {
|
||||
logger.warn("User " + username + " has an role defined with empty name, Skipped.");
|
||||
} else {
|
||||
roleList.add(roleName);
|
||||
}
|
||||
}
|
||||
|
||||
// create user
|
||||
User user = User.buildUser(username, password, firstname, surname, userState, roleList, locale);
|
||||
|
||||
// put user in map
|
||||
userMap.put(username, user);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param rolesRootElement
|
||||
*/
|
||||
private void readRoles(Element rolesRootElement) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
private class CertificateSessionPair {
|
||||
private Session session;
|
||||
private Certificate certificate;
|
||||
|
|
Loading…
Reference in New Issue