[pal-cvs 2915] [659] added change password portlet.

Zurück zum Archiv-Index

svnno****@sourc***** svnno****@sourc*****
2007年 10月 26日 (金) 06:52:50 JST


Revision: 659
          http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=pal&view=rev&rev=659
Author:   shinsuke
Date:     2007-10-26 06:52:50 +0900 (Fri, 26 Oct 2007)

Log Message:
-----------
added change password portlet.

Modified Paths:
--------------
    pal-admin/trunk/src/main/java/jp/sf/pal/admin/PALAdminConstants.java
    pal-admin/trunk/src/main/resources/PAMessages.properties
    pal-admin/trunk/src/main/resources/appMessages.properties
    pal-admin/trunk/src/main/webapp/WEB-INF/portlet.xml

Added Paths:
-----------
    pal-admin/trunk/src/main/java/jp/sf/pal/admin/filter/PasswordManagementFilter.java
    pal-admin/trunk/src/main/java/jp/sf/pal/admin/service/PasswordManagementService.java
    pal-admin/trunk/src/main/java/jp/sf/pal/admin/web/password/
    pal-admin/trunk/src/main/java/jp/sf/pal/admin/web/password/PasswordEditPage.java
    pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/password/
    pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/password/ChangePassword.properties
    pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/password/ChangePassword_ja.properties
    pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/password/label.properties
    pal-admin/trunk/src/main/webapp/view/password/
    pal-admin/trunk/src/main/webapp/view/password/passwordEdit.html


-------------- next part --------------
Modified: pal-admin/trunk/src/main/java/jp/sf/pal/admin/PALAdminConstants.java
===================================================================
--- pal-admin/trunk/src/main/java/jp/sf/pal/admin/PALAdminConstants.java	2007-10-25 21:52:15 UTC (rev 658)
+++ pal-admin/trunk/src/main/java/jp/sf/pal/admin/PALAdminConstants.java	2007-10-25 21:52:50 UTC (rev 659)
@@ -186,4 +186,6 @@
     public static final String REMOVE_USER_FOLDER = PREFIX
             + "withdraw.RemoveUserFolder";
 
+    public static final String USER_ADMINISTRATION = "PAL User Administration";
+
 }

Added: pal-admin/trunk/src/main/java/jp/sf/pal/admin/filter/PasswordManagementFilter.java
===================================================================
--- pal-admin/trunk/src/main/java/jp/sf/pal/admin/filter/PasswordManagementFilter.java	2007-10-25 21:52:15 UTC (rev 658)
+++ pal-admin/trunk/src/main/java/jp/sf/pal/admin/filter/PasswordManagementFilter.java	2007-10-25 21:52:50 UTC (rev 659)
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2005-2007 Portal Application Laboratory and the Others.
+ *
+ * Licensed 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 jp.sf.pal.admin.filter;
+
+import java.io.IOException;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletContext;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import jp.sf.pal.admin.PALAdminConstants;
+
+import org.apache.jetspeed.CommonPortletServices;
+import org.apache.jetspeed.audit.AuditActivity;
+import org.apache.jetspeed.security.UserManager;
+import org.apache.portals.bridges.portletfilter.PortletFilter;
+import org.apache.portals.bridges.portletfilter.PortletFilterChain;
+import org.apache.portals.bridges.portletfilter.PortletFilterConfig;
+
+public class PasswordManagementFilter implements PortletFilter {
+    private UserManager userManager;
+
+    private AuditActivity auditActivity;
+
+    public void destroy() {
+        userManager = null;
+        auditActivity = null;
+    }
+
+    public void init(PortletFilterConfig filterConfig) throws PortletException {
+        PortletConfig portletConfig = filterConfig.getPortletConfig();
+        PortletContext portletContext = portletConfig.getPortletContext();
+
+        // userManager
+        userManager = (UserManager) portletContext
+                .getAttribute(CommonPortletServices.CPS_USER_MANAGER_COMPONENT);
+        if (null == userManager) {
+            throw new PortletException(
+                    "Failed to find userManager on portlet initialization");
+        }
+
+        // auditActivity
+        auditActivity = (AuditActivity) portletContext
+                .getAttribute(CommonPortletServices.CPS_AUDIT_ACTIVITY);
+        if (null == auditActivity) {
+            throw new PortletException(
+                    "Failed to find auditActivity on portlet initialization");
+        }
+
+    }
+
+    public void processActionFilter(ActionRequest request,
+            ActionResponse response, PortletFilterChain chain)
+            throws PortletException, IOException {
+        request.setAttribute(PALAdminConstants.USER_MANAGER_COMPONENT,
+                userManager);
+        request.setAttribute(PALAdminConstants.AUDIT_ACTIVITY_COMPONENT,
+                auditActivity);
+
+        chain.processActionFilter(request, response);
+    }
+
+    public void renderFilter(RenderRequest request, RenderResponse response,
+            PortletFilterChain chain) throws PortletException, IOException {
+        request.setAttribute(PALAdminConstants.USER_MANAGER_COMPONENT,
+                userManager);
+        request.setAttribute(PALAdminConstants.AUDIT_ACTIVITY_COMPONENT,
+                auditActivity);
+
+        chain.renderFilter(request, response);
+
+    }
+
+}


