Commit e0f02e84 by Harsh Shah

Applicant portal login changes, C004, C005, C006 issue fixes, review changes

parent c3c3aa15
package performa.form;
import java.util.Date;
import java.util.Map;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import oneit.objstore.StorageException;
import oneit.logging.*;
import oneit.objstore.*;
import oneit.objstore.parser.BusinessObjectParser;
import oneit.security.AuthorisationToken;
import oneit.security.SecUser;
import oneit.objstore.services.TransactionTask;
import oneit.security.*;
import oneit.servlets.forms.*;
import oneit.servlets.process.ORMProcessFormProcessor;
import oneit.servlets.process.ORMProcessState;
import oneit.servlets.process.ProcessRedirectResult;
import oneit.servlets.security.SessionSecUserDecorator;
import oneit.servlets.process.*;
import oneit.utils.*;
import performa.orm.Candidate;
import performa.orm.Job;
import oneit.utils.parsers.FieldException;
import performa.orm.*;
import performa.utils.Utils;
public class SignInCandidateFP extends ORMProcessFormProcessor
public class SignInCandidateFP extends LoginProcessor
{
private static final String DEFAULT_PASSWORD = "Talentology123";
@Override
public SuccessfulResult processForm(SubmissionDetails submission, Map params) throws BusinessException, StorageException
{
HttpServletRequest request = submission.getRequest();
ORMProcessState process = (ORMProcessState)ProcessDecorator.getDefaultProcess(request);
ObjectTransaction objTran = process.getTransaction();
Job job = (Job) request.getAttribute("Job");
String nextPage = (String) request.getAttribute("nextPage");
String email = job.getEmail();
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "Inside SignInCandidateFP for ", job, " Email:", email);
SecUser secUser = SecUser.searchNAME(objTran, email);
final Map userMap = new HashMap();
if(secUser == null)
{
objTran.runInNewTX(new TransactionTask()
{
@Override
public void run(ObjectTransaction newObjTran) throws FieldException, StorageException
{
SecUser newSecUser = SecUser.createSecUser(newObjTran);
newSecUser.setUserName(email);
newSecUser.setAttribute("md5:" + SecUser.FIELD_Password, DEFAULT_PASSWORD);
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "New user created :: ", newSecUser);
newSecUser.addRole(Utils.getRole(Utils.ROLE_APPLICANT, newObjTran));
newSecUser.getExtensionOrCreate(Candidate.REFERENCE_Candidate);
userMap.put("username", newSecUser.getUserName());
userMap.put("password", DEFAULT_PASSWORD);
}
});
}
else if(!secUser.hasPrivilege(Utils.PRIV_ACCESS_APPLICANT_PORTAL) || secUser.getExtension(Candidate.REFERENCE_Candidate) == null)
{
throw new BusinessException("You are not allowed to access this portal");
}
else
{
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "Existing user skipping password check :: ", secUser);
userMap.put("username", secUser.getUserName());
userMap.put("password", DEFAULT_PASSWORD);
}
request.setAttribute("nextPage", nextPage + "&JobID=" + job.getObjectID());
return super.processForm(submission, userMap);
}
@Override
public void validate(ORMProcessState process, SubmissionDetails submission, MultiException exceptions, Map params) throws StorageException
protected Map validate(SubmissionDetails submission, MultiException exceptions)
{
HttpServletRequest request = submission.getRequest();
Job job = (Job) request.getAttribute("Job");
BusinessObjectParser.assertFieldCondition(job.getEmail()!= null,
job,
job.FIELD_Email,
"mandatory",
exceptions,
true,
request);
BusinessObjectParser.assertFieldCondition(job.getEmail()!= null, job, Job.FIELD_Email, "mandatory", exceptions, true, request);
super.validate(process, submission, exceptions, params);
return super.validate(submission, exceptions);
}
@Override
public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException
public SuccessfulResult processSuccessfulLogin(SubmissionDetails submission, Map requestParameters, SecUser secUser) throws BusinessException
{
HttpServletRequest request = submission.getRequest();
Job job = (Job) request.getAttribute("Job");
String nextPage = (String) request.getAttribute("nextPage");
Tuple.T2<Candidate, Boolean> tuple = job.getUserOrCreate();
Candidate candidate = tuple.get0();
SecUser secUser = candidate.getUser();
// request.getSession().invalidate();
request.getSession().setAttribute (AuthorisationToken.AUTH_TOKEN_ID, secUser);
// place the user on the session
request.getSession ().setAttribute (SecUser.SEC_USER_ID, secUser);
// This is only to help with the tomcat manager, so you can see which user belongs to which session
request.getSession ().setAttribute (SecUser.SEC_USER_ID+".desc", secUser.getDescription());
request.getSession ().setAttribute (SecUser.SEC_USER_ID+".loggedin", ""+new Date());
request.getSession ().setAttribute (SessionSecUserDecorator.REFRESH_SECURITY, Boolean.TRUE);
process.setAttribute("Candidate", candidate);
return new ProcessRedirectResult(nextPage, new String[]{});
return new RedirectResult((String)submission.getRequest().getAttribute("nextPage"), null);
}
}
\ No newline at end of file
......@@ -22,8 +22,12 @@ public class VerifyIdentityFP extends SaveFP
Job job = (Job) request.getAttribute("Job");
Candidate candidate = (Candidate) request.getAttribute("Candidate");
SecUser secUser = candidate.getUser();
if(secUser.getUserName() != null)
{
BusinessObjectParser.assertFieldCondition(StringUtils.isEmailAddress(secUser.getUserName()), job, Job.FIELD_Email, "invalid", exceptions, true, request);
}
BusinessObjectParser.assertFieldCondition(job.getEmail()!= null, job, Job.FIELD_Email, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(secUser.getFirstName() != null, secUser, SecUser.FIELD_FirstName, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(secUser.getLastName() != null, secUser, SecUser.FIELD_LastName, "mandatory", exceptions, true, request);
......
......@@ -2,16 +2,13 @@ package performa.orm;
import java.util.*;
import oneit.logging.LoggingArea;
import oneit.objstore.ObjectStatus;
import oneit.objstore.rdbms.filters.*;
import oneit.objstore.utils.ObjstoreUtils;
import oneit.security.*;
import oneit.utils.*;
import oneit.utils.filter.CollectionFilter;
import oneit.utils.filter.Filter;
import oneit.utils.parsers.FieldException;
import performa.orm.types.*;
import performa.utils.Utils;
public class Job extends BaseJob
......@@ -84,31 +81,6 @@ public class Job extends BaseJob
return getAssessmentCriteraByType(criteria).size();
}
public Tuple.T2<Candidate, Boolean> getUserOrCreate() throws FieldException
{
boolean safeRedirect = false;
SecUser secUser = SecUser.searchNAME(getTransaction(), getEmail());
if(secUser == null)
{
secUser = SecUser.createSecUser(getTransaction());
secUser.setUserName(getEmail());
secUser.setAttribute("md5:" + SecUser.FIELD_Password, "Talentology123");
secUser.addRole(Utils.getRole(Utils.ROLE_APPLICANT, getTransaction()));
safeRedirect = true;
}
Candidate candidate = secUser.getExtensionOrCreate(Candidate.REFERENCE_Candidate);
if(candidate.getStatus() == ObjectStatus.NEW)
{
safeRedirect = true;
}
return new Tuple.T2(candidate, safeRedirect);
}
//to get All Profile Assessment Questions
public Collection<Question> getAllProfileAssessmentQuestions()
......
......@@ -4,7 +4,7 @@ import java.util.*;
import oneit.objstore.ObjectTransaction;
import oneit.security.*;
import oneit.utils.Tuple;
import performa.orm.Level;
import performa.orm.*;
import performa.orm.types.Importance;
/**
......@@ -42,6 +42,11 @@ public class Utils
return (secUser != null && secUser.hasPrivilege(PRIV_ACCESS_APPLICANT_PORTAL));
}
public static Candidate getCandidateUser (ObjectTransaction objTran)
{
return SecUser.getTXUser(objTran).getExtension(Candidate.REFERENCE_Candidate);
}
public static Importance[] getImportancesForAssessment()
{
List<Importance> importances = new ArrayList<>();
......
......@@ -10,6 +10,7 @@
String portalName = WebUtils.getPortalName(objTran, article);
SecUser loggedInUser = SecUser.getTXUser(objTran);
SecUser clientUser = Utils.checkAdminPortalAccess(loggedInUser) ? loggedInUser : null;
SecUser applicantUser = Utils.checkApplicantPortalAccess(loggedInUser) ? loggedInUser : null;
%>
<%@ include file="setuprequest.jsp" %>
......
......@@ -51,7 +51,7 @@
<div class="review-medium-title">
<oneit:ormlabel obj="<%= job %>" field="JobDescription" />
<span class="skill-label">
<oneit:toString value="<%= job.getJobDescription() %>" mode="EscapeHTML" />
<oneit:toString value="<%= job.getJobDescription() %>" mode="ParagraphHTML" />
</span>
</div>
</div>
......@@ -157,7 +157,7 @@
</div>
<div class="form-group">
<div class="beloning job-match-ass">
<oneit:toString value="<%= job.getAssessmentType() %>" mode="EscapeHTML"/>
<oneit:toString value="<%= job.getAssessmentType() %>" mode="EscapeHTML"/> <oneit:toString value="<%= job.getAssessmentType().getQuestionDetails() %>" mode="EscapeHTML"/>
</div>
</div>
<div class="text-center">
......
......@@ -3,6 +3,7 @@
<NODE name="dynamic_content_form::APPLICANT_PORTAL" factory="Participant">
<FORM name="*.signIn" factory="Participant" class="performa.form.SignInCandidateFP"/>
<FORM name="*.verifyIdentity" factory="Participant" class="performa.form.VerifyIdentityFP"/>
</NODE>
......@@ -10,8 +11,6 @@
<INHERITS factory="Named" nodename="dynamic_content_form"/>
<DECORATOR id="auth" factory="MetaComponent" component="ApplicantPortalAuthDecorator" priv="TL_AccessApplicantPortal"/>
<FORM name="*.verifyIdentity" factory="Participant" class="performa.form.VerifyIdentityFP"/>
</NODE>
......@@ -21,6 +20,5 @@
<FAILED_URL factory="String" value="RestrictedAccess.jsp"/>
<NO_USER_URL factory="String" value="ApplicantPortal-ApplyJob.htm"/>
</AUTHENTICATOR>
</NODE>
</OBJECTS>
......@@ -8,10 +8,10 @@
ObjectTransaction objTran = process.getTransaction ();
String nextPage = WebUtils.getSamePageInRenderMode(request, "SelectionCriteria");
Job job = (Job) process.getAttribute("Job");
Candidate candidate = (Candidate) process.getAttribute("Candidate");
Candidate candidate = Utils.getCandidateUser(transaction);
JobApplication jobApplication = JobApplication.searchCandidateJob(objTran, candidate, job);
if(jobApplication==null)
if(jobApplication == null)
{
jobApplication = JobApplication.createNewApplication(candidate, job);
}
......@@ -28,7 +28,7 @@
</p>
<div class="three-block">
<div class="col-sm-4 col-xs-12 app-block eq-height">
<div class="block-icon"><img src="images/job-match-icon.png" /></div>
<div class="block-icon"><img src="images/selection-assessment.png" /></div>
<div class="app-block-title">Selection Criteria</div>
<div class="estimated-time">Estimated time to complete: <span>5 mins</span></div>
<p>
......@@ -52,7 +52,7 @@
</p>
</div>
<div class="col-sm-4 col-xs-12 app-block eq-height last-border">
<div class="block-icon"><img src="images/selection-assessment.png" /></div>
<div class="block-icon"><img src="images/job-match-icon.png" /></div>
<div class="app-block-title">Job Match Assessment</div>
<div class="estimated-time">Estimated time to complete: <span>20 mins</span></div>
<p>
......
......@@ -140,7 +140,7 @@
<%
}
%>
<div>Autosaved 1 min ago.</div>
<%-- <div>Autosaved 1 min ago.</div> --%>
</div>
</div>
</div>
......
......@@ -46,6 +46,9 @@
</p>
</div>
<%
FormTag applicationForm = FormTag.getActiveFormTag(request);
FormBuilder formBuilder = applicationForm.getFormBuilder();
for(CriteriaType ct: CriteriaType.getCriteriaTypeArray())
{
Collection<AssessmentCriteriaAnswer> answerList = jobApplication.getACAnswersByType(ct);
......@@ -59,21 +62,24 @@
<%
for(AssessmentCriteriaAnswer answer: answerList)
{
String optionKey = WebUtils.getInputKey(request, answer, AssessmentCriteriaAnswer.FIELD_Answer);
String optionKey = WebUtils.getInputKey(request, answer, AssessmentCriteriaAnswer.FIELD_Answer);
String formValue = formBuilder.fieldValue (optionKey, answer.getAnswer() == null ? "" : String.valueOf(answer.getAnswer()));
String trueID = answer.getObjectID() + "_Y";
String falseID = answer.getObjectID() + "_N";
String trueSelected = CollectionUtils.equals("true", formValue) ? "checked" : "";
String falseSelected = CollectionUtils.equals("false", formValue) ? "checked" : "";
%>
<div class="form-group-new question-y-n">
<label class="second-label"><oneit:toString value="<%= answer.getAssessmentCriteria() %>" mode="EscapeHTML"/></label>
<div class="radio radio-primary second-radio-primary">
<input type="radio" name="<%= optionKey %>" value="y" id="radio5" <%= answer.getAnswer() == true ? "selected" : "" %>/>
<input type="radio" name="radio30" id="radio5" value="option1" checked="">
<label for="radio5">
<input type="radio" name="<%= optionKey %>" value="true" id="<%= trueID%>" <%= trueSelected %>/>
<label for="<%= trueID%>">
Yes
</label>
</div>
<div class="radio radio-primary second-radio-primary">
<input type="radio" name="<%= optionKey %>" value="n" id="radio6" <%= answer.getAnswer() == false ? "selected" : "" %>/>
<input type="radio" name="radio30" id="radio6" value="option1" checked="">
<label for="radio6">
<input type="radio" name="<%= optionKey %>" value="false" id="<%= falseID%>" <%= falseSelected %>/>
<label for="<%= falseID%>">
No
</label>
</div>
......
......@@ -5,14 +5,16 @@
<oneit:dynIncluded>
<%
String nextPage = WebUtils.getSamePageInRenderMode(request, "ApplicationOutline");
Job job = (Job) process.getAttribute("Job");
Candidate candidate = (Candidate) process.getAttribute("Candidate");
boolean toRedirect = GenericObjDF.getOrCreateObject (request, "Job", Job.REFERENCE_Job);
Job job = (Job) process.getAttribute("Job");
Debug.assertion(job != null && !toRedirect, "Invalid job in applicant portal");
Debug.assertion(job != null, "Job is null in applicant portal");
Debug.assertion(candidate != null, "Candidate is null in applicant portal");
SecUser secUser = SecUser.getTXUser(transaction);
Candidate candidate = secUser.getExtension(Candidate.REFERENCE_Candidate);
SecUser secUser = candidate.getUser();
Debug.assertion(candidate != null, "Invalid candidate in applicant portal");
String nextPage = WebUtils.getSamePageInRenderMode(request, "ApplicationOutline");
%>
<script>
$(document.body).addClass('bg-color');
......@@ -27,8 +29,8 @@
<div class="pl-confirm text-center">Please confirm your details to continue</div>
<div class="main-box-layout main-verify-step-2">
<div class="form-group text-left">
<label><oneit:ormlabel obj="<%= job %>" field="Email" /></label>
<oneit:ormInput obj="<%= job %>" type="text" attributeName="Email" cssClass="form-control second-style" />
<label>Email Address</label>
<oneit:ormInput obj="<%= secUser %>" type="text" attributeName="UserName" cssClass="form-control second-style" />
</div>
<div class="row">
<div class="form-group text-left col-sm-6 col-xs-12">
......@@ -49,7 +51,7 @@
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("Job", job)
.mapEntry("Candidate", candidate)
.mapEntry("attribNamesToRestore", CollectionUtils.createSet("Job","Candidate"))
.mapEntry("attribNamesToRestore", CollectionUtils.createSet("Job"))
.mapEntry("restartProcess", Boolean.TRUE)
.toMap() %>"/>
</div>
......
......@@ -5,16 +5,15 @@
<oneit:dynIncluded>
<%
ObjectTransaction objTran = process.getTransaction ();
String nextPage = WebUtils.getSamePageInRenderMode(request, "JobMatchAssessment");
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication");
Job job = jobApplication.getJob();
ObjectTransaction objTran = process.getTransaction ();
String nextPage = WebUtils.getSamePageInRenderMode(request, "JobMatchAssessment");
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication");
Job job = jobApplication.getJob();
%>
<script>
$(document.body).addClass('bg-color');
</script>
<div class="main-application-outline">
<div class="selection-aust-logo">
<img src="images/australia-post.png" />
......@@ -30,68 +29,68 @@
<span>Estimated time to complete: <b>5 mins</b></span>
</div>
<div class="section-tab-view">
<oneit:form name="editApplication" method="post" enctype="multipart/form-data">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/applicantportal/inc/application_main_tabs.jsp" PageNumber="2" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="section-page-area">
<div class="main-sc-section">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean semper at magna a
tristique. Ut ut magna ut mauris sagittis placerat. Suspendisse vitae tempus sem. Lorem
ipsum dolor sit amet, consectetur adipiscing elit.
</p>
</div>
<div class="selection-br-line"></div>
<div class="main-sc-section main-wc-section">
<div class="main-sc-section">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean semper at magna a
tristique. Ut ut magna ut mauris sagittis placerat. Suspendisse vitae tempus sem. Lorem
ipsum dolor sit amet, consectetur adipiscing elit.
</p>
</div>
<div class="selection-br-line"></div>
<div class="main-sc-section main-wc-section">
<%
FormTag applicationForm = FormTag.getActiveFormTag(request);
FormBuilder formBuilder = applicationForm.getFormBuilder();
int i = 1;
for(CultureCriteriaAnswer answer: jobApplication.getCultureCriteriaAnswersSet())
{
CultureCriteria criteria = answer.getCultureCriteria();
Collection<CultureElementQuestion> questions = criteria.pipelineCultureCriteria().toCultureElement().toQuestions().vals();
CultureElementQuestion selectedQst = answer.getSelectedQuestion();
BaseBusinessClass questionRef = answer.getSingleAssoc(CultureCriteriaAnswer.SINGLEREFERENCE_SelectedQuestion);
String key = WebUtils.getRadioSingleAssocKey(request, questionRef, CultureCriteriaAnswer.SINGLEREFERENCE_SelectedQuestion);
String optionKey = WebUtils.getRadioSingleAssocKey(request, answer, CultureCriteriaAnswer.SINGLEREFERENCE_SelectedQuestion);
String formValue = formBuilder.fieldValue (optionKey, answer.getSelectedQuestion() == null ? "" : String.valueOf(answer.getSelectedQuestionID()));
%>
<div class="selection-form-title">Question 1</div>
<div class="selection-form-title">Question <%= i++%></div>
<div class="form-group-new question-y-n">
<%
for(CultureElementQuestion question: questions)
{
String id = "question_" + question.getID();
Boolean isSelected = CollectionUtils.equals(selectedQst, question);
String selectedStr = (isSelected) ? "checked" : "";
%>
<div class="radio radio-primary second-radio-primary full-width">
<input type="radio" id="<%= id %>" value="<%= question.getID().toString() %>" name="<%= key %>" <%= selectedStr %>/>
<label for="<%= id %>">
<oneit:toString value="<%= question.getDescription() %>" mode="EscapeHTML" nullValue="-"/>
</label>
</div>
<%
}
%>
</div>
<%
for(CultureElementQuestion question : questions)
{
String questionId = String.valueOf(question.getID().longID());
String selectedStr = (CollectionUtils.equals(questionId, formValue) ? "checked" : "");
%>
<div class="radio radio-primary second-radio-primary full-width">
<input type="radio" name="<%= optionKey %>" id="<%= questionId %>" value="<%= questionId %>" <%= selectedStr %> >
<label for="<%= questionId %>">
<oneit:toString value="<%= question.getDescription() %>" mode="EscapeHTML" nullValue="-"/>
</label>
</div>
<%
}
%>
</div>
<div class="section-br-inside"></div>
<%
}
%>
</div>
<div class="selection-br-line"></div>
<div class="main-sc-section btn-remove-padd">
<div class="section-btn text-center">
<input type="button" class="box-btn-gray" value="Save and exit" />
<oneit:button value="Proceed to step 3" name="gotoPage" cssClass="box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"/>
</div>
</div>
<div class="selection-br-line"></div>
<div class="main-sc-section btn-remove-padd">
<div class="section-btn text-center">
<input type="button" class="box-btn-gray" value="Save and exit" />
<oneit:button value="Proceed to step 3" name="gotoPage" cssClass="box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"/>
</div>
</div>
</div>
</oneit:form>
</div>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment