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);
+ }
+
+}