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