View Javadoc

1   package twcsckernel.serverKernel.utils;
2   
3   import java.io.IOException;
4   import java.util.Collections;
5   import java.util.Map;
6   
7   import twcsckernel.serverKernel.io.UserIO;
8   
9   /***
10   * Kontener zarejestrowanych użytkowników wraz z zarządzaniem.
11   * 
12   * @author VMD Group
13   * 
14   */
15  public class RegisteredUsers {
16  	Map<String, UserData> logins = null;
17  
18  	UserIO userIO;
19  
20  	/***
21  	 * Konstruktor ustawia podany manager I/O i odczytuje wszystkich
22  	 * użytkowników.
23  	 * 
24  	 * @param userIO -
25  	 *            obiekt zarządzający operacjami I/O użytkowników
26  	 * @throws IOException -
27  	 *             błąd odczytu
28  	 */
29  	public RegisteredUsers(UserIO userIO) throws IOException {
30  		this.userIO = userIO;
31  		logins = Collections.synchronizedMap(userIO.readUsers());
32  	}
33  
34  	/***
35  	 * Metoda sprawdza czy podane hasło w postaci jawnej zgadza się z
36  	 * zahaszowanym hasłem z bazy użytkowników.
37  	 * 
38  	 * @param login -
39  	 *            login użytkownika
40  	 * @param passwd -
41  	 *            hasło użytkownika
42  	 * @return - <code>true</code> jeśli hasło zostało poprawnie zweryfikowane
43  	 *         lub <code>false</code> w przeciwnym wypadku
44  	 */
45  	public boolean checkPassword(String login, String passwd) {
46  		if (logins.get(login) != null) {
47  			UserData userData = logins.get(login);
48  			if (Encoder.hashPassword(passwd)
49  					.equals(userData.getEncodedPasswd()))
50  				return true;
51  		}
52  		return false;
53  
54  	}
55  
56  	/***
57  	 * Metoda dodaje nowego użytkownika do bazy zarejestrowanych użytkowników.
58  	 * 
59  	 * @param data -
60  	 *            dane użytkownika do dodania
61  	 * @return - <code>true</code> jeśli operacja się powiodła (nie było
62  	 *         takiego użytkonika) lub <code>false</code> w przeciwnym wypadku
63  	 * @throws IOException -
64  	 *             błąd zapisu
65  	 */
66  	public boolean addNewUser(UserData data) throws IOException {
67  		if (!logins.containsKey(data.getLogin()))
68  			return userIO.addNewUser(data);
69  		return false;
70  	}
71  
72  	/***
73  	 * Metoda usuwa użytkownika o podanym loginie z bazy.
74  	 * 
75  	 * @param login -
76  	 *            login użytkownika do usunięcia
77  	 * @return - <code>true</code> jeśli operacja się powiodła lub
78  	 *         <code>false</code> w przeciwnym wypadku
79  	 * @throws IOException - błąd zapisu
80  	 */
81  	public boolean removeUser(String login) throws IOException {
82  		return userIO.removeUser(login, logins);
83  	}
84  
85  	/***
86  	 * @return - talibca zarejestrowanych użytkowników
87  	 */
88  	public UserData[] getRegisteredUsers() {
89  		return logins.values().toArray(new UserData[0]);
90  	}
91  
92  	/***
93  	 * @param login - login użytkownika
94  	 * @return - dane użytkownika o wskazanym loginie
95  	 */
96  	public UserData getUserData(String login) {
97  		return logins.get(login);
98  	}
99  
100 }