001    /*
002     * Copyright 2007-2008 The Kuali Foundation
003     *
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.opensource.org/licenses/ecl2.php
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.rice.ksb.security.admin.web;
017    
018    import java.security.KeyStoreException;
019    
020    import javax.servlet.http.HttpServletRequest;
021    
022    import org.apache.commons.lang.StringUtils;
023    import org.apache.struts.action.ActionErrors;
024    import org.apache.struts.action.ActionForm;
025    import org.apache.struts.action.ActionMapping;
026    import org.apache.struts.action.ActionMessage;
027    import org.kuali.rice.ksb.service.KSBServiceLocator;
028    
029    /**
030     * Struts action form for the {@link JavaSecurityManagementAction} 
031     * 
032     * @author Kuali Rice Team (rice.collab@kuali.org)
033     *
034     */
035    public class JavaSecurityManagementForm extends ActionForm {
036    
037        private static final long serialVersionUID = -46462912979586142L;
038    
039        private String alias;
040        private String password;
041        private String passwordVerify;
042        
043        /**
044         * This method is used to check for completeness of the form as well as verification of the desired password
045         */
046        public ActionErrors validateGenerateClientKeystore(ActionMapping mapping, HttpServletRequest request) {
047            ActionErrors errors = new ActionErrors();
048            // check that all data is filled in
049            if (StringUtils.isBlank(getAlias())) {
050                errors.add("property", new ActionMessage("Alias must have a valid value.",false));
051            }
052            if (StringUtils.isBlank(getPassword()) || StringUtils.isBlank(getPasswordVerify()) ) {
053                errors.add("property", new ActionMessage("Password must have a valid value in both fields.",false));
054            }
055            if (errors.isEmpty()) {
056                // if password and passwordVerify are not equal error out
057                if (!StringUtils.equals(getPassword(), getPasswordVerify())) {
058                    errors.add("property", new ActionMessage("Passwords do not match.",false));
059                }
060            }
061            if (errors.isEmpty()) {
062                try {
063                    if (KSBServiceLocator.getJavaSecurityManagementService().isAliasInKeystore(getAlias())) {
064                        errors.add("property", new ActionMessage("Alias '" + getAlias() + "' already exists in keystore.",false));
065                    }
066                } catch (KeyStoreException e) {
067                    errors.add("property", new ActionMessage("Could not check keystore file for alias '" + getAlias(),false));
068                }
069            }
070            return errors;
071        }
072    
073        public String getAlias() {
074            return this.alias;
075        }
076        public void setAlias(String alias) {
077            if (alias == null) {
078                this.alias = null;
079            } else {
080                this.alias = alias.trim();
081            }
082        }
083        public String getPassword() {
084            return this.password;
085        }
086        public void setPassword(String password) {
087            this.password = password;
088        }
089        public String getPasswordVerify() {
090            return this.passwordVerify;
091        }
092        public void setPasswordVerify(String passwordVerify) {
093            this.passwordVerify = passwordVerify;
094        }
095    
096    }