You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by aj...@apache.org on 2010/02/03 06:27:02 UTC
svn commit: r905899 [2/2] - in /incubator/jspwiki/trunk/src: WebContent/
WebContent/templates/default/ WebContent/templates/default/editors/
WebContent/templates/default/tabs/ java/org/apache/wiki/action/
Added: incubator/jspwiki/trunk/src/java/org/apache/wiki/action/LostPasswordActionBean.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/action/LostPasswordActionBean.java?rev=905899&view=auto
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/action/LostPasswordActionBean.java (added)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/action/LostPasswordActionBean.java Wed Feb 3 05:27:01 2010
@@ -0,0 +1,171 @@
+/*
+ JSPWiki - a JSP-based WikiWiki clone.
+
+ 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.wiki.action;
+
+import java.text.MessageFormat;
+import java.util.List;
+import java.util.ResourceBundle;
+
+import javax.mail.AuthenticationFailedException;
+import javax.mail.SendFailedException;
+
+import net.sourceforge.stripes.action.*;
+import net.sourceforge.stripes.validation.LocalizableError;
+import net.sourceforge.stripes.validation.Validate;
+import net.sourceforge.stripes.validation.ValidationErrors;
+
+import org.apache.wiki.WikiContext;
+import org.apache.wiki.WikiEngine;
+import org.apache.wiki.auth.NoSuchPrincipalException;
+import org.apache.wiki.auth.user.UserDatabase;
+import org.apache.wiki.auth.user.UserProfile;
+import org.apache.wiki.log.Logger;
+import org.apache.wiki.log.LoggerFactory;
+import org.apache.wiki.util.MailUtil;
+import org.apache.wiki.util.TextUtil;
+
+/**
+ * Resets user passwords.
+ */
+@UrlBinding( "/LostPassword.jsp" )
+public class LostPasswordActionBean extends AbstractActionBean
+{
+ private static final Logger log = LoggerFactory.getLogger( LostPasswordActionBean.class );
+
+ private String m_email = null;
+
+ /**
+ * Returns the e-mail address.
+ *
+ * @return the e-mail address
+ */
+ public String getEmail()
+ {
+ return m_email;
+ }
+
+ /**
+ * Event handler that resets the user's password, based on the e-mail
+ * address returned by {@link #getEmail()}.
+ *
+ * @return always returns <code>null</code>
+ */
+ @HandlesEvent( "reset" )
+ public Resolution reset()
+ {
+ String messageKey = null;
+ ResourceBundle rb = getContext().getBundle( "CoreResources" );
+
+ // Reset pw for account name
+ WikiEngine engine = getContext().getEngine();
+ boolean success = false;
+
+ try
+ {
+ // Look up the e-mail supplied by the user
+ UserDatabase userDatabase = engine.getUserManager().getUserDatabase();
+ UserProfile profile = userDatabase.findByEmail( m_email );
+ String email = profile.getEmail();
+ String randomPassword = TextUtil.generateRandomPassword();
+
+ // Compose the message e-mail body
+ Object[] args = { profile.getLoginName(), randomPassword,
+ engine.getURLConstructor().makeURL( WikiContext.NONE, "Login.jsp", true, "" ),
+ engine.getApplicationName() };
+ String mailMessage = MessageFormat.format( rb.getString( "lostpwd.newpassword.email" ), args );
+
+ // Compose the message subject line
+ args = new Object[] { engine.getApplicationName() };
+ String mailSubject = MessageFormat.format( rb.getString( "lostpwd.newpassword.subject" ), args );
+
+ // Send the message.
+ MailUtil.sendMessage( engine, email, mailSubject, mailMessage );
+ log.info( "User " + email + " requested and received a new password." );
+
+ // Mail succeeded. Now reset the password.
+ // If this fails, we're kind of screwed, because we already mailed
+ // it.
+ profile.setPassword( randomPassword );
+ userDatabase.save( profile );
+ success = true;
+ }
+ catch( NoSuchPrincipalException e )
+ {
+ messageKey = "lostpwd.nouser";
+ log.info( "Tried to reset password for non-existent user '" + m_email + "'" );
+ }
+ catch( SendFailedException e )
+ {
+ messageKey = "lostpwd.nomail";
+ log.error( "Tried to reset password and got SendFailedException: " + e );
+ }
+ catch( AuthenticationFailedException e )
+ {
+ messageKey = "lostpwd.nomail";
+ log.error( "Tried to reset password and got AuthenticationFailedException: " + e );
+ }
+ catch( Exception e )
+ {
+ messageKey = "lostpwd.nomail";
+ log.error( "Tried to reset password and got another exception: " + e );
+ }
+
+ if( success )
+ {
+ List<Message> messages = getContext().getMessages( "reset" );
+ messages.add( new SimpleMessage( rb.getString( "lostpwd.emailed" ) ) );
+ }
+ else
+ // Error
+ {
+ ValidationErrors errors = getContext().getValidationErrors();
+ errors.addGlobalError( new LocalizableError( messageKey, m_email ) );
+ }
+
+ return new ForwardResolution( "/templates/default/Login.jsp" ).addParameter( "tab", "reset" );
+ }
+
+ /**
+ * Sets the e-mail property. Used by the {@link #resetPassword()} event.
+ *
+ * @param email the e-mail address
+ */
+ @Validate( required = true, on = "reset", converter = net.sourceforge.stripes.validation.EmailTypeConverter.class )
+ public void setEmail( String email )
+ {
+ m_email = email;
+ }
+
+ /**
+ * Default handler that forwards the user to the template JSP.
+ *
+ * @return the resolution
+ */
+ @DefaultHandler
+ @DontValidate
+ @HandlesEvent( "view" )
+ public Resolution view()
+ {
+ return new ForwardResolution( "/templates/default/Login.jsp" ).addParameter( "tab", "reset" );
+ }
+
+}
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/action/UserPreferencesActionBean.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/action/UserPreferencesActionBean.java?rev=905899&r1=905898&r2=905899&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/action/UserPreferencesActionBean.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/action/UserPreferencesActionBean.java Wed Feb 3 05:27:01 2010
@@ -46,7 +46,7 @@
/**
*/
-@UrlBinding( "/UserPreferences.action" )
+@UrlBinding( "/UserPreferences.jsp" )
public class UserPreferencesActionBean extends AbstractActionBean
{
private static final Logger log = LoggerFactory.getLogger( "JSPWiki" );
@@ -350,6 +350,6 @@
@WikiRequestContext( "prefs" )
public Resolution view()
{
- return new ForwardResolution( "/UserPreferences.jsp" );
+ return new ForwardResolution( "/templates/default/Preferences.jsp" ).addParameter( "tab", "prefs" );
}
}
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/action/UserProfileActionBean.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/action/UserProfileActionBean.java?rev=905899&r1=905898&r2=905899&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/action/UserProfileActionBean.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/action/UserProfileActionBean.java Wed Feb 3 05:27:01 2010
@@ -47,7 +47,7 @@
/**
*/
-@UrlBinding( "/UserProfile.action" )
+@UrlBinding( "/UserProfile.jsp" )
public class UserProfileActionBean extends AbstractActionBean
{
Logger log = LoggerFactory.getLogger( UserProfileActionBean.class );
@@ -76,7 +76,7 @@
/**
* Pre-action that loads the UserProfile before user-supplied parameters are
* bound to the ActionBean. Also stashes the UserProfile as a request-scoped
- * attribute named <code>profile</code>. This attribute can be used in
+ * attribute named {@code userProfile}. This attribute can be used in
* JSP EL expressions as <code>$%7Bprofile%7D</code>.
*
* @return <code>null</code>, always
@@ -94,7 +94,7 @@
m_profile.setPassword( null );
// Stash the profile as a request attribute
- getContext().getRequest().setAttribute( "profile", m_profile );
+ getContext().getRequest().setAttribute( "userProfile", m_profile );
return null;
}
@@ -136,7 +136,7 @@
// know about them
catch( Exception e )
{
- errors.addGlobalError( new LocalizableError( "profile.saveError", e.getMessage() ) );
+ errors.add( "profile", new LocalizableError( "profile.saveError", e.getMessage() ) );
}
// If no errors, send user to front page (or redirected page)
@@ -274,7 +274,7 @@
@DontValidate
public Resolution create()
{
- return new ForwardResolution( "/CreateProfile.jsp" );
+ return new ForwardResolution( "/templates/default/CreateProfile.jsp" ).addParameter( "tab", "profile" );
}
/**
@@ -289,9 +289,7 @@
@WikiRequestContext( "profile" )
public Resolution view()
{
- ForwardResolution r = new ForwardResolution( "/UserPreferences.jsp" );
- r.addParameter( "tab", "profile" );
- return r;
+ return new ForwardResolution( "/templates/default/Preferences.jsp" ).addParameter( "tab", "profile" );
}
}
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/action/ViewActionBean.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/action/ViewActionBean.java?rev=905899&r1=905898&r2=905899&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/action/ViewActionBean.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/action/ViewActionBean.java Wed Feb 3 05:27:01 2010
@@ -108,7 +108,7 @@
/**
* Handler that forwards to the page information display JSP
- * <code>/Attachments.jsp</code>.
+ * {@code PageInfo.jsp}.
*
* @return a forward to the content template
*/
@@ -116,7 +116,7 @@
@HandlerPermission( permissionClass = PagePermission.class, target = "${page.path}", actions = PagePermission.VIEW_ACTION )
public Resolution attachments()
{
- return new ForwardResolution( "/templates/default/Attachments.jsp" );
+ return new ForwardResolution( "/templates/default/PageInfo.jsp" ).addParameter( "tab", "attachments" );
}
/**
@@ -156,7 +156,7 @@
{
return new ForwardResolution( "/templates/default/AttachmentInfo.jsp" );
}
- return new ForwardResolution( "/templates/default/PageInfo.jsp" );
+ return new ForwardResolution( "/templates/default/PageInfo.jsp" ).addParameter( "tab", "info" );
}
/**
@@ -306,7 +306,7 @@
public Resolution view() throws ProviderException
{
// Forward to display JSP
- return new ForwardResolution( "/templates/default/Wiki.jsp" );
+ return new ForwardResolution( "/templates/default/Wiki.jsp" ).addParameter( "tab", "view" );
}
/**