semanticwfs  Version 0.1.0.0
UserManagementConnection Class Reference

Management class for user connections. More...

Collaboration diagram for UserManagementConnection:

Classes

class  UserHandler
 SAXParser DefaultHandler für das Parsen von einem XML File mit den Benutzerdaten. More...
 

Public Member Functions

String addUser (String userToAdd, String userToAddPasswordHash, String userlevel) throws XMLStreamException, IOException
 Adds a user to the set of users. More...
 
String updateUser (String userToAdd, String userToAddPasswordHash, String userlevel) throws XMLStreamException, IOException
 
String deleteUser (String userToAdd, String userToAddPasswordHash, Integer userlevel) throws XMLStreamException, IOException
 
User login (String username, String password)
 
User loginAuthToken (String authToken)
 Performs a loging using an authentification token. More...
 
String usersToHTML ()
 
void toXML () throws XMLStreamException, IOException
 Exports a user description to XML. More...
 

Static Public Member Functions

static UserManagementConnection getInstance ()
 Gets the current instance of the UserManagementConnection. More...
 

Private Member Functions

 UserManagementConnection ()
 Constructor for this Singleton class. More...
 
String getHashedPassword (String password)
 Generates a hashed password from a String for comparison. More...
 
void readUsers () throws ParserConfigurationException, SAXException
 

Private Attributes

Map< String, UseruserNameToPasswordHash
 
Map< String, UseruuidToUser
 

Static Private Attributes

static UserManagementConnection instance
 
static String USERS ="users.xml"
 

Detailed Description

Management class for user connections.

Constructor & Destructor Documentation

◆ UserManagementConnection()

Constructor for this Singleton class.

42  {
43  this.userNameToPasswordHash=new TreeMap<String,User>();
44  this.uuidToUser=new TreeMap<String,User>();
45  try {
46  this.readUsers();
47  } catch (ParserConfigurationException | SAXException e) {
48  // TODO Auto-generated catch block
49  e.printStackTrace();
50  }
51  }
void readUsers()
Definition: UserManagementConnection.java:160
Map< String, User > userNameToPasswordHash
Definition: UserManagementConnection.java:31
Map< String, User > uuidToUser
Definition: UserManagementConnection.java:33

References UserManagementConnection.readUsers().

Referenced by UserManagementConnection.getInstance().

Member Function Documentation

◆ addUser()

String addUser ( String  userToAdd,
String  userToAddPasswordHash,
String  userlevel 
) throws XMLStreamException, IOException

Adds a user to the set of users.

Parameters
userToAddThe username of the new user
userToAddPasswordHashThe password hash of the new user
userlevelThe user level assigned to this user
Returns
A String confirming the user creation
Exceptions
XMLStreamExceptionon error
IOExceptionon error
87  {
88  if(this.userNameToPasswordHash.containsKey(userToAdd)){
89  return "User already exists";
90  }
91  User user=new User();
92  user.setName(userToAdd);
93  user.setPasswordHash(this.getHashedPassword(userToAddPasswordHash));
94  user.setUserlevel(UserType.valueOf(userlevel));
95  this.userNameToPasswordHash.put(userToAdd, user);
96  this.toXML();
97  return "User successfully added";
98  }
void toXML()
Exports a user description to XML.
Definition: UserManagementConnection.java:189
String getHashedPassword(String password)
Generates a hashed password from a String for comparison.
Definition: UserManagementConnection.java:58

References UserManagementConnection.getHashedPassword(), User.setName(), User.setPasswordHash(), User.setUserlevel(), and UserManagementConnection.toXML().

◆ deleteUser()

String deleteUser ( String  userToAdd,
String  userToAddPasswordHash,
Integer  userlevel 
) throws XMLStreamException, IOException
113  {
114  this.userNameToPasswordHash.remove(userToAdd);
115  this.toXML();
116  return "User successfully deleted";
117  }

References UserManagementConnection.toXML().

◆ getHashedPassword()

String getHashedPassword ( String  password)
private

Generates a hashed password from a String for comparison.

Parameters
passwordthe password as plaintext
Returns
The hashed password as String
58  {
59  try {
60  MessageDigest md = MessageDigest.getInstance("SHA-512");
61  byte[] messageDigest = md.digest(password.getBytes());
62  BigInteger number = new BigInteger(1, messageDigest);
63  String hashtext = number.toString(16);
64  // Now we need to zero pad it if you actually want the full 32 chars.
65  while (hashtext.length() < 32) {
66  hashtext = "0" + hashtext;
67  }
68  return hashtext;
69  }catch (NoSuchAlgorithmException e) {
70  throw new RuntimeException(e);
71  }
72  }

Referenced by UserManagementConnection.addUser(), UserManagementConnection.login(), and UserManagementConnection.updateUser().

◆ getInstance()

static UserManagementConnection getInstance ( )
static

Gets the current instance of the UserManagementConnection.

Returns
The instance
153  {
154  if(instance==null){
156  }
157  return instance;
158  }
static UserManagementConnection instance
Definition: UserManagementConnection.java:35
UserManagementConnection()
Constructor for this Singleton class.
Definition: UserManagementConnection.java:42

References UserManagementConnection.instance, and UserManagementConnection.UserManagementConnection().

Referenced by WebService.addEndpoint(), WebService.addFeatureType(), WebService.login(), and WebService.saveFeatureTypes().

◆ login()

