Author: solomax
Date: Thu May 9 19:08:48 2013
New Revision: 1480741
URL: http://svn.apache.org/r1480741
Log:
[OPENMEETINGS-620] Registration dialog is able to register users;
code clean-up;
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/UserManager.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Configuration.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/MainService.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/UserHelper.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/GeneralUserForm.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UserForm.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/UserManager.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/UserManager.java?rev=1480741&r1=1480740&r2=1480741&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/UserManager.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/UserManager.java
Thu May 9 19:08:48 2013
@@ -20,6 +20,7 @@ package org.apache.openmeetings.data.use
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.DEFAUT_LANG_KEY;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.FRONTEND_REGISTER_KEY;
+import static
org.apache.openmeetings.persistence.beans.basic.Configuration.LOGIN_MIN_LENGTH_KEY;
import java.util.Arrays;
import java.util.Date;
@@ -871,7 +872,7 @@ public class UserManager {
if (authLevelUtil.checkModLevel(user_level)) {
Integer userLoginMinimumLength =
configurationDao.getConfValue(
- "user.login.minimum.length",
Integer.class, "4");
+ LOGIN_MIN_LENGTH_KEY, Integer.class,
"4");
if (userLoginMinimumLength == null) {
throw new Exception(
"user.login.minimum.length
problem");
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1480741&r1=1480740&r2=1480741&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java
Thu May 9 19:08:48 2013
@@ -24,6 +24,7 @@ import static org.apache.openmeetings.pe
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.DASHBOARD_SHOW_RSS_KEY;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.DEFAUT_LANG_KEY;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.FRONTEND_REGISTER_KEY;
+import static
org.apache.openmeetings.persistence.beans.basic.Configuration.LOGIN_MIN_LENGTH_KEY;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.MAX_UPLOAD_SIZE_KEY;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.PASS_MIN_LENGTH_KEY;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.RSS_FEED1_KEY;
@@ -444,7 +445,7 @@ public class ImportInitvalues {
null,
"The number of minutes before
reminder emails are send. Set to 0 to disable reminder emails");
- configurationDao.add("user.login.minimum.length", ""
+ configurationDao.add(LOGIN_MIN_LENGTH_KEY, ""
+ InstallationConfig.USER_LOGIN_MINIMUM_LENGTH,
null,
"Number of chars needed in a user login");
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Configuration.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Configuration.java?rev=1480741&r1=1480740&r2=1480741&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Configuration.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/basic/Configuration.java
Thu May 9 19:08:48 2013
@@ -66,6 +66,7 @@ public class Configuration implements Se
public static final String RSS_FEED2_KEY = "rss_feed2";
public static final String FRONTEND_REGISTER_KEY =
"allow_frontend_register";
public static final String PASS_MIN_LENGTH_KEY =
"user.pass.minimum.length";
+ public static final String LOGIN_MIN_LENGTH_KEY =
"user.login.minimum.length";
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/MainService.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/MainService.java?rev=1480741&r1=1480740&r2=1480741&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/MainService.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/MainService.java
Thu May 9 19:08:48 2013
@@ -21,6 +21,7 @@ package org.apache.openmeetings.remote;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.DASHBOARD_SHOW_MYROOMS_KEY;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.DASHBOARD_SHOW_RSS_KEY;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.FRONTEND_REGISTER_KEY;
+import static
org.apache.openmeetings.persistence.beans.basic.Configuration.LOGIN_MIN_LENGTH_KEY;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.MAX_UPLOAD_SIZE_KEY;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.PASS_MIN_LENGTH_KEY;
@@ -731,7 +732,7 @@ public class MainService implements IPen
public List<Configuration> getLoginOptions(String SID) {
try {
return configurationDao.get(FRONTEND_REGISTER_KEY,
"show.facebook.login",
- "user.login.minimum.length",
PASS_MIN_LENGTH_KEY, PASS_MIN_LENGTH_KEY,
+ LOGIN_MIN_LENGTH_KEY,
PASS_MIN_LENGTH_KEY, PASS_MIN_LENGTH_KEY,
"ldap_default_id");
} catch (Exception err) {
log.error("[getLoginOptions]", err);
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/UserHelper.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/UserHelper.java?rev=1480741&r1=1480740&r2=1480741&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/UserHelper.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/UserHelper.java
Thu May 9 19:08:48 2013
@@ -18,12 +18,18 @@
*/
package org.apache.openmeetings.utils;
+import static
org.apache.openmeetings.installation.InstallationConfig.USER_LOGIN_MINIMUM_LENGTH;
import static
org.apache.openmeetings.installation.InstallationConfig.USER_PASSWORD_MINIMUM_LENGTH;
+import static
org.apache.openmeetings.persistence.beans.basic.Configuration.LOGIN_MIN_LENGTH_KEY;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.PASS_MIN_LENGTH_KEY;
import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
public class UserHelper {
+ public static int getMinLoginLength(ConfigurationDao cfgDao) {
+ return cfgDao.getConfValue(LOGIN_MIN_LENGTH_KEY, Integer.class,
"" + USER_LOGIN_MINIMUM_LENGTH);
+ }
+
public static int getMinPasswdLength(ConfigurationDao cfgDao) {
return cfgDao.getConfValue(PASS_MIN_LENGTH_KEY, Integer.class,
"" + USER_PASSWORD_MINIMUM_LENGTH);
}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/GeneralUserForm.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/GeneralUserForm.java?rev=1480741&r1=1480740&r2=1480741&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/GeneralUserForm.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/GeneralUserForm.java
Thu May 9 19:08:48 2013
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.web.components;
+import static org.apache.openmeetings.utils.UserHelper.getMinPasswdLength;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getLanguage;
@@ -25,7 +26,9 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.openmeetings.data.basic.FieldLanguageDao;
+import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
import org.apache.openmeetings.data.basic.dao.OmTimeZoneDao;
+import org.apache.openmeetings.data.user.EmailManager;
import org.apache.openmeetings.data.user.OrganisationManager;
import org.apache.openmeetings.data.user.dao.SalutationDao;
import org.apache.openmeetings.data.user.dao.StateDao;
@@ -36,9 +39,11 @@ import org.apache.openmeetings.persisten
import org.apache.openmeetings.persistence.beans.user.Salutation;
import org.apache.openmeetings.persistence.beans.user.State;
import org.apache.openmeetings.persistence.beans.user.User;
+import org.apache.openmeetings.web.app.WebSession;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.extensions.markup.html.form.DateTextField;
+import
org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
import org.apache.wicket.extensions.yui.calendar.DatePicker;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
@@ -54,7 +59,7 @@ import org.apache.wicket.markup.html.pan
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.validation.validator.EmailAddressValidator;
+import org.apache.wicket.validation.validator.StringValidator;
public class GeneralUserForm extends Form<User> {
private static final long serialVersionUID = 5360667099083510234L;
@@ -67,7 +72,8 @@ public class GeneralUserForm extends For
//TODO should throw exception if non admin User edit somebody
else (or make all fields read-only)
add(passwordField = new PasswordTextField("password", new
Model<String>()));
- passwordField.setRequired(false);
+ ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+
passwordField.setRequired(false).add(StringValidator.minimumLength(getMinPasswdLength(cfgDao)));
SalutationDao salutDao = getBean(SalutationDao.class);
FieldLanguageDao langDao = getBean(FieldLanguageDao.class);
@@ -104,7 +110,7 @@ public class GeneralUserForm extends For
}
}));
- add(new
RequiredTextField<String>("adresses.email").add(EmailAddressValidator.getInstance()));
+ add(new
RequiredTextField<String>("adresses.email").add(RfcCompliantEmailAddressValidator.getInstance()));
add(new TextField<String>("adresses.phone"));
add(new CheckBox("sendSMS"));
DateTextField age = new DateTextField("age");
@@ -143,6 +149,14 @@ public class GeneralUserForm extends For
new
ChoiceRenderer<Organisation_Users>("organisation.name",
"organisation.organisation_id"));
add(orgChoiceList.setEnabled(isAdminForm));
}
+
+ @Override
+ protected void onValidate() {
+
if(getBean(EmailManager.class).checkUserEMail(getModelObject().getAdresses().getEmail()))
{
+ error(WebSession.getString(1000));
+ }
+ super.onValidate();
+ }
public PasswordTextField getPasswordField() {
return passwordField;
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UserForm.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UserForm.java?rev=1480741&r1=1480740&r2=1480741&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UserForm.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UserForm.java
Thu May 9 19:08:48 2013
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.web.components.admin.users;
+import static org.apache.openmeetings.utils.UserHelper.getMinLoginLength;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
@@ -127,11 +128,10 @@ public class UserForm extends AdminBaseF
* Add the fields to the form
*/
private void addFormFields() {
-
+ ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
RequiredTextField<String> login = new
RequiredTextField<String>("login");
- login.add(new StringValidator(4, null));
// login.setLabel(new Model<String>("testname"));
- add(login);
+
add(login.add(StringValidator.minimumLength(getMinLoginLength(cfgDao))));
add(generalForm = new GeneralUserForm("general", getModel(),
true));
@@ -192,4 +192,10 @@ public class UserForm extends AdminBaseF
add(new ComunityUserForm("comunity", getModel()));
}
+ @Override
+ protected void onValidate() {
+
if(getBean(UsersDao.class).checkUserLogin(getModelObject().getLogin())) {
+ error(WebSession.getString(105));
+ }
+ }
}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.java?rev=1480741&r1=1480740&r2=1480741&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
Thu May 9 19:08:48 2013
@@ -18,20 +18,27 @@
*/
package org.apache.openmeetings.web.pages.auth;
+import static org.apache.openmeetings.utils.UserHelper.getMinLoginLength;
+import static org.apache.openmeetings.utils.UserHelper.getMinPasswdLength;
import static org.apache.openmeetings.web.app.Application.getBean;
import java.util.Arrays;
import java.util.List;
import org.apache.openmeetings.data.basic.FieldLanguageDao;
+import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
import org.apache.openmeetings.data.basic.dao.OmTimeZoneDao;
+import org.apache.openmeetings.data.user.EmailManager;
+import org.apache.openmeetings.data.user.UserManager;
import org.apache.openmeetings.data.user.dao.StateDao;
+import org.apache.openmeetings.data.user.dao.UsersDao;
import org.apache.openmeetings.persistence.beans.basic.OmTimeZone;
import org.apache.openmeetings.persistence.beans.lang.FieldLanguage;
import org.apache.openmeetings.persistence.beans.user.State;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import
org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
@@ -41,6 +48,7 @@ import org.apache.wicket.markup.html.for
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.validation.validator.StringValidator;
import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
@@ -49,6 +57,7 @@ public class RegisterDialog extends Abst
private static final long serialVersionUID = -8333305491376538792L;
private DialogButton cancelBtn = new
DialogButton(WebSession.getString(122));
private DialogButton registerBtn = new
DialogButton(WebSession.getString(121));
+ private FeedbackPanel feedback = new FeedbackPanel("feedback");
private Form<String> form;
private SignInDialog s;
private String firstName;
@@ -80,7 +89,6 @@ public class RegisterDialog extends Abst
}
public void onClose(AjaxRequestTarget target, DialogButton button) {
- // TODO Auto-generated method stub
s.open(target);
}
@@ -96,41 +104,53 @@ public class RegisterDialog extends Abst
@Override
protected void onError(AjaxRequestTarget target) {
- // TODO messages
-
+ target.add(feedback);
}
@Override
protected void onSubmit(AjaxRequestTarget target) {
- // TODO Register + validation
-
+ //FIXME need to be refactored
+ getBean(UserManager.class).registerUser(login, password,
lastName
+ , firstName, email, null, ""/*street*/,
""/*additionalname*/, ""/*fax*/, ""/*zip*/
+ , state.getState_id(), ""/*town*/,
lang.getLanguage_id(), ""/*phone*/, false/*sendSMS*/
+ , ""/*baseURL FIXME*/, false, tz.getJname());
}
class RegisterForm extends StatelessForm<String> {
private static final long serialVersionUID =
1701373326213602431L;
private PasswordTextField confirmPassword;
+ private PasswordTextField passwordField;
+ private RequiredTextField<String> emailField;
+ private RequiredTextField<String> loginField;
public RegisterForm(String id) {
super(id);
- add(new FeedbackPanel("feedback"));
+ add(feedback.setOutputMarkupId(true));
+ ConfigurationDao cfgDao =
getBean(ConfigurationDao.class);
add(new RequiredTextField<String>("firstName", new
PropertyModel<String>(RegisterDialog.this, "firstName")));
add(new RequiredTextField<String>("lastName", new
PropertyModel<String>(RegisterDialog.this, "lastName")));
- add(new RequiredTextField<String>("login", new
PropertyModel<String>(RegisterDialog.this, "login")));
- add(new PasswordTextField("password", new
PropertyModel<String>(RegisterDialog.this, "password")).setResetPassword(true));
+ add(loginField = new RequiredTextField<String>("login",
new PropertyModel<String>(RegisterDialog.this, "login")));
+
loginField.add(StringValidator.minimumLength(getMinLoginLength(cfgDao)));
+ add(passwordField = new PasswordTextField("password",
new PropertyModel<String>(RegisterDialog.this, "password")));
+
passwordField.setResetPassword(true).add(StringValidator.minimumLength(getMinPasswdLength(cfgDao)));
add(confirmPassword = new
PasswordTextField("confirmPassword", new
Model<String>()).setResetPassword(true));
- add(new RequiredTextField<String>("email", new
PropertyModel<String>(RegisterDialog.this, "email")));
+ add(emailField = new RequiredTextField<String>("email",
new PropertyModel<String>(RegisterDialog.this, "email")));
+
emailField.add(RfcCompliantEmailAddressValidator.getInstance());
add(new DropDownChoice<FieldLanguage>("lang"
, new
PropertyModel<FieldLanguage>(RegisterDialog.this, "lang")
,
getBean(FieldLanguageDao.class).getLanguages()
- , new
ChoiceRenderer<FieldLanguage>("name", "language_id")));
+ , new
ChoiceRenderer<FieldLanguage>("name", "language_id"))
+
.setRequired(true).setLabel(Model.of(WebSession.getString(111))));
add(new DropDownChoice<OmTimeZone>("tz"
, new
PropertyModel<OmTimeZone>(RegisterDialog.this, "tz")
,
getBean(OmTimeZoneDao.class).getOmTimeZones()
- , new
ChoiceRenderer<OmTimeZone>("frontEndLabel", "jname")));
+ , new
ChoiceRenderer<OmTimeZone>("frontEndLabel", "jname"))
+
.setRequired(true).setLabel(Model.of(WebSession.getString(1143))));
add(new DropDownChoice<State>("state"
- , new
PropertyModel<State>(RegisterDialog.this, "tz")
+ , new
PropertyModel<State>(RegisterDialog.this, "state")
, getBean(StateDao.class).getStates()
- , new ChoiceRenderer<State>("name",
"state_id")));
+ , new ChoiceRenderer<State>("name",
"state_id"))
+
.setRequired(true).setLabel(Model.of(WebSession.getString(120))));
add(new AjaxButton("submit") { //FAKE button so
"submit-on-enter" works as expected
private static final long serialVersionUID =
-3612671587183668912L;
@@ -142,7 +162,6 @@ public class RegisterDialog extends Abst
@Override
protected void onError(AjaxRequestTarget
target, Form<?> form) {
- // TODO Auto-generated method stub
RegisterDialog.this.onError(target);
}
});
@@ -150,8 +169,16 @@ public class RegisterDialog extends Abst
@Override
protected void onValidate() {
- // TODO Auto-generated method stub
- super.onValidate();
+ if (passwordField.getConvertedInput() == null
+ ||
!passwordField.getConvertedInput().equals(confirmPassword.getConvertedInput()))
{
+ error(WebSession.getString(232));
+ }
+
if(!getBean(EmailManager.class).checkUserEMail(emailField.getConvertedInput()))
{
+ error(WebSession.getString(1000));
+ }
+
if(!getBean(UsersDao.class).checkUserLogin(loginField.getConvertedInput())) {
+ error(WebSession.getString(105));
+ }
}
}
}