1 package org.argosfields.service;
2
3 import org.apache.commons.lang.NullArgumentException;
4 import org.apache.commons.logging.Log;
5 import org.apache.commons.logging.LogFactory;
6 import org.argosfields.multi.server.GameServer;
7 import org.argosfields.multi.server.IGameServer;
8 import org.argosfields.multi.server.Session;
9 import org.argosfields.persistence.Account;
10 import org.eclipse.jface.preference.IPreferenceStore;
11 import org.eclipse.jface.preference.JFacePreferences;
12
13 /***
14 * LoginManager.java
15 * @author Xavier Cho
16 * @version $Revision: 1.2 $ $Date: 2004/04/17 08:59:18 $
17 */
18 public class LoginManager implements ILoginManager {
19
20 private static Log log = LogFactory.getLog(LoginManager.class);
21
22 private IAccountManager accountManager;
23
24 /***
25 * @see org.argosfields.service.ILoginManager#login(java.lang.String,
26 * java.lang.String)
27 */
28 public String login(final String userName, final String password)
29 throws LoginException {
30
31 if (userName == null) {
32 throw new NullArgumentException("userName");
33 }
34
35 if (password == null) {
36 throw new NullArgumentException("password");
37 }
38
39 if (log.isDebugEnabled()) {
40 log.debug("Authenticating user : " + userName);
41 }
42
43 Account account = accountManager.getAccount(userName);
44 if (account == null) {
45 if (log.isDebugEnabled()) {
46 log.debug("The specified user name does not exist : "
47 + userName);
48 }
49
50 throw new LoginException("error.invalid.user");
51 } else {
52 if (!password.equals(account.getPassword())) {
53 if (log.isDebugEnabled()) {
54 log.debug("Incorrect password for user : " + userName);
55 }
56
57 throw new LoginException("error.incorrect.password");
58 }
59 }
60
61 IGameServer server = GameServer.getInstance();
62 Session session = server.login(userName);
63
64 if (log.isDebugEnabled()) {
65 log.debug("User has been authenticated successfully : "
66 + userName);
67 }
68
69 return session.getSessionId();
70 }
71
72 /***
73 * @see org.argosfields.service.ILoginManager#logout(java.lang.String)
74 */
75 public void logout(final String sessionId) {
76 if (sessionId == null) {
77 throw new NullArgumentException("sessionId");
78 }
79
80 IGameServer server = GameServer.getInstance();
81 server.logout(sessionId);
82 }
83
84 /***
85 * @see org.argosfields.service.ILoginManager#createAccount(org.argosfields.persistence.Account)
86 */
87 public String createAccount(final Account account)
88 throws CreateAccountException, LoginException {
89
90 IPreferenceStore preferences = JFacePreferences.getPreferenceStore();
91 if (!preferences.getBoolean("allow.new.user")) {
92 throw new CreateAccountNotAllowedException();
93 }
94
95 String userName = account.getUserName();
96 if (accountManager.getAccount(userName) == null) {
97 accountManager.createAccount(account);
98
99 IGameServer server = GameServer.getInstance();
100 Session session = session = server.login(userName);
101
102 return session.getSessionId();
103 } else {
104 if (log.isDebugEnabled()) {
105 log.debug("The specified user name already exists : "
106 + userName);
107 }
108
109 throw new DuplicateAccountException();
110 }
111 }
112
113 /***
114 * @return Returns the accountManager.
115 */
116 public IAccountManager getAccountManager() {
117 return accountManager;
118 }
119
120 /***
121 * @param accountManager
122 * The accountManager to set.
123 */
124 public void setAccountManager(final IAccountManager accountManager) {
125 this.accountManager = accountManager;
126 }
127 }
This page was automatically generated by Maven