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 }