/** * Get all challenge questions * * @return array of questions * @throws IdentityMgtServiceException if fails */ public ChallengeQuestionDTO[] getAllChallengeQuestions() throws IdentityMgtServiceException { ChallengeQuestionProcessor processor = IdentityMgtServiceComponent.getRecoveryProcessor().getQuestionProcessor(); List<ChallengeQuestionDTO> questionDTOs = null; try { questionDTOs = processor.getAllChallengeQuestions(); } catch (IdentityException e) { log.error("Error while loading user challenges", e); throw new IdentityMgtServiceException("Error while loading user challenges"); } return questionDTOs.toArray(new ChallengeQuestionDTO[questionDTOs.size()]); }
/** * This method is to verify the user supplied answer for the challenge question. * * @param userName * @param confirmation * @param questionId * @param answer * @return status and key details about the operation status. * @throws IdentityMgtServiceException */ public VerificationBean verifyUserChallengeAnswer( String userName, String confirmation, String questionId, String answer) throws IdentityMgtServiceException { VerificationBean bean = new VerificationBean(); bean.setVerified(false); if (log.isDebugEnabled()) { log.debug("User challenge answer request received with username :"******"No challenge question id provided for verification"; bean.setError(error); if (log.isDebugEnabled()) { log.debug(error); } return bean; } UserDTO userDTO = null; try { userDTO = Utils.processUserId(userName); } catch (IdentityException e) { bean = handleError( VerificationBean.ERROR_CODE_INVALID_USER + " Error verifying user: "******" Error verifying confirmation code for user : "******""); bean.setUserId(userName); if (log.isDebugEnabled()) { log.debug("User answer verification successful for user: "******"Challenge answer verification failed for user : "******""); // clear the key to avoid returning to caller. log.error(bean.getError()); } } finally { if (IdentityMgtConfig.getInstance().isSaasEnabled()) { PrivilegedCarbonContext.endTenantFlow(); } } return bean; }