You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by vd...@apache.org on 2013/08/01 12:14:55 UTC

svn commit: r1509157 - in /openmeetings/trunk/singlewebapp/src/org/apache/openmeetings: data/user/ installation/ web/app/ web/pages/ web/pages/auth/ web/util/

Author: vdegtyarev
Date: Thu Aug  1 10:14:55 2013
New Revision: 1509157

URL: http://svn.apache.org/r1509157
Log:
OPENMEETINGS-724 is fixed

Added:
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/ActivatePage.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/BaseUrlAjaxBehavior.java
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/web/app/Application.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.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=1509157&r1=1509156&r2=1509157&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 Aug  1 10:14:55 2013
@@ -815,7 +815,7 @@ public class UserManager {
 				sendConfirmation,
 				omTimeZoneDaoImpl.getOmTimeZone(jname_timezone), forceTimeZoneCheck,
 				userOffers, userSearchs, showContactData,
-				showContactDataToContacts);
+				showContactDataToContacts, null);
 	}
 	
 	/**
@@ -862,7 +862,7 @@ public class UserManager {
 			Boolean sendConfirmation,
 			OmTimeZone timezone, Boolean forceTimeZoneCheck,
 			String userOffers, String userSearchs, Boolean showContactData,
-			Boolean showContactDataToContacts) throws Exception {
+			Boolean showContactDataToContacts, String activatedHash) throws Exception {
 		// TODO: make phone number persistent
 		// User Level must be at least Admin
 		// Moderators will get a temp update of there UserLevel to add Users to
@@ -883,13 +883,17 @@ public class UserManager {
 				boolean checkEmail = usersDao.checkUserEMail(email, null);
 				if (checkName && checkEmail) {
 
-					String hash = cryptManager
-							.getInstanceOfCrypt()
-							.createPassPhrase(
-									login
-											+ CalendarPatterns
-													.getDateWithTimeByMiliSeconds(new Date()));
-					String link = baseURL + "activateUser?u=" + hash;
+					String link = baseURL;
+					String hash = activatedHash;
+					if (hash == null){
+						hash = cryptManager
+								.getInstanceOfCrypt()
+								.createPassPhrase(
+										login
+												+ CalendarPatterns
+														.getDateWithTimeByMiliSeconds(new Date()));
+						link += baseURL + "activateUser?u=" + hash;
+					}
 
 					if (sendWelcomeMessage && email.length() != 0) {
 						// We need to pass the baseURL to check if this is

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=1509157&r1=1509156&r2=1509157&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java Thu Aug  1 10:14:55 2013
@@ -707,7 +707,7 @@ public class ImportInitvalues {
 				"town", default_lang_id, false,
 				Arrays.asList(organisation_id), "phone", false, "", false,
 				omTimeZoneDaoImpl.getOmTimeZoneByIcal(cfg.ical_timeZone),
-				false, "", "", false, true);
+				false, "", "", false, true, null);
 
 		log.debug("Installation - User Added user-Id " + user_id);
 

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/Application.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/Application.java?rev=1509157&r1=1509156&r2=1509157&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/Application.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/Application.java Thu Aug  1 10:14:55 2013
@@ -23,6 +23,7 @@ import static org.springframework.web.co
 import org.apache.openmeetings.data.basic.FieldLanguagesValuesDao;
 import org.apache.openmeetings.data.user.dao.UsersDao;
 import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.web.pages.ActivatePage;
 import org.apache.openmeetings.web.pages.MainPage;
 import org.apache.openmeetings.web.pages.NotInitedPage;
 import org.apache.openmeetings.web.pages.SwfPage;
@@ -104,6 +105,7 @@ public class Application extends Authent
 		mountPage("swf", SwfPage.class);
 		mountPage("install", InstallWizardPage.class);
 		mountPage("signin", getSignInPageClass());
+		mountPage("activate", ActivatePage.class);
 		mountResource("/recordings/mp4/${id}", new Mp4RecordingResourceReference());
 		mountResource("/recordings/ogg/${id}", new OggRecordingResourceReference());
 	}

Added: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/ActivatePage.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/ActivatePage.java?rev=1509157&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/ActivatePage.java (added)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/ActivatePage.java Thu Aug  1 10:14:55 2013
@@ -0,0 +1,48 @@
+/*
+ * 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.web.pages;
+
+import java.util.Date;
+
+import org.apache.openmeetings.data.user.UserManager;
+import org.apache.openmeetings.persistence.beans.user.User;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+public class ActivatePage extends BaseNotInitedPage {
+	private static final long serialVersionUID = 1L;
+	private final String ACTIVATION_PARAM = "u";
+	
+	public ActivatePage(PageParameters pp) {
+		String userHash = pp.get(ACTIVATION_PARAM).toString();
+		if (userHash != null) {
+			User user = Application.getBean(UserManager.class).getUserByActivationHash(userHash);
+
+			if (user != null && user.getStatus() == 0) {
+				// activate
+				user.setStatus(1);
+				user.setUpdatetime(new Date());
+
+				Application.getBean(UserManager.class).updateUser(user);
+	
+			}
+		}
+		setResponsePage(Application.get().getSignInPageClass());
+	}
+}

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java?rev=1509157&r1=1509156&r2=1509157&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java Thu Aug  1 10:14:55 2013
@@ -24,7 +24,6 @@ import static org.apache.openmeetings.we
 import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_EDIT;
 import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
 import static org.apache.openmeetings.web.util.OmUrlFragment.getPanel;
-import static org.apache.wicket.ajax.attributes.CallbackParameter.resolved;
 
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
@@ -33,17 +32,14 @@ import org.apache.openmeetings.web.commo
 import org.apache.openmeetings.web.common.MenuPanel;
 import org.apache.openmeetings.web.user.AboutDialog;
 import org.apache.openmeetings.web.user.ChatPanel;
+import org.apache.openmeetings.web.util.BaseUrlAjaxBehavior;
 import org.apache.openmeetings.web.util.OmUrlFragment;
-import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
-import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
 import org.apache.wicket.devutils.debugbar.DebugBar;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.link.ExternalLink;
 import org.apache.wicket.markup.html.panel.EmptyPanel;
@@ -51,7 +47,6 @@ import org.apache.wicket.protocol.ws.api
 import org.apache.wicket.protocol.ws.api.message.ClosedMessage;
 import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
 import org.apache.wicket.request.IRequestParameters;
-import org.apache.wicket.util.string.StringValue;
 import org.apache.wicket.util.time.Duration;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -142,26 +137,8 @@ public class MainPage extends BaseInited
 				WebSession.get().setArea(null);
 			}
 		});
-		// This code is required to detect OM proxy url
-		add(new AbstractDefaultAjaxBehavior() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void renderHead(Component component, IHeaderResponse response) {
-				super.renderHead(component, response);
-				response.render(JavaScriptHeaderItem.forScript(getCallbackFunctionBody(resolved("baseUrl", "window.location.href")), "getBaseUrl"));
-			}
-			
-			@Override
-			protected void respond(AjaxRequestTarget target) {
-				StringValue url = getRequestCycle().getRequest().getRequestParameters().getParameterValue("baseUrl");
-				String baseUrl = url.toString(); 
-				if (baseUrl.indexOf('#') > 0){
-					baseUrl = baseUrl.substring(0, baseUrl.indexOf('#'));
-				}
-				WebSession.get().setBaseUrl(baseUrl.toString());
-			}
-		});
+		
+		add(new BaseUrlAjaxBehavior());
 	}
 	
 	public void updateContents(OmUrlFragment f, AjaxRequestTarget target) {

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=1509157&r1=1509156&r2=1509157&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 Aug  1 10:14:55 2013
@@ -18,12 +18,14 @@
  */
 package org.apache.openmeetings.web.pages.auth;
 
