You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2018/04/06 16:43:46 UTC

[openmeetings] branch 4.0.x updated: [OPENMEETINGS-1864] initial code clean-up

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch 4.0.x
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/4.0.x by this push:
     new c1902bc  [OPENMEETINGS-1864] initial code clean-up
c1902bc is described below

commit c1902bc967bf76464f662451d9054e8726d42014
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Fri Apr 6 23:43:34 2018 +0700

    [OPENMEETINGS-1864] initial code clean-up
---
 .../openmeetings/core/ldap/LdapLoginManager.java   |   3 +-
 .../openmeetings/core/remote/MobileService.java    |  19 +--
 .../core/util/StrongPasswordValidator.java         |  15 +-
 .../db/dao/basic/ConfigurationDao.java             |  22 +++
 .../openmeetings/db/dao/user/IUserManager.java     |  20 +--
 .../apache/openmeetings/db/dao/user/UserDao.java   |  10 +-
 .../apache/openmeetings/db/util/UserHelper.java    |  38 -----
 .../apache/openmeetings/backup/BackupImport.java   |   4 +-
 .../java/org/apache/openmeetings/cli/Admin.java    |   5 +-
 .../installation/ImportInitvalues.java             |   3 +-
 .../openmeetings/service/user/UserManager.java     | 158 ++++++---------------
 .../openmeetings/util/OpenmeetingsVariables.java   |  18 +++
 .../openmeetings/web/admin/users/UserForm.java     |  15 +-
 .../openmeetings/web/admin/users/UsersPanel.java   |   3 +-
 .../apache/openmeetings/web/app/WebSession.java    |   3 +-
 .../web/pages/auth/ForgetPasswordDialog.java       |   5 +-
 .../web/pages/auth/RegisterDialog.java             |  23 +--
 .../web/pages/auth/ResetPasswordDialog.java        |   5 +-
 .../web/pages/install/InstallWizard.java           |   3 +-
 .../web/user/profile/ChangePasswordDialog.java     |   5 +-
 .../apache/openmeetings/backup/TestOldBackups.java |   3 -
 .../apache/openmeetings/domain/TestAddGroup.java   |   5 -
 .../apache/openmeetings/user/TestUserContact.java  |   4 -
 .../apache/openmeetings/user/TestUserGroup.java    |   3 -
 .../openmeetings/webservice/UserWebService.java    |  19 ++-
 25 files changed, 139 insertions(+), 272 deletions(-)

diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManager.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManager.java
index 1b3a6a3..ea16e07 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManager.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManager.java
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.core.ldap;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.apache.openmeetings.db.dao.user.UserDao.getNewUserInstance;
 import static org.apache.openmeetings.db.util.LocaleHelper.validateCountry;
 import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone;
 import static org.apache.openmeetings.util.OmException.BAD_CREDENTIALS;
