Skip to content
Snippets Groups Projects
SetSecurityQuestionAction.java 2.17 KiB
Newer Older
  • Learn to ignore specific revisions
  • HMoss's avatar
    HMoss committed
    package edu.ncsu.csc.itrust.action;
    
    import edu.ncsu.csc.itrust.beans.SecurityQA;
    import edu.ncsu.csc.itrust.dao.DAOFactory;
    import edu.ncsu.csc.itrust.dao.mysql.AuthDAO;
    import edu.ncsu.csc.itrust.exception.ITrustException;
    import edu.ncsu.csc.itrust.validate.SecurityQAValidator;
    
    /**
     * Handles setting and retrieving the security questions/answers for users Used by
     * patient/editMyDemographics.jsp, staff/editMyDemographics.jsp, staff/editPersonnell.jsp
     * 
     * 
     */
    public class SetSecurityQuestionAction {
    
    	private AuthDAO authDAO;
    	private long loggedInMID;
    
    	/**
    	 * Sets up defaults
    	 * 
    	 * @param factory The DAOFactory used to create the DAOs used in this action.
    	 * @param rLoggedInMID The MID of the user who is setting their security question.
    	 * @throws ITrustException
    	 */
    	public SetSecurityQuestionAction(DAOFactory factory, long rLoggedInMID) throws ITrustException {
    		this.authDAO = factory.getAuthDAO();
    		loggedInMID = checkMID(rLoggedInMID);
    	}
    
    	/**
    	 * Updates information in the database from the information held in the SecurityQA bean passed as a param
    	 * 
    	 * @param a
    	 *            SecurityQuestionBean that holds new information
    	 * @throws Exception
    	 */
    	public void updateInformation(SecurityQA a) throws Exception {
    		SecurityQAValidator sqav = new SecurityQAValidator();
    		sqav.validate(a);
    		authDAO.setSecurityQuestionAnswer(a.getQuestion(), a.getAnswer(), loggedInMID);
    	}
    
    	/**
    	 * Returns a SecurityQA bean holding the security info for the currently logged in user
    	 * 
    	 * @return SecurityQA for loggedInMid
    	 * @throws ITrustException
    	 */
    	public SecurityQA retrieveInformation() throws ITrustException {
    		SecurityQA toRet = new SecurityQA();
    		toRet.setAnswer(authDAO.getSecurityAnswer(loggedInMID));
    		toRet.setQuestion(authDAO.getSecurityQuestion(loggedInMID));
    		return toRet;
    	}
    	/**
    	 * Checks to make sure the MID exists in iTrust
    	 * 
    	 * @param mid MID to check
    	 * @return returns the MID if the user is valid, otherwise, throws an exception
    	 * @throws ITrustException
    	 */
    
    	private long checkMID(long mid) throws ITrustException {
    		if (!authDAO.checkUserExists(mid))
    			throw new ITrustException("MID " + mid + " is not a user!");
    		return mid;
    	}
    
    }