+import static org.apache.openmeetings.OpenmeetingsVariables.webAppRootKey;
 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 static org.apache.wicket.validation.validator.StringValidator.minimumLength;
 
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 
 import org.apache.openmeetings.data.basic.FieldLanguageDao;
@@ -35,8 +37,11 @@ import org.apache.openmeetings.data.user
 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.utils.crypt.ManageCryptStyle;
+import org.apache.openmeetings.utils.math.CalendarPatterns;
 import org.apache.openmeetings.web.app.WebSession;
-import org.apache.openmeetings.web.pages.SwfPage;
+import org.apache.openmeetings.web.pages.ActivatePage;
+import org.apache.openmeetings.web.pages.MainPage;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
@@ -53,12 +58,15 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
 
 import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 
 public class RegisterDialog extends AbstractFormDialog<String> {
 	private static final long serialVersionUID = -8333305491376538792L;
+	private static final Logger log = Red5LoggerFactory.getLogger(MainPage.class, webAppRootKey);
 	private DialogButton cancelBtn = new DialogButton(WebSession.getString(122));
 	private DialogButton registerBtn = new DialogButton(WebSession.getString(121));
 	private FeedbackPanel feedback = new FeedbackPanel("feedback");
@@ -132,12 +140,37 @@ public class RegisterDialog extends Abst
 
 	@Override
 	protected void onSubmit(AjaxRequestTarget target) {
-		//FIXME need to be refactored to be handled by Wicket
-		getBean(UserManager.class).registerUser(login, password, lastName
-				, firstName, email, null, ""/*street*/, ""/*additionalname*/, ""/*fax*/, ""/*zip*/
-				, state.getState_id(), ""/*town*/, lang.getLanguage_id(), ""/*phone*/, false/*sendSMS*/
-				, "" + getRequestCycle().urlFor(SwfPage.class, new PageParameters()), false
-				, tzModel.getObject().getJname());
+		String hash = getBean(ManageCryptStyle.class).getInstanceOfCrypt()
+				.createPassPhrase(login + CalendarPatterns.getDateWithTimeByMiliSeconds(new Date()));
+
+		String redirectPage = getRequestCycle().urlFor(ActivatePage.class, new PageParameters().add("u", hash)).toString().substring(1);
+		String baseURL = WebSession.get().getBaseUrl() + redirectPage;
+		
+		boolean sendConfirmation = baseURL != null
+				&& !baseURL.isEmpty()
+				&& 1 == getBean(ConfigurationDao.class).getConfValue(
+						"sendEmailWithVerficationCode", Integer.class, "0");
+
+		try {
+			getBean(UserManager.class).registerUserInit(3, 1, 0, 1,
+					login, password, lastName,
+					firstName, email, new Date(), "" /*street*/,
+					"" /*additionalname*/, "" /*fax*/, "" /*zip*/,
+					state.getState_id(),
+					"" /*town*/, lang.getLanguage_id(), true /*sendWelcomeMessage*/,
+					Arrays.asList(getBean(ConfigurationDao.class).getConfValue("default_domain_id", Long.class, null)),
+					"" /*phone*/, false, baseURL,
+					sendConfirmation,
+					getBean(OmTimeZoneDao.class).getOmTimeZone(tzModel.getObject().getJname()),
+					false /*forceTimeZoneCheck*/,
+					"" /*userOffers*/, "" /*userSearchs*/,
+					false /*showContactData*/,
+					true /*showContactDataToContacts*/, hash);
+			
+		} catch (Exception e) {
+			log.error("[registerUser]", e);
+		}
+
 	}
 	
 	class RegisterForm extends StatelessForm<String> {

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java?rev=1509157&r1=1509156&r2=1509157&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java Thu Aug  1 10:14:55 2013
@@ -32,6 +32,7 @@ import org.apache.openmeetings.web.app.A
 import org.apache.openmeetings.web.app.OmAuthenticationStrategy;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.pages.SwfPage;
+import org.apache.openmeetings.web.util.BaseUrlAjaxBehavior;
 import org.apache.wicket.Component;
 import org.apache.wicket.RestartResponseException;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
@@ -101,6 +102,7 @@ public class SignInDialog extends Abstra
 				} catch (NumberFormatException ex) { }
 			}
 		});