Property changes on: pal-admin/trunk/src/main/java/jp/sf/pal/admin/filter/PasswordManagementFilter.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-admin/trunk/src/main/java/jp/sf/pal/admin/service/PasswordManagementService.java
===================================================================
--- pal-admin/trunk/src/main/java/jp/sf/pal/admin/service/PasswordManagementService.java	2007-10-25 21:52:15 UTC (rev 658)
+++ pal-admin/trunk/src/main/java/jp/sf/pal/admin/service/PasswordManagementService.java	2007-10-25 21:52:50 UTC (rev 659)
@@ -0,0 +1,79 @@
+package jp.sf.pal.admin.service;
+
+import java.io.Serializable;
+import java.security.Principal;
+
+import javax.faces.context.FacesContext;
+import javax.security.auth.Subject;
+
+import jp.sf.pal.admin.PALAdminConstants;
+import jp.sf.pal.admin.util.PortalComponentUtil;
+import jp.sf.pal.common.CommonException;
+
+import org.apache.jetspeed.PortalReservedParameters;
+import org.apache.jetspeed.audit.AuditActivity;
+import org.apache.jetspeed.request.RequestContext;
+import org.apache.jetspeed.security.InvalidNewPasswordException;
+import org.apache.jetspeed.security.InvalidPasswordException;
+import org.apache.jetspeed.security.PasswordAlreadyUsedException;
+import org.apache.jetspeed.security.SecurityException;
+import org.apache.jetspeed.security.UserManager;
+
+public class PasswordManagementService implements Serializable {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 7648155261356882471L;
+
+    public void updatePassword(String currentPassword, String newPassword)
+            throws CommonException {
+        Principal principal = FacesContext.getCurrentInstance()
+                .getExternalContext().getUserPrincipal();
+        if (principal == null) {
+            throw new CommonException("could.not.change.password",
+                    "User principal is null.");
+        }
+
+        UserManager userManager = PortalComponentUtil.getUserManager();
+        if (userManager == null) {
+            throw new CommonException("could.not.change.password",
+                    "userManager is null.");
+        }
+        AuditActivity auditActivity = PortalComponentUtil.getAuditActivity();
+        if (auditActivity == null) {
+            throw new CommonException("could.not.change.password",
+                    "auditActivity is null.");
+        }
+
+        try {
+            String username = principal.getName();
+            RequestContext requestContext = (RequestContext) FacesContext
+                    .getCurrentInstance().getExternalContext().getRequestMap()
+                    .get(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE);
+
+            userManager.setPassword(username, currentPassword, newPassword);
+            auditActivity.logUserActivity(username, requestContext.getRequest()
+                    .getRemoteAddr(), AuditActivity.PASSWORD_CHANGE_SUCCESS,
+                    PALAdminConstants.USER_ADMINISTRATION);
+
+            // refresh/update Subject in session to reflect the changed PasswordCredential
+            Subject subject = userManager.getUser(username).getSubject();
+
+            requestContext.setSessionAttribute(
+                    PortalReservedParameters.SESSION_KEY_SUBJECT, subject);
+        } catch (InvalidPasswordException ipe) {
+            throw new CommonException("invalid.current.password", "Invalid password. ");
+        } catch (InvalidNewPasswordException inpe) {
+            throw new CommonException("invalid.new.password",
+                    "Invalid new password. ");
+        } catch (PasswordAlreadyUsedException paue) {
+            throw new CommonException("password.already.used",
+                    "The password already used. ");
+        } catch (SecurityException e) {
+            throw new CommonException("could.not.change.password",
+                    "Security exception. ");
+        }
+
+    }
+}


