@Override public void deleteUser(final String userName, String version) throws UserNotFoundException, IOException { final UserInfo info = findUserByUserName(userName); if (info != null) { userStore.delete(info.getConfig().getUid(), version); if (!getAllUsers(1).iterator().hasNext()) { anyUserFound.set(false); } } else { throw new UserNotFoundException(userName); } }
@Override public User getUser(String userName) throws UserNotFoundException { if (SystemUser.SYSTEM_USER.getUserName().equals(userName)) { return SystemUser.SYSTEM_USER; } final UserInfo userInfo = findUserByUserName(userName); if (userInfo == null) { throw new UserNotFoundException(userName); } return fromUserConfig(userInfo.getConfig()); }
/** * Used only by command line for set-password * @param userName username of user whose password is being reset * @param password password * @throws IllegalArgumentException if user does not exist or password doesn't fit minimum requirements */ public void setPassword(String userName, String password) throws IllegalArgumentException { validatePassword(password); UserInfo info = findUserByUserName(userName); if (info == null) { throw new IllegalArgumentException(format("user %s does not exist", userName)); } info.setAuth(buildUserAuth(info.getConfig().getUid(), password)); userStore.put(info.getConfig().getUid(), info); }
@Override public User updateUserName(final String oldUserName, final String newUserName, final User userGroup, final String authKey) throws IOException, IllegalArgumentException, UserNotFoundException { final UserInfo oldUserInfo = findUserByUserName(oldUserName); if (oldUserInfo == null) { throw new UserNotFoundException(oldUserName); if (findUserByUserName(newUserName) != null) { throw UserException.validationError() .message("User [%s] already exists", newUserName)
@Override public User createUser(final User userConfig, final String authKey) throws IOException, IllegalArgumentException { final String userName = userConfig.getUserName(); if (findUserByUserName(userName) != null) { throw UserException.validationError() .message("User [%s] already exists", userName) .build(logger); } validatePassword(authKey); UserConfig newUser = toUserConfig(userConfig) .setUid(new UID(UUID.randomUUID().toString())) .setCreatedAt(System.currentTimeMillis()) .setModifiedAt(userConfig.getCreatedAt()) .setTag(null); UserInfo userInfo = new UserInfo(); userInfo.setConfig(newUser); userInfo.setAuth(buildUserAuth(newUser.getUid(), authKey)); userStore.put(newUser.getUid(), userInfo); // Return the new state return fromUserConfig(newUser); }
@Override public void authenticate(String userName, String password) throws UserLoginException { final UserInfo userInfo = findUserByUserName(userName); if (userInfo == null) { throw new UserLoginException(userName, "Invalid user credentials"); } try { UserAuth userAuth = userInfo.getAuth(); final byte[] authKey = buildUserAuthKey(password, userAuth.getPrefix().toByteArray()); if (!slowEquals(authKey, userAuth.getAuthKey().toByteArray())) { throw new UserLoginException(userName, "Invalid user credentials"); } } catch (InvalidKeySpecException ikse) { throw new UserLoginException(userName, "Invalid user credentials"); } }
@Override public User updateUser(final User userGroup, final String authKey) throws IOException, IllegalArgumentException, UserNotFoundException { UserConfig userConfig = toUserConfig(userGroup); final String userName = userConfig.getUserName(); final UserInfo oldUserInfo = findUserByUserName(userName); if (oldUserInfo == null) { throw new UserNotFoundException(userName); } merge(userConfig, oldUserInfo.getConfig()); userConfig.setModifiedAt(System.currentTimeMillis()); UserInfo newUserInfo = new UserInfo(); newUserInfo.setConfig(userConfig); if(authKey != null){ validatePassword(authKey); newUserInfo.setAuth(buildUserAuth(oldUserInfo.getConfig().getUid(), authKey)); } else { newUserInfo.setAuth(oldUserInfo.getAuth()); } userStore.put(userConfig.getUid(), newUserInfo); // Return the new state return fromUserConfig(userConfig); }