+		add(new BaseUrlAjaxBehavior());
 	}
 
 	public void setRegisterDialog(RegisterDialog r) {

Added: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/BaseUrlAjaxBehavior.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/BaseUrlAjaxBehavior.java?rev=1509157&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/BaseUrlAjaxBehavior.java (added)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/BaseUrlAjaxBehavior.java Thu Aug  1 10:14:55 2013
@@ -0,0 +1,51 @@
+/*
+ * 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.web.util;
+
+import static org.apache.wicket.ajax.attributes.CallbackParameter.resolved;
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.util.string.StringValue;
+
+public class BaseUrlAjaxBehavior extends AbstractDefaultAjaxBehavior {
+
+	private static final long serialVersionUID = 9219184342677317070L;
+
+	@Override
+	public void renderHead(Component component, IHeaderResponse response) {
+		super.renderHead(component, response);
+		response.render(JavaScriptHeaderItem.forScript(getCallbackFunctionBody(resolved("baseUrl", "window.location.href")), "getBaseUrl"));
+	}
+	
+	@Override
+	protected void respond(AjaxRequestTarget target) {
+		StringValue url = getComponent().getRequestCycle().getRequest().getRequestParameters().getParameterValue("baseUrl");
+		String baseUrl = url.toString(); 
+		if (baseUrl.indexOf('#') > 0 || baseUrl.indexOf('?') > 0) {
+			baseUrl = baseUrl.substring(0, baseUrl.lastIndexOf('/'));
+		}
+		WebSession.get().setBaseUrl(baseUrl);
+	}
+
+}