Property changes on: pal-admin/trunk/src/main/java/jp/sf/pal/admin/service/PasswordManagementService.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-admin/trunk/src/main/java/jp/sf/pal/admin/web/password/PasswordEditPage.java
===================================================================
--- pal-admin/trunk/src/main/java/jp/sf/pal/admin/web/password/PasswordEditPage.java	2007-10-25 21:52:15 UTC (rev 658)
+++ pal-admin/trunk/src/main/java/jp/sf/pal/admin/web/password/PasswordEditPage.java	2007-10-25 21:52:50 UTC (rev 659)
@@ -0,0 +1,121 @@
+package jp.sf.pal.admin.web.password;
+
+import java.io.Serializable;
+
+import jp.sf.pal.admin.PALAdminException;
+import jp.sf.pal.admin.service.PasswordManagementService;
+import jp.sf.pal.common.CommonException;
+import jp.sf.pal.common.util.FacesMessageUtil;
+
+import org.seasar.framework.log.Logger;
+import org.seasar.teeda.extension.annotation.validator.Equal;
+import org.seasar.teeda.extension.annotation.validator.Required;
+import org.seasar.teeda.extension.util.LabelHelper;
+
+public class PasswordEditPage implements Serializable {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 8299805833656409820L;
+
+    /**
+     * Logger for this class
+     */
+    private static final Logger logger = Logger
+            .getLogger(PasswordEditPage.class);
+
+    @Required
+    private String currentPassword;
+
+    @Required
+    private String newPassword;
+
+    @Required
+    @Equal(targetId = "newPassword")
+    private String retypePassword;
+
+    private PasswordManagementService passwordManagementService;
+
+    private LabelHelper labelHelper;
+
+    public Class<?> initialize() {
+        return null;
+    }
+
+    public Class<?> prerender() {
+        // render faces messages
+        FacesMessageUtil.renderMessages();
+        return null;
+    }
+
+    public Class<?> doFinish() {
+        try {
+            getPasswordManagementService().updatePassword(currentPassword,
+                    newPassword);
+            FacesMessageUtil.addInfoMessage("changed.password");
+        } catch (CommonException e) {
+            logger.error("EPA0046", e);
+            FacesMessageUtil.addErrorMessage(e.getMessageId());
+        }
+        return null;
+    }
+
+    public String getDoFinishValue() {
+        return getLabelHelper().getLabelValue("changePassword");
+    }
+
+    public String getCurrentPassword() {
+        return currentPassword;
+    }
+
+    public void setCurrentPassword(String currentPassword) {
+        this.currentPassword = currentPassword;
+    }
+
+    public String getNewPassword() {
+        return newPassword;
+    }
+
+    public void setNewPassword(String newPassword) {
+        this.newPassword = newPassword;
+    }
+
+    public String getRetypePassword() {
+        return retypePassword;
+    }
+
+    public void setRetypePassword(String retypePassword) {
+        this.retypePassword = retypePassword;
+    }
+
+    /**
+     * @return the passwordManagementService
+     */
+    public PasswordManagementService getPasswordManagementService() {
+        return passwordManagementService;
+    }
+
+    /**
+     * @param passwordManagementService the passwordManagementService to set
+     */
+    public void setPasswordManagementService(
+            PasswordManagementService passwordManagementService) {
+        this.passwordManagementService = passwordManagementService;
+    }
+
+    /**
+     * @return the labelHelper
+     */
+    public LabelHelper getLabelHelper() {
+        return labelHelper;
+    }
+
+    /**
+     * @param labelHelper the labelHelper to set
+     */
+    public void setLabelHelper(LabelHelper labelHelper) {
+        this.labelHelper = labelHelper;
+    }
+
+}


