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


Reply via email to