User login ( String  username,
String  password 
)
119  {
120  System.out.println("UserNameToPasswordHash: "+userNameToPasswordHash.toString());
121  if(!this.userNameToPasswordHash.containsKey(username)){
122  System.out.println("Not logged in: Username "+username+" does not exist! ");
123  return null;//"usernamenotex_false";
124  }
125  if(this.getHashedPassword(password).equals(this.userNameToPasswordHash.get(username).getPasswordHash())){
126  System.out.println("Logged in: "+this.userNameToPasswordHash.get(username).toString());
127  User user=this.userNameToPasswordHash.get(username);
128  user.setUuid(UUID.randomUUID().toString());
129  return this.userNameToPasswordHash.get(username);//"loginsuccessful_true";
130  }
131  System.out.println("Not logged in: Login failed! ");
132  return null;//"loginfailed_false";
133  }

References UserManagementConnection.getHashedPassword(), User.setUuid(), and UserManagementConnection.userNameToPasswordHash.

Referenced by WebService.login().

◆ loginAuthToken()

User loginAuthToken ( String  authToken)

Performs a loging using an authentification token.

Parameters
authTokenThe authentification token
Returns
140  {
141  System.out.println("UserNameToPasswordHash: "+userNameToPasswordHash.toString());
142  if(!this.uuidToUser.containsKey(authToken)){
143  System.out.println("Not logged in: Auth Token is invalid! ");
144  return this.uuidToUser.get(authToken);//"usernamenotex_false";
145  }
146  return null;
147  }

References UserManagementConnection.userNameToPasswordHash.

Referenced by WebService.addEndpoint(), WebService.addFeatureType(), and WebService.saveFeatureTypes().

◆ readUsers()

void readUsers ( ) throws ParserConfigurationException, SAXException
private
160  {
161  SAXParser parser=SAXParserFactory.newInstance().newSAXParser();
162  try {
163  parser.parse(USERS, new UserHandler(this.userNameToPasswordHash,this.uuidToUser));
164  } catch (IOException e) {
165  // TODO Auto-generated catch block
166  e.printStackTrace();
167  }
168  }
static String USERS
Definition: UserManagementConnection.java:37

References UserManagementConnection.USERS.

Referenced by UserManagementConnection.UserManagementConnection().

◆ toXML()

void toXML ( ) throws XMLStreamException, IOException

Exports a user description to XML.

Exceptions
XMLStreamExceptionon streaming errors
IOExceptionon writing errors
189  {
190  StringWriter sw = new StringWriter();
191  XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newInstance();
192  XMLStreamWriter xmlStreamWriter = xmlOutputFactory.createXMLStreamWriter(sw);
193  xmlStreamWriter.writeStartDocument();
194  xmlStreamWriter.writeStartElement("data");
195  for(String name:userNameToPasswordHash.keySet()){
196  xmlStreamWriter.writeStartElement("user");
197  xmlStreamWriter.writeAttribute("name", name);
198  xmlStreamWriter.writeAttribute("password", userNameToPasswordHash.get(name).getPasswordHash());
199  xmlStreamWriter.writeAttribute("level", userNameToPasswordHash.get(name).getUserlevel().toString());
200  xmlStreamWriter.writeEndElement();
201  }
202  xmlStreamWriter.writeEndElement();
203  xmlStreamWriter.writeEndDocument();
204  xmlStreamWriter.flush();
205  xmlStreamWriter.close();
206  FileWriter writer=new FileWriter(new File(USERS));
207  writer.write(sw.toString());
208  writer.close();
209  }

References UserManagementConnection.userNameToPasswordHash, and UserManagementConnection.USERS.

Referenced by UserManagementConnection.addUser(), UserManagementConnection.deleteUser(), and UserManagementConnection.updateUser().

◆ updateUser()

String updateUser ( String  userToAdd,
String  userToAddPasswordHash,
String  userlevel 
) throws XMLStreamException, IOException
100  {
101  if(!this.userNameToPasswordHash.containsKey(userToAdd)){
102  return "User does not exist";
103  }
104  User user=new User();
105  user.setName(userToAdd);
106  user.setPasswordHash(this.getHashedPassword(userToAddPasswordHash));
107  user.setUserlevel(UserType.valueOf(userlevel));
108  this.userNameToPasswordHash.put(userToAdd, user);
109  this.toXML();
110  return "User successfully edited";
111  }

References UserManagementConnection.getHashedPassword(), User.setName(), User.setPasswordHash(), User.setUserlevel(), and UserManagementConnection.toXML().

◆ usersToHTML()

String usersToHTML ( )
170  {
171  StringBuilder result=new StringBuilder();
172  if(userNameToPasswordHash.isEmpty()){
173  return "<tr><td>No user available!</td></tr>";
174  }
175  for(String user:this.userNameToPasswordHash.keySet()){
176  User usr=this.userNameToPasswordHash.get(user);
177  result.append(usr.getName());
178  result.append(",");
179  result.append(usr.getUserlevel()+";");
180  }
181  return result.substring(0,result.length()-1).toString();
182  }

References User.getName(), User.getUserlevel(), User.toString(), and UserManagementConnection.userNameToPasswordHash.

Member Data Documentation

◆ instance

◆ userNameToPasswordHash

◆ USERS

String USERS ="users.xml"
staticprivate

◆ uuidToUser

Map<String,User> uuidToUser
private