Property changes on: pal-admin/trunk/src/main/java/jp/sf/pal/admin/web/password/PasswordEditPage.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: pal-admin/trunk/src/main/resources/PAMessages.properties
===================================================================
--- pal-admin/trunk/src/main/resources/PAMessages.properties	2007-10-25 21:52:15 UTC (rev 658)
+++ pal-admin/trunk/src/main/resources/PAMessages.properties	2007-10-25 21:52:50 UTC (rev 659)
@@ -44,3 +44,4 @@
 EPA0043=Could not add a permission for page.
 EPA0044=Could not update a permission for page.
 EPA0045=Could not delete a permission for folder.
+EPA0046=Could not change the password. 

Modified: pal-admin/trunk/src/main/resources/appMessages.properties
===================================================================
--- pal-admin/trunk/src/main/resources/appMessages.properties	2007-10-25 21:52:15 UTC (rev 658)
+++ pal-admin/trunk/src/main/resources/appMessages.properties	2007-10-25 21:52:50 UTC (rev 659)
@@ -236,3 +236,9 @@
 added.page.permission=Added a page permission.
 updated.page.permission=Updated the page permission.
 deleted.page.permission=Removed the page permission.
+
+could.not.change.password=Could not change a password. If you see this error message again, please contact a site administrator.
+changed.password=Changed password. 
+invalid.current.password=Invalid password. Please check a current password.
+invalid.new.password=Invalid new password. Please check a new password.
+password.already.used=The password is already used.

Added: pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/password/ChangePassword.properties
===================================================================
--- pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/password/ChangePassword.properties	2007-10-25 21:52:15 UTC (rev 658)
+++ pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/password/ChangePassword.properties	2007-10-25 21:52:50 UTC (rev 659)
@@ -0,0 +1,5 @@
+# portlet info
+javax.portlet.title=\u30d1\u30b9\u30ef\u30fc\u30c9\u5909\u66f4
+javax.portlet.short-title=\u30d1\u30b9\u30ef\u30fc\u30c9
+javax.portlet.keywords=\u30d1\u30b9\u30ef\u30fc\u30c9
+


Property changes on: pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/password/ChangePassword.properties
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/password/ChangePassword_ja.properties
===================================================================
--- pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/password/ChangePassword_ja.properties	2007-10-25 21:52:15 UTC (rev 658)
+++ pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/password/ChangePassword_ja.properties	2007-10-25 21:52:50 UTC (rev 659)
@@ -0,0 +1,5 @@
+# portlet info
+javax.portlet.title=\u30d1\u30b9\u30ef\u30fc\u30c9\u5909\u66f4
+javax.portlet.short-title=\u30d1\u30b9\u30ef\u30fc\u30c9
+javax.portlet.keywords=\u30d1\u30b9\u30ef\u30fc\u30c9
+


Property changes on: pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/password/ChangePassword_ja.properties
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/password/label.properties
===================================================================
--- pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/password/label.properties	2007-10-25 21:52:15 UTC (rev 658)
+++ pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/password/label.properties	2007-10-25 21:52:50 UTC (rev 659)
@@ -0,0 +1,7 @@
+currentPasswordField=Current Password:
+newPasswordField=New Password:
+retypePasswordField=Re-type Password:
+currentPassword=Current Password
+newPassword=New Password
+retypePassword=Re-type Password
+changePassword=Change Password


Property changes on: pal-admin/trunk/src/main/resources/jp/sf/pal/admin/web/password/label.properties
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: pal-admin/trunk/src/main/webapp/WEB-INF/portlet.xml
===================================================================
--- pal-admin/trunk/src/main/webapp/WEB-INF/portlet.xml	2007-10-25 21:52:15 UTC (rev 658)
+++ pal-admin/trunk/src/main/webapp/WEB-INF/portlet.xml	2007-10-25 21:52:50 UTC (rev 659)
@@ -546,7 +546,7 @@
     <description>Provides features for managing permissions.</description>
     <description xml:lang="ja">パーミッションを管理する機能を提供します。</description>
     <portlet-name>PermissionEditor</portlet-name>