@@ -340,7 +341,7 @@ public class LdapLoginManager {
 				throw BAD_CREDENTIALS;
 			}
 			if (u == null) {
-				u = userDao.getNewUserInstance(null);
+				u = getNewUserInstance(null);
 				u.setType(Type.ldap);
 				u.getRights().remove(Right.Login);
 				u.setDomainId(domainId);
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
index 4260bae..8c61176 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
@@ -20,7 +20,6 @@ package org.apache.openmeetings.core.remote;
 
 import static org.apache.openmeetings.db.util.LocaleHelper.getCountryName;
 import static org.apache.openmeetings.util.OmException.UNKNOWN;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_GROUP_ID;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_EMAIL_VERIFICATION;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MYROOMS_ENABLED;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REGISTER_FRONTEND;
@@ -170,23 +169,15 @@ public class MobileService {
 				String country = umap.get("stateId");
 				Long langId = Long.valueOf(umap.get("langId"));
 
-				String hash = UUID.randomUUID().toString();
-
-				String baseURL = getBaseUrl();
-				boolean sendConfirmation = !Strings.isEmpty(baseURL)
-						&& cfgDao.getBool(CONFIG_EMAIL_VERIFICATION, false);
-				Object user = userManager.registerUserInit(UserDao.getDefaultRights(), login, password, lastname
-						, firstname, email, null /* age/birthday */, "" /* street */
-						, "" /* additionalname */, "" /* fax */, "" /* zip */, country
-						, "" /* town */, langId, true /* sendWelcomeMessage */
-						, Arrays.asList(cfgDao.getLong(CONFIG_DEFAULT_GROUP_ID, null)),
-						"" /* phone */, false, sendConfirmation, TimeZone.getTimeZone(tzId),
-						false /* forceTimeZoneCheck */, "" /* userOffers */, "" /* userSearchs */, false /* showContactData */,
-						true /* showContactDataToContacts */, hash);
+				Object user = userManager.registerUser(login, password, lastname
+						, firstname, email, country, langId, tzId);
 				if (user == null) {
 					//do nothing
 				} else if (user instanceof User) {
 					User u = (User)user;
+					String baseURL = getBaseUrl();
+					boolean sendConfirmation = !Strings.isEmpty(baseURL)
+							&& cfgDao.getBool(CONFIG_EMAIL_VERIFICATION, false);
 					if (sendConfirmation) {
 						add(result, PARAM_STATUS, -666L);
 					} else {
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/StrongPasswordValidator.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/StrongPasswordValidator.java
index d0097c9..0147c9a 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/StrongPasswordValidator.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/StrongPasswordValidator.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.core.util;
 
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getMinPasswdLength;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKey;
 
 import java.util.Map;
@@ -35,16 +36,14 @@ import org.slf4j.Logger;
 public class StrongPasswordValidator implements IValidator<String> {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = Red5LoggerFactory.getLogger(StrongPasswordValidator.class, getWebAppRootKey());
-	private final int minLength;
 	private final boolean web;
 	private User u;
 
-	public StrongPasswordValidator(final int minLength, final User u) {
-		this(true, minLength, u);
+	public StrongPasswordValidator(final User u) {
+		this(true, u);
 	}
 
-	public StrongPasswordValidator(final boolean web, final int minLength, final User u) {
-		this.minLength = minLength;
+	public StrongPasswordValidator(final boolean web, final User u) {
 		this.web = web;
 		this.u = u;
 	}
@@ -65,8 +64,8 @@ public class StrongPasswordValidator implements IValidator<String> {
 		return password == null || password.equals(password.toUpperCase());
 	}
 
-	private boolean badLength(String password) {
-		return password == null || password.length() < minLength;
+	private static boolean badLength(String password) {
+		return password == null || password.length() < getMinPasswdLength();
 	}
 
 	private static boolean checkWord(String password, String word) {
@@ -125,7 +124,7 @@ public class StrongPasswordValidator implements IValidator<String> {
 	@Override
 	public void validate(IValidatable<String> pass) {
 		if (badLength(pass.getValue())) {
-			error(pass, "bad.password.short", new MicroMap<String, Object>("0", minLength));
+			error(pass, "bad.password.short", new MicroMap<String, Object>("0", getMinPasswdLength()));
 		}
 		if (noLowerCase(pass.getValue())) {
 			error(pass, "bad.password.lower");
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
index c370666..f3aa65f 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
@@ -39,9 +39,11 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_HEADER_X
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_KEYCODE_ARRANGE;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_KEYCODE_EXCLUSIVE;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_KEYCODE_MUTE;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_LOGIN_MIN_LENGTH;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MAX_UPLOAD_SIZE;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MP4_AUDIO_BITRATE;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MP4_AUDIO_RATE;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PASS_MIN_LENGTH;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REST_ALLOW_ORIGIN;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SIP_ENABLED;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_APP_NAME;
@@ -57,6 +59,8 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.FLASH_QUALITY;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.FLASH_SECURE;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.FLASH_SSL_PORT;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.FLASH_VIDEO_CODEC;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getRoomSettings;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKey;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getWicketApplicationName;
@@ -69,6 +73,8 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.setDefaultLang;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setExtProcessTtl;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setGaCode;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setMaxUploadSize;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.setMinLoginLength;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.setMinPasswdLength;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setRestAllowOrigin;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setRoomSettings;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setSipEnabled;
@@ -351,6 +357,12 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> {
 			case CONFIG_REST_ALLOW_ORIGIN:
 				reloadRestAllowOrigin();
 				break;
+			case CONFIG_LOGIN_MIN_LENGTH:
+				reloadLoginMinLength();
+				break;
+			case CONFIG_PASS_MIN_LENGTH:
+				reloadPasswdMinLength();
+				break;
 		}
 		return entity;
 	}
@@ -422,6 +434,14 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> {
 		setRestAllowOrigin(getString(CONFIG_REST_ALLOW_ORIGIN, null));
 	}
 
+	private void reloadLoginMinLength() {
+		setMinLoginLength(getInt(CONFIG_LOGIN_MIN_LENGTH, USER_LOGIN_MINIMUM_LENGTH));
+	}
+
+	private void reloadPasswdMinLength() {
+		setMinPasswdLength(getInt(CONFIG_LOGIN_MIN_LENGTH, USER_PASSWORD_MINIMUM_LENGTH));
+	}
+
 	public void reinit() {
 		reloadMaxUpload();
 		reloadCrypt();
@@ -435,6 +455,8 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> {
 		reloadTimezone();
 		reloadRestAllowOrigin();
 		reloadRoomSettings();
+		reloadLoginMinLength();
+		reloadPasswdMinLength();
 	}
 
 	private JSONObject reloadRoomSettings() {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/IUserManager.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/IUserManager.java
index 9109612..9faffec 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/IUserManager.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/IUserManager.java
@@ -20,33 +20,19 @@ package org.apache.openmeetings.db.dao.user;
 
 import java.io.IOException;
 import java.security.NoSuchAlgorithmException;
-import java.util.Date;
-import java.util.List;
 import java.util.Locale;
-import java.util.Set;
-import java.util.TimeZone;
 
 import org.apache.openmeetings.db.dto.user.OAuthUser;
 import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.util.OmException;
 
 //HACK to bypass cross project compilation
 public interface IUserManager {
 	Object registerUser(String login, String userpass, String lastname,
-			String firstname, String email, Date age, String street,
-			String additionalname, String fax, String zip, String country,
-			String town, long languageId, String phone, boolean sendSMS,
-			boolean generateSipUserData, String jNameTimeZone, Boolean sendConfirmation);
+			String firstname, String email, String country,
+			long languageId, String tzId);
 
-	Object registerUserInit(Set<Right> rights, String login, String password, String lastname,
-			String firstname, String email, Date age, String street,
-			String additionalname, String fax, String zip, String country,
-			String town, long languageId, boolean sendWelcomeMessage,
-			List<Long> groups, String phone, boolean sendSMS, Boolean sendConfirmation,
-			TimeZone timezone, Boolean forceTimeZoneCheck,
-			String userOffers, String userSearchs, Boolean showContactData,
-			Boolean showContactDataToContacts, String activatedHash) throws OmException, NoSuchAlgorithmException;
+	Object registerUser(User u, String password, String hash) throws OmException, NoSuchAlgorithmException;
 
 	Long getLanguage(Locale loc);
 	User loginOAuth(OAuthUser user, long serverId) throws IOException, NoSuchAlgorithmException;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
index c092bd9..fb03f8e 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
@@ -19,10 +19,10 @@
 package org.apache.openmeetings.db.dao.user;
 
 import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone;
-import static org.apache.openmeetings.db.util.UserHelper.getMinLoginLength;
 import static org.apache.openmeetings.util.DaoHelper.getStringParam;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_USER_ID;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getDefaultLang;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getMinLoginLength;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKey;
 
 import java.security.NoSuchAlgorithmException;
@@ -54,7 +54,6 @@ import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.entity.user.User.Salutation;
 import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
-import org.apache.openmeetings.db.util.UserHelper;
 import org.apache.openmeetings.util.DaoHelper;
 import org.apache.openmeetings.util.OmException;
 import org.apache.openmeetings.util.crypt.CryptProvider;
@@ -98,7 +97,7 @@ public class UserDao implements IGroupAdminDataProviderDao<User> {
 	 * @param currentUser - the user to copy time zone from
 	 * @return new User instance
 	 */
-	public User getNewUserInstance(User currentUser) {
+	public static User getNewUserInstance(User currentUser) {
 		User user = new User();
 		user.setSalutation(Salutation.mr);
 		user.setRights(getDefaultRights());
@@ -107,6 +106,7 @@ public class UserDao implements IGroupAdminDataProviderDao<User> {
 		user.setForceTimeZoneCheck(false);
 		user.setSendSMS(false);
 		user.setAge(new Date());
+		user.setLastlogin(new Date());
 		Address address = new Address();
 		address.setCountry(Locale.getDefault().getCountry());
 		user.setAddress(address);
@@ -367,7 +367,7 @@ public class UserDao implements IGroupAdminDataProviderDao<User> {
 	}
 
 	public boolean validLogin(String login) {
-		return !Strings.isEmpty(login) && login.length() >= UserHelper.getMinLoginLength(cfgDao);
+		return !Strings.isEmpty(login) && login.length() >= getMinLoginLength();
 	}
 
 	private static User getSingle(List<User> list) {
@@ -482,7 +482,7 @@ public class UserDao implements IGroupAdminDataProviderDao<User> {
 			User to = new User();
 			to.setType(Type.contact);
 			String login = owner.getId() + "_" + email; //UserId prefix is used to ensure unique login
-			to.setLogin(login.length() < getMinLoginLength(cfgDao) ? UUID.randomUUID().toString() : login);
+			to.setLogin(login.length() < getMinLoginLength() ? UUID.randomUUID().toString() : login);
 			to.setFirstname(firstName);
 			to.setLastname(lastName);
 			to.setLanguageId(null == langId || null == LabelDao.getLocale(langId) ? owner.getLanguageId() : langId.longValue());
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/UserHelper.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/UserHelper.java
deleted file mode 100644
index 36a7a9a..0000000
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/UserHelper.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.db.util;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_LOGIN_MIN_LENGTH;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PASS_MIN_LENGTH;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH;
-
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-
-public class UserHelper {
-	private UserHelper() {}
-
-	public static int getMinLoginLength(ConfigurationDao cfgDao) {
-		return cfgDao.getInt(CONFIG_LOGIN_MIN_LENGTH, USER_LOGIN_MINIMUM_LENGTH);
-	}
-
-	public static int getMinPasswdLength(ConfigurationDao cfgDao) {
-		return cfgDao.getInt(CONFIG_PASS_MIN_LENGTH, USER_PASSWORD_MINIMUM_LENGTH);
-	}
-}
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
index 621f449..137946c 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
@@ -22,7 +22,6 @@ import static org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER
 import static org.apache.openmeetings.db.entity.user.PrivateMessage.SENT_FOLDER_ID;
 import static org.apache.openmeetings.db.entity.user.PrivateMessage.TRASH_FOLDER_ID;
 import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone;
-import static org.apache.openmeetings.db.util.UserHelper.getMinLoginLength;
 import static org.apache.openmeetings.util.OmFileHelper.BCKP_RECORD_FILES;
 import static org.apache.openmeetings.util.OmFileHelper.BCKP_ROOM_FILES;
 import static org.apache.openmeetings.util.OmFileHelper.CSS_DIR;
@@ -100,6 +99,7 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SMTP_TIM
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SMTP_TIMEOUT_CON;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SMTP_TLS;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SMTP_USER;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getMinLoginLength;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKey;
 
 import java.io.File;
@@ -553,7 +553,7 @@ public class BackupImport {
 		log.info("OAuth2 servers import complete, starting user import");
 		String jNameTimeZone = cfgDao.getString(CONFIG_DEFAULT_TIMEZONE, "Europe/Berlin");
 		List<User> list = readUserList(f, "users.xml", "users");
-		int minLoginLength = getMinLoginLength(cfgDao);
+		int minLoginLength = getMinLoginLength();
 		for (User u : list) {
 			if (u.getLogin() == null) {
 				continue;
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
index 6d21419..00cdfbb 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
@@ -20,7 +20,6 @@ package org.apache.openmeetings.cli;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.openmeetings.db.util.ApplicationHelper.destroyApplication;
-import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_CONTEXT_NAME;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH;
@@ -54,7 +53,6 @@ import org.apache.openmeetings.backup.BackupImport;
 import org.apache.openmeetings.backup.ProgressHolder;
 import org.apache.openmeetings.core.ldap.LdapLoginManager;
 import org.apache.openmeetings.core.util.StrongPasswordValidator;
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.file.FileItemDao;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
@@ -461,8 +459,7 @@ public class Admin {
 		if (cmdl.hasOption("password")) {
 			cfg.setPassword(cmdl.getOptionValue("password"));
 		}
-		ConfigurationDao cfgDao = getApplicationContext().getBean(ConfigurationDao.class);
-		IValidator<String> passValidator = new StrongPasswordValidator(false, getMinPasswdLength(cfgDao), new User());
+		IValidator<String> passValidator = new StrongPasswordValidator(false, new User());
 		Validatable<String> passVal;
 		do {
 			passVal = new Validatable<>(cfg.getPassword());
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
index cc66f0c..3d529fc 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.installation;
 
+import static org.apache.openmeetings.db.dao.user.UserDao.getNewUserInstance;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPLICATION_BASE_URL;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPLICATION_NAME;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPOINTMENT_REMINDER_MINUTES;
@@ -417,7 +418,7 @@ public class ImportInitvalues {
 		org.setInserted(new Date());
 		org = groupDao.update(org, null);
 
-		User u = userDao.getNewUserInstance(null);
+		User u = getNewUserInstance(null);
 		u.setType(User.Type.user);
 		u.getRights().add(Right.Admin);
 		u.getRights().add(Right.Soap);
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
index 057e364..257e792 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openmeetings.service.user;
 
+import static org.apache.openmeetings.db.dao.user.UserDao.getNewUserInstance;
 import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone;
-import static org.apache.openmeetings.db.util.UserHelper.getMinLoginLength;
 import static org.apache.openmeetings.util.OmException.UNKNOWN;
 import static org.apache.openmeetings.util.OmFileHelper.HIBERNATE;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_GROUP_ID;
@@ -27,19 +27,16 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_EMAIL_VE
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REGISTER_SOAP;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getBaseUrl;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getDefaultLang;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getMinLoginLength;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKey;
 
 import java.io.IOException;
 import java.security.NoSuchAlgorithmException;
 import java.security.SecureRandom;
-import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import java.util.Set;
-import java.util.TimeZone;
 import java.util.UUID;
 
 import org.apache.commons.codec.binary.Base64;
@@ -52,11 +49,9 @@ import org.apache.openmeetings.db.dao.user.IUserManager;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.user.OAuthUser;
 import org.apache.openmeetings.db.entity.room.StreamClient;
-import org.apache.openmeetings.db.entity.user.Address;
 import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Right;
-import org.apache.openmeetings.db.entity.user.User.Salutation;
 import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.db.manager.IStreamClientManager;
 import org.apache.openmeetings.service.mail.EmailManager;
@@ -92,6 +87,13 @@ public class UserManager implements IUserManager {
 	@Autowired
 	private IStreamClientManager streamClientManager;
 
+	private boolean sendConfirmation() {
+		String baseURL = getBaseUrl();
+		return baseURL != null
+				&& !baseURL.isEmpty()
+				&& cfgDao.getBool(CONFIG_EMAIL_VERIFICATION, false);
+	}
+
 	/**
 	 * Method to register a new User, User will automatically be added to the
 	 * default user_level(1) new users will be automatically added to the
@@ -102,46 +104,32 @@ public class UserManager implements IUserManager {
 	 * @param lastname - user last name
 	 * @param firstname - user first name
 	 * @param email - user email
-	 * @param age - user birthday
-	 * @param street - user address street
-	 * @param additionalname - user additional name
-	 * @param fax - user fax
-	 * @param zip - user zip code
 	 * @param country - user country code
-	 * @param town - user town
 	 * @param languageId - language id
-	 * @param phone - user phone
-	 * @param sendSMS - should SMS be sent to this user
-	 * @param generateSipUserData - should SIP data be generated
-	 * @param jNameTimeZone - the name of the time zone
-	 * @param _sendConfirmation - should confirmation be sent
+	 * @param tzId - the name of the time zone
 	 * @return {@link User} of code of error as {@link String}
 	 */
 	@Override
 	public Object registerUser(String login, String password, String lastname,
-			String firstname, String email, Date age, String street,
-			String additionalname, String fax, String zip, String country,
-			String town, long languageId, String phone, boolean sendSMS,
-			boolean generateSipUserData, String jNameTimeZone, Boolean _sendConfirmation) {
+			String firstname, String email, String country, long languageId, String tzId) {
 		try {
 			// Checks if FrontEndUsers can register
 			if (cfgDao.getBool(CONFIG_REGISTER_SOAP, false)) {
-				boolean sendConfirmation;
-				if (_sendConfirmation == null) {
-					String baseURL = getBaseUrl();
-					sendConfirmation = baseURL != null
-							&& !baseURL.isEmpty()
-							&& cfgDao.getBool(CONFIG_EMAIL_VERIFICATION, false);
-				} else {
-					sendConfirmation = _sendConfirmation.booleanValue();
-				}
-				Object user = registerUserInit(UserDao.getDefaultRights(), login,
-						password, lastname, firstname, email, age, street,
-						additionalname, fax, zip, country, town, languageId,
-						true, Arrays.asList(cfgDao.getLong(CONFIG_DEFAULT_GROUP_ID, null)), phone,
-						sendSMS, sendConfirmation, getTimeZone(jNameTimeZone), false, "", "", false, true, null);
+				User u = getNewUserInstance(null);
+				u.setFirstname(firstname);
+				u.setLogin(login);
+				u.setLastname(lastname);
+				u.getAddress().setCountry(country);
+				u.getAddress().setEmail(email);
+				u.setTimeZoneId(getTimeZone(tzId).getID());
 
-				if (user instanceof User && sendConfirmation) {
+				// this is needed cause the language is not a needed data at registering
+				u.setLanguageId(languageId != 0 ? languageId : 1);
+				u.getGroupUsers().add(new GroupUser(groupDao.get(cfgDao.getLong(CONFIG_DEFAULT_GROUP_ID, null)), u));
+
+				Object user = registerUser(u, password, null);
+
+				if (user instanceof User && sendConfirmation()) {
 					return -40L;
 				}
 
@@ -156,108 +144,48 @@ public class UserManager implements IUserManager {
 	}
 
 	/**
-	 * @param rights - {@link Right} to be assigned to the user
-	 * @param login - user login
+	 * @param u - User with basic parametrs set
 	 * @param password - user password
-	 * @param lastname - user last name
-	 * @param firstname - user first name
-	 * @param email - user email
-	 * @param age - user birthday
-	 * @param street - user address street
-	 * @param additionalname - user additional name
-	 * @param fax - user fax
-	 * @param zip - user zip code
-	 * @param country - user country code
-	 * @param town - user town
-	 * @param languageId - language id
-	 * @param sendWelcomeMessage - should confirmation email be sent
-	 * @param groups - ids of user groups
-	 * @param phone - user phone
-	 * @param sendSMS - should SMS be sent to this user
-	 * @param sendConfirmation - should confirmation be sent
-	 * @param timezone - the name of the time zone
-	 * @param forceTimeZoneCheck - should time zone be verified by user
-	 * @param userOffers - what user offers
-	 * @param userSearchs - what user searches
-	 * @param showContactData - is contact data publicly visible
-	 * @param showContactDataToContacts - is contact data visible to contacts
-	 * @param activatedHash - activation hash
+	 * @param hash - activation hash
 	 * @return {@link User} of code of error as {@link String}
 	 * @throws NoSuchAlgorithmException in case password hashing algorithm is not found
 	 * @throws OmException in case of any issues with provided data
 	 */
 	@Override
-	public Object registerUserInit(Set<Right> rights, String login, String password, String lastname,
-			String firstname, String email, Date age, String street,
-			String additionalname, String fax, String zip, String country,
-			String town, long languageId, boolean sendWelcomeMessage,
-			List<Long> groups, String phone, boolean sendSMS, Boolean sendConfirmation,
-			TimeZone timezone, Boolean forceTimeZoneCheck,
-			String userOffers, String userSearchs, Boolean showContactData,
-			Boolean showContactDataToContacts, String activatedHash) throws OmException, NoSuchAlgorithmException {
+	public Object registerUser(User u, String password, String hash) throws OmException, NoSuchAlgorithmException {
 		// Check for required data
-		if (login.length() >= getMinLoginLength(cfgDao)) {
+		String login = u.getLogin();
+		if (!Strings.isEmpty(login) && login.length() >= getMinLoginLength()) {
 			// Check for duplicates
 			boolean checkName = userDao.checkLogin(login, User.Type.user, null, null);
+			String email = u.getAddress() == null ? null : u.getAddress().getEmail();
 			boolean checkEmail = Strings.isEmpty(email) || userDao.checkEmail(email, User.Type.user, null, null);
 			if (checkName && checkEmail) {
-				String hash = Strings.isEmpty(activatedHash) ? UUID.randomUUID().toString() : activatedHash;
-				if (sendWelcomeMessage && email.length() != 0) {
-					emailManager.sendMail(login, email, hash, sendConfirmation, languageId);
+				String ahash = Strings.isEmpty(hash) ? UUID.randomUUID().toString() : hash;
+				if (Strings.isEmpty(u.getExternalType())) {
+					if (!Strings.isEmpty(email)) {
+						emailManager.sendMail(login, email, ahash, sendConfirmation(), u.getLanguageId());
+					}
+				} else {
+					u.setType(Type.external);
 				}
-				Address a =  new Address();
-				a.setStreet(street);
-				a.setZip(zip);
-				a.setTown(town);
-				a.setCountry(country);
-				a.setAdditionalname(additionalname);
-				a.setComment("");
-				a.setFax(fax);
-				a.setPhone(phone);
-				a.setEmail(email);
 
 				// If this user needs first to click his E-Mail verification
 				// code then set the status to 0
-				if (sendConfirmation && rights.contains(Right.Login)) {
-					rights.remove(Right.Login);
-				}
-
-				User u = new User();
-				u.setFirstname(firstname);
-				u.setLogin(login);
-				u.setLastname(lastname);
-				u.setAge(age);
-				u.setAddress(a);
-				u.setSendSMS(sendSMS);
-				u.setRights(rights);
-				u.setLastlogin(new Date());
-				u.setSalutation(Salutation.mr);
-				u.setActivatehash(hash);
-				u.setTimeZoneId(timezone.getID());
-				u.setForceTimeZoneCheck(forceTimeZoneCheck);
-				if (!Strings.isEmpty(u.getExternalType())) {
-					u.setType(Type.external);
+				if (sendConfirmation() && u.getRights().contains(Right.Login)) {
+					u.getRights().remove(Right.Login);
 				}
 
-				u.setUserOffers(userOffers);
-				u.setUserSearchs(userSearchs);
-				u.setShowContactData(showContactData);
-				u.setShowContactDataToContacts(showContactDataToContacts);
+				u.setActivatehash(ahash);
 
 				// this is needed cause the language is not a needed data at registering
-				u.setLanguageId(languageId != 0 ? languageId : 1);
 				if (!Strings.isEmpty(password)) {
 					u.updatePassword(cfgDao, password);
 				}
-				if (groups != null) {
-					for (Long grpId : groups) {
-						u.getGroupUsers().add(new GroupUser(groupDao.get(grpId), u));
-					}
-				}
 				u = userDao.update(u, null);
 				log.debug("Added user-Id " + u.getId());
 
-				if (a.getId() != null && u.getId() != null) {
+				if (u.getId() != null) {
 					return u;
 				}
 			} else {
@@ -353,7 +281,7 @@ public class UserManager implements IUserManager {
 		String pass = Base64.encodeBase64String(rawPass);
 		// check if the user already exists and register new one if it's needed
 		if (u == null) {
-			u = userDao.getNewUserInstance(null);
+			u = getNewUserInstance(null);
 			u.setType(Type.oauth);
 			u.getRights().remove(Right.Login);
 			u.setDomainId(serverId);
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
index 6c421ce..429de2c 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
@@ -122,6 +122,8 @@ public class OpenmeetingsVariables {
 	private static String wicketApplicationName = null;
 	private static String applicationName = null;
 	private static int extProcessTtl = 20;
+	private static int minLoginLength = USER_LOGIN_MINIMUM_LENGTH;
+	private static int minPasswdLength = USER_PASSWORD_MINIMUM_LENGTH;
 	private static JSONObject roomSettings = new JSONObject();
 	private static boolean initComplete = false;
 	private static long maxUploadSize = DEFAULT_MAX_UPLOAD_SIZE;
@@ -267,4 +269,20 @@ public class OpenmeetingsVariables {
 	public static void setRestAllowOrigin(String allowOrigin) {
 		restAllowOrigin = allowOrigin;
 	}
+
+	public static int getMinLoginLength() {
+		return minLoginLength;
+	}
+
+	public static void setMinLoginLength(int length) {
+		minLoginLength = length;
+	}
+
+	public static int getMinPasswdLength() {
+		return minPasswdLength;
+	}
+
+	public static void setMinPasswdLength(int length) {
+		minPasswdLength = length;
+	}
 }
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
index 6906092..bc527d5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
@@ -18,11 +18,11 @@
  */
 package org.apache.openmeetings.web.admin.users;
 
+import static org.apache.openmeetings.db.dao.user.UserDao.getNewUserInstance;
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasAdminLevel;
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
-import static org.apache.openmeetings.db.util.UserHelper.getMinLoginLength;
-import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_EMAIL_AT_REGISTER;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getMinLoginLength;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
@@ -109,11 +109,10 @@ public class UserForm extends AdminBaseForm<User> {
 	@Override
 	protected void onInitialize() {
 		super.onInitialize();
-		ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
 		add(password.setResetPassword(false).setLabel(Model.of(getString("110"))).setRequired(false)
-				.add(passValidator = new StrongPasswordValidator(getMinPasswdLength(cfgDao), getModelObject())));
+				.add(passValidator = new StrongPasswordValidator(getModelObject())));
 		login.setLabel(Model.of(getString("108")));
-		add(login.add(minimumLength(getMinLoginLength(cfgDao))));
+		add(login.add(minimumLength(getMinLoginLength())));
 
 		add(new DropDownChoice<>("type", Arrays.asList(Type.values())).add(new OnChangeAjaxBehavior() {
 			private static final long serialVersionUID = 1L;
@@ -231,7 +230,7 @@ public class UserForm extends AdminBaseForm<User> {
 	@Override
 	protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
 		UserDao userDao = getBean(UserDao.class);
-		setModelObject(userDao.getNewUserInstance(userDao.get(getUserId())));
+		setModelObject(getNewUserInstance(userDao.get(getUserId())));
 		update(target);
 	}
 
@@ -241,7 +240,7 @@ public class UserForm extends AdminBaseForm<User> {
 		if (user.getId() != null) {
 			user = getBean(UserDao.class).get(user.getId());
 		} else {
-			user = getBean(UserDao.class).getNewUserInstance(null);
+			user = getNewUserInstance(null);
 		}
 		setModelObject(user);
 		update(target);
@@ -250,7 +249,7 @@ public class UserForm extends AdminBaseForm<User> {
 	private void deleteUser(AjaxRequestTarget target) {
 		UserDao userDao = getBean(UserDao.class);
 		userDao.delete(getModelObject(), getUserId());
-		setModelObject(userDao.getNewUserInstance(userDao.get(getUserId())));
+		setModelObject(getNewUserInstance(userDao.get(getUserId())));
 		update(target);
 	}
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
index fbe680b..6162088 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.web.admin.users;
 
+import static org.apache.openmeetings.db.dao.user.UserDao.getNewUserInstance;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
@@ -107,7 +108,7 @@ public class UsersPanel extends AdminBasePanel {
 		};
 
 		UserDao userDao = getBean(UserDao.class);
-		form = new UserForm("form", listContainer, userDao.getNewUserInstance(userDao.get(getUserId())), warning);
+		form = new UserForm("form", listContainer, getNewUserInstance(userDao.get(getUserId())), warning);
 		form.showNewRecord();
 		add(form, warning);
 		super.onInitialize();
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
index b2c7386..b821913 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.web.app;
 
+import static org.apache.openmeetings.db.dao.user.UserDao.getNewUserInstance;
 import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone;
 import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FULL_FORMAT_STRING;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_MYROOMS;
@@ -223,7 +224,7 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 					UserDao userDao = getBean(UserDao.class);
 					User user = userDao.getExternalUser(remoteUser.getExternalUserId(), remoteUser.getExternalUserType());
 					if (user == null) {
-						user = userDao.getNewUserInstance(null);
+						user = getNewUserInstance(null);
 						user.setFirstname(remoteUser.getFirstname());
 						user.setLastname(remoteUser.getLastname());
 						user.setLogin(remoteUser.getUsername());
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
index b2d45e9..0441e68 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.web.pages.auth;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getBaseUrl;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getMinLoginLength;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.Application.urlForPage;
@@ -30,10 +31,8 @@ import java.util.UUID;
 
 import org.apache.directory.api.util.Strings;
 import org.apache.openmeetings.core.mail.MailHandler;
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.db.util.UserHelper;
 import org.apache.openmeetings.service.mail.template.ResetPasswordTemplate;
 import org.apache.openmeetings.web.common.Captcha;
 import org.apache.openmeetings.web.pages.ResetPage;
@@ -122,7 +121,7 @@ public class ForgetPasswordDialog extends AbstractFormDialog<String> {
 						error(getString("234"));
 					}
 				}
-				if (type == Type.login && n.length() < UserHelper.getMinLoginLength(getBean(ConfigurationDao.class))) {
+				if (type == Type.login && n.length() < getMinLoginLength()) {
 					error(getString("104"));
 				}
 			}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
index a37a18e..6ee8b5b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
@@ -18,20 +18,16 @@
  */
 package org.apache.openmeetings.web.pages.auth;
 
-import static org.apache.openmeetings.db.util.UserHelper.getMinLoginLength;
-import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_GROUP_ID;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_EMAIL_AT_REGISTER;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_EMAIL_VERIFICATION;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getBaseUrl;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getMinLoginLength;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
 
 import java.util.Arrays;
 import java.util.List;
-import java.util.TimeZone;
-import java.util.UUID;
 
 import org.apache.openmeetings.core.util.StrongPasswordValidator;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
@@ -188,17 +184,9 @@ public class RegisterDialog extends NonClosableDialog<String> {
 
 	@Override
 	protected void onSubmit(AjaxRequestTarget target) {
-		String hash = UUID.randomUUID().toString();
-
 		try {
-			getBean(IUserManager.class).registerUserInit(UserDao.getDefaultRights(), login, password, lastName
-					, firstName, email, null /* age/birthday */, "" /* street */
-					, "" /* additionalname */, "" /* fax */, "" /* zip */, country
-					, "" /* town */, lang, true /* sendWelcomeMessage */
-					, Arrays.asList(getBean(ConfigurationDao.class).getLong(CONFIG_DEFAULT_GROUP_ID, null)),
-					"" /* phone */, false, sendConfirmation, TimeZone.getTimeZone(tzModel.getObject()),
-					false /* forceTimeZoneCheck */, "" /* userOffers */, "" /* userSearchs */, false /* showContactData */,
-					true /* showContactDataToContacts */, hash);
+			getBean(IUserManager.class).registerUser(login, password, lastName
+					, firstName, email, country, lang, tzModel.getObject());
 
 		} catch (Exception e) {
 			log.error("[registerUser]", e);
@@ -237,11 +225,10 @@ public class RegisterDialog extends NonClosableDialog<String> {
 		@Override
 		protected void onInitialize() {
 			super.onInitialize();
-			ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
 			firstNameField.setLabel(Model.of(getString("117")));
 			lastNameField.setLabel(Model.of(getString("136")));
-			loginField.add(minimumLength(getMinLoginLength(cfgDao))).setLabel(Model.of(getString("114")));
-			passwordField.setResetPassword(true).add(new StrongPasswordValidator(getMinPasswdLength(cfgDao), new User()) {
+			loginField.add(minimumLength(getMinLoginLength())).setLabel(Model.of(getString("114")));
+			passwordField.setResetPassword(true).add(new StrongPasswordValidator(new User()) {
 				private static final long serialVersionUID = 1L;
 
 				@Override
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
index 210f8ba..42416b4 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
@@ -18,14 +18,12 @@
  */
 package org.apache.openmeetings.web.pages.auth;
 
-import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
 import static org.apache.openmeetings.web.app.Application.getBean;
 
 import java.util.Arrays;
 import java.util.List;
 
 import org.apache.openmeetings.core.util.StrongPasswordValidator;
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.app.Application;
@@ -138,8 +136,7 @@ public class ResetPasswordDialog extends NonClosableDialog<String> {
 			login.setOutputMarkupId(true);
 			add(password = new PasswordTextField("password", new Model<String>()));
 			password.setLabel(Model.of(getString("328"))).setOutputMarkupId(true);
-			ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
-			password.setRequired(false).add(new StrongPasswordValidator(getMinPasswdLength(cfgDao), user));
+			password.setRequired(false).add(new StrongPasswordValidator(user));
 			add(confirmPassword = new PasswordTextField("confirmPassword", new Model<String>()));
 			confirmPassword.setLabel(Model.of(getString("116"))).setOutputMarkupId(true);
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
index 4a9dee0..e0c4c45 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
@@ -20,7 +20,6 @@ package org.apache.openmeetings.web.pages.install;
 
 import static org.apache.openmeetings.core.converter.BaseConverter.EXEC_EXT;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKey;
 import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONES;
 import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONE_SET;
@@ -423,7 +422,7 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> {
 			add(new RequiredTextField<String>("username").setLabel(Model.of(getString("install.wizard.params.step1.username"))).add(minimumLength(USER_LOGIN_MINIMUM_LENGTH)));
 			add(new PasswordTextField("password")
 					.setResetPassword(false).setLabel(Model.of(getString("install.wizard.params.step1.password")))
-					.add(new StrongPasswordValidator(USER_PASSWORD_MINIMUM_LENGTH, new User())));
+					.add(new StrongPasswordValidator(new User())));
 			add(new RequiredTextField<String>("email").setLabel(Model.of(getString("install.wizard.params.step1.email"))).add(RfcCompliantEmailAddressValidator.getInstance()));
 			add(new RequiredTextField<String>("group").setLabel(Model.of(getString("install.wizard.params.step1.group"))));
 		}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ChangePasswordDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ChangePasswordDialog.java
index 95c27a8..ab1bd1a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ChangePasswordDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ChangePasswordDialog.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.web.user.profile;
 
-import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
@@ -27,7 +26,6 @@ import java.util.Arrays;
 import java.util.List;
 
 import org.apache.openmeetings.core.util.StrongPasswordValidator;
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.form.Form;
@@ -91,8 +89,7 @@ public class ChangePasswordDialog extends AbstractFormDialog<String> {
 			}
 		};
 		cancel = new DialogButton("cancel", Model.of(getString("lbl.cancel")));
-		ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
-		passValidator = new StrongPasswordValidator(getMinPasswdLength(cfgDao), getBean(UserDao.class).get(getUserId()));
+		passValidator = new StrongPasswordValidator(getBean(UserDao.class).get(getUserId()));
 		add(form.add(
 				current.setLabel(Model.of(getString("current.password"))).setRequired(true)
 				, pass.setLabel(Model.of(getString("328"))).add(passValidator)
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestOldBackups.java b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestOldBackups.java
index da437ae..2cb3fda 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestOldBackups.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestOldBackups.java
@@ -33,7 +33,6 @@ import org.apache.openmeetings.AbstractJUnitDefaults;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.entity.basic.Configuration;
 import org.junit.After;
 import org.junit.Test;
@@ -48,8 +47,6 @@ public class TestOldBackups extends AbstractJUnitDefaults {
 	@Autowired
 	private BackupImport backupController;
 	@Autowired
-	private GroupDao groupDao;
-	@Autowired
 	private RoomDao roomDao;
 	@Autowired
 	private AppointmentDao appointmentDao;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/domain/TestAddGroup.java b/openmeetings-web/src/test/java/org/apache/openmeetings/domain/TestAddGroup.java
index 5375365..c95a078 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/domain/TestAddGroup.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/domain/TestAddGroup.java
@@ -22,21 +22,16 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKe
 import static org.junit.Assert.assertNotNull;
 
 import org.apache.openmeetings.AbstractJUnitDefaults;
-import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
 import org.junit.Test;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
 
 public class TestAddGroup extends AbstractJUnitDefaults {
 	private static final Logger log = Red5LoggerFactory.getLogger(TestAddGroup.class, getWebAppRootKey());
 
-	@Autowired
-	private GroupDao groupDao;
-
 	@Test
 	public void testAddingGroup() {
 		Group o = new Group();
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserContact.java b/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserContact.java
index e48811e..df0165a 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserContact.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserContact.java
@@ -28,15 +28,11 @@ import java.util.List;
 import java.util.UUID;
 
 import org.apache.openmeetings.AbstractWicketTester;
-import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
 import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
 
 public class TestUserContact extends AbstractWicketTester {
-	@Autowired
-	private GroupDao groupDao;
 
 	@Test
 	public void testGetUser() {
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserGroup.java b/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserGroup.java
index fcf756c..c46e754 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserGroup.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserGroup.java
@@ -26,7 +26,6 @@ import java.util.List;
 import java.util.UUID;
 
 import org.apache.openmeetings.AbstractJUnitDefaults;
-import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.GroupUser;
@@ -41,8 +40,6 @@ public class TestUserGroup extends AbstractJUnitDefaults {
 	public static final String GROUP_NAME = "Test Group";
 	@Autowired
 	private GroupUserDao groupUserDao;
-	@Autowired
-	private GroupDao groupDao;
 
 	private User getValidUser() {
 		for (User u : userDao.getAllBackupUsers()) {
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
index 1e58ae5..2cad7cc 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
@@ -19,14 +19,13 @@
 package org.apache.openmeetings.webservice;
 
 import static org.apache.openmeetings.db.dto.basic.ServiceResult.UNKNOWN;
-import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getDefaultTimezone;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKey;
 import static org.apache.openmeetings.webservice.Constants.TNS;
 import static org.apache.openmeetings.webservice.Constants.USER_SERVICE_NAME;
 import static org.apache.openmeetings.webservice.Constants.USER_SERVICE_PORT_NAME;
 
-import java.util.Date;
+import java.security.NoSuchAlgorithmException;
 import java.util.List;
 import java.util.Locale;
 
@@ -45,7 +44,6 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.core.util.StrongPasswordValidator;
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.server.SOAPLoginDao;
 import org.apache.openmeetings.db.dao.user.IUserManager;
 import org.apache.openmeetings.db.dao.user.UserDao;
@@ -172,8 +170,7 @@ public class UserWebService extends BaseWebService {
 			if (user.getLanguageId() == null) {
 				user.setLanguageId(1L);
 			}
-			ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
-			IValidator<String> passValidator = new StrongPasswordValidator(true, getMinPasswdLength(cfgDao), user.get(userDao));
+			IValidator<String> passValidator = new StrongPasswordValidator(true, user.get(userDao));
 			Validatable<String> passVal = new Validatable<>(user.getPassword());
 			passValidator.validate(passVal);
 			if (!passVal.isValid()) {
@@ -184,12 +181,12 @@ public class UserWebService extends BaseWebService {
 				log.debug("addNewUser::weak password '{}', msg: {}", user.getPassword(), sb);
 				throw new ServiceException(sb.toString());
 			}
-			Object _user = getBean(UserManager.class).registerUser(user.getLogin(), user.getPassword(),
-					user.getLastname(), user.getFirstname(), user.getAddress().getEmail(), new Date(), user.getAddress().getStreet(),
-					user.getAddress().getAdditionalname(), user.getAddress().getFax(), user.getAddress().getZip(), user.getAddress().getCountry()
-					, user.getAddress().getTown(), user.getLanguageId(),
-					"", false, true, // generate SIP Data if the config is enabled
-					tz, confirm);
+			Object _user;
+			try {
+				_user = getBean(UserManager.class).registerUser(user.get(userDao), user.getPassword(), null);
+			} catch (NoSuchAlgorithmException | OmException e) {
+				throw new ServiceException("Unexpected error while creating user");
+			}
 
 			if (_user == null) {
 				throw new ServiceException(UNKNOWN.getMessage());

-- 
To stop receiving notification emails like this one, please contact
solomax@apache.org.