Contains the services for authentication of clients.
The {@link quest.server.login.LoginController} handles all login and logout
requests of the clients.
Authentication
The authentication of the clients is done through passwords.
When the client sends a login request the password is compared with the
password in the quest database.
If the password matches the client receives a {@link quest.global.login.LoginMessage.S2C_AllowLogin}.
If the passwords don't match the client receives a {@link quest.global.login.LoginMessage.S2C_DenyLogin}.
(un)Registering clients
When a client connects with the server application it isn't authenticated
yet, so instead of a username a unique number is used in the user database.
When the login is succesfull the LoginController registers the user at the
server daemon, that way the number is now replaced with the username and the
clients is allowed to communicate with the chatserver.
When a client wants to logout it notifies the logincontroller, which then
unregisters the client at the server daemon, that way the connection can now
be safely closed.
@author Merijn Evertse