-    <display-name>PermissionEditor</display-name>
+    <display-name>Permission Editor</display-name>
     <display-name xml:lang="ja">パーミッションエディター</display-name>
     <portlet-class>org.apache.portals.bridges.portletfilter.FilterPortlet</portlet-class>
     <init-param>
@@ -575,4 +575,37 @@
       <keywords>Permission</keywords>
     </portlet-info>
   </portlet>
+  <portlet>
+    <description>Provides features for changing user's password.</description>
+    <description xml:lang="ja">ユーザーパスワードを変更する機能を提供します。</description>
+    <portlet-name>ChangePassword</portlet-name>
+    <display-name>Change Password</display-name>
+    <display-name xml:lang="ja">パスワード変更</display-name>
+    <portlet-class>org.apache.portals.bridges.portletfilter.FilterPortlet</portlet-class>
+    <init-param>
+      <name>portlet-class</name>
+      <value>org.seasar.teeda.core.portlet.FacesPortlet</value>
+    </init-param>
+    <init-param>
+      <name>portlet-filters</name>
+      <value>jp.sf.pal.admin.filter.PasswordManagementFilter,jp.sf.pal.facesresponse.FacesResponseFilter,jp.sf.pal.pooptimizer.OptimizerFilter,org.seasar.portlet.filter.S2PortletFilter,org.seasar.portlet.filter.HotdeployPortletFilter</value>
+    </init-param>
+    <init-param>
+      <name>view-page</name>
+      <value>/view/password/passwordEdit.html</value>
+    </init-param>
+    <expiration-cache>0</expiration-cache>
+    <supports>
+      <mime-type>text/html</mime-type>
+      <portlet-mode>VIEW</portlet-mode>
+    </supports>
+    <supported-locale>en</supported-locale>
+    <supported-locale>ja</supported-locale>
+    <resource-bundle>jp.sf.pal.admin.web.password.ChangePassword</resource-bundle>
+    <portlet-info>
+      <title>Change Password</title>
+      <short-title>Password</short-title>
+      <keywords>Password</keywords>
+    </portlet-info>
+  </portlet>
 </portlet-app>

Added: pal-admin/trunk/src/main/webapp/view/password/passwordEdit.html
===================================================================
--- pal-admin/trunk/src/main/webapp/view/password/passwordEdit.html	2007-10-25 21:52:15 UTC (rev 658)
+++ pal-admin/trunk/src/main/webapp/view/password/passwordEdit.html	2007-10-25 21:52:50 UTC (rev 659)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:te="http://www.seasar.org/teeda/extension">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <link rel="stylesheet" type="text/css" href="../../css/global.css" />
+  </head>
+  <body>
+    <form id="passwordEditForm">
+      <div>
+        <span id="allMessages" te:fatalClass="portlet-msg-error" te:errorClass="portlet-msg-error" te:warnClass="portlet-msg-alert" te:infoClass="portlet-msg-info"></span>
+      </div>
+<!-- content: BEGIN -->
+      <div style="padding: 3px;">
+        <table border="0">
+          <tr>
+            <th>
+              <label id="currentPasswordFieldLabel">Current Password:</label>
+            </th>
+            <td>
+              <input type="password" id="currentPassword" size="20" />
+            </td>
+          </tr>
+          <tr>
+            <th>
+              <label id="newPasswordFieldLabel">New Password:</label>
+            </th>
+            <td>
+              <input type="password" id="newPassword" size="20" />
+            </td>
+          </tr>
+          <tr>
+            <th>
+              <label id="retypePasswordFieldLabel">Re-type Password:</label>
+            </th>
+            <td>
+              <input type="password" id="retypePassword" size="20" />
+            </td>
+          </tr>
+          <tr>
+            <td align="center" colspan="2">
+              <input type="submit" id="doFinish" value="Change Password"/>
+            </td>
+          </tr>
+        </table>
+      </div>
+<!-- content: BEGIN -->
+    </form>
+  </body>
+</html>


Property changes on: pal-admin/trunk/src/main/webapp/view/password/passwordEdit.html
___________________________________________________________________
Name: svn:eol-style
   + native


pal-cvs メーリングリストの案内
Zurück zum Archiv-Index