Commit d704fc95 by chenith

Social login for Admin portal.

parent 5e7926f7
......@@ -62,19 +62,24 @@ public class SendCompanyUserInvitesFP extends ORMProcessFormProcessor
CompanyUser companyUser = company.getAddedByUser();
SecUser secUser = companyUser.getUser();
String nextPage = (String) request.getAttribute("nextPage");
Boolean socialLogin = CollectionUtils.equals(process.getAttribute("socialLogin"), Boolean.TRUE);
LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing Company User", companyUser, secUser);
secUser.setAttribute("md5:" + SecUser.FIELD_Password, companyUser.getPassword());
companyUser.setIsAccountVerified(Boolean.TRUE);
company.setIsVerified(Boolean.TRUE);
sendAccountCreatedMail(companyUser, request);
if(!socialLogin)
{
secUser.setAttribute("md5:" + SecUser.FIELD_Password, companyUser.getPassword());
request.getSession().setAttribute (SecUser.SEC_USER_ID, secUser);
request.getSession().setAttribute (SessionSecUserDecorator.REFRESH_SECURITY, Boolean.TRUE);
LogMgr.log(LOG, LogLevel.PROCESSING1, "Password resetted", companyUser, secUser);
}
LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing Company User finished", companyUser, secUser);
......@@ -84,11 +89,16 @@ public class SendCompanyUserInvitesFP extends ORMProcessFormProcessor
{
if(!CollectionUtils.equals(cUser, companyUser))
{
SecUser sUser = Utils.getSecUserForCompanyIfAvailable(cUser);
Tuple.T2<SecUser, Boolean> userdata = Utils.getSecUserForCompanyIfAvailable(cUser);
SecUser sUser = userdata.get0();
LogMgr.log(LOG, LogLevel.PROCESSING1, "Started to send invitaion email.", cUser);
if(!userdata.get1()) //check user availablility
{
sUser.setUserName(sUser.getEmail().toLowerCase());
}
sUser.setAttribute("md5:" + SecUser.FIELD_Password, DEFAULT_PASSWORD);
sUser.addRole(Utils.getRole(Utils.ROLE_CLIENT, objTran));
......
......@@ -33,10 +33,20 @@ public class VerifyCompanyUserFP extends ORMProcessFormProcessor
{
HttpServletRequest request = submission.getRequest();
CompanyUser companyUser = (CompanyUser) request.getAttribute("CompanyUser");
Boolean socialLogin = (Boolean) request.getAttribute("socialLogin");
SecUser secUser = companyUser.getUser();
Company company = companyUser.getCompany();
if(socialLogin)
{
BusinessObjectParser.assertFieldCondition(secUser.getEmail()!=null, secUser, SecUser.FIELD_Email, "invalid", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(!Utils.isCompanyUserEmailFound(secUser.getTransaction(), secUser.getEmail()), secUser, SecUser.FIELD_Email, "emailExists", exceptions, true, request);
}
else
{
BusinessObjectParser.assertFieldCondition(StringUtils.isEmailAddress(secUser.getUserName()), secUser, SecUser.FIELD_Email, "invalid", 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);
......@@ -45,6 +55,8 @@ public class VerifyCompanyUserFP extends ORMProcessFormProcessor
BusinessObjectParser.assertFieldCondition(company.getCompanyName()!=null, company, Company.FIELD_CompanyName, "mandatory", exceptions, true, request);
}
if(!socialLogin)
{
BusinessObjectParser.assertFieldCondition(companyUser.getPassword()!= null, companyUser, CompanyUser.FIELD_Password, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(companyUser.getConfirmPassword()!= null, companyUser, CompanyUser.FIELD_ConfirmPassword, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(CollectionUtils.equals(companyUser.getPassword(), companyUser.getConfirmPassword()), companyUser, CompanyUser.FIELD_ConfirmPassword, "passwordNotMatch", exceptions, true, request);
......@@ -68,6 +80,7 @@ public class VerifyCompanyUserFP extends ORMProcessFormProcessor
{
throw NestedException.wrap(e);
}
}
return super.validate(submission, exceptions);
}
......@@ -81,6 +94,7 @@ public class VerifyCompanyUserFP extends ORMProcessFormProcessor
SecUser secUser = companyUser.getUser();
Company company = companyUser.getCompany();
String nextPage = (String) request.getAttribute("nextPage");
Boolean socialLogin = (Boolean) request.getAttribute("socialLogin");
LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing User", companyUser, secUser);
......@@ -89,6 +103,7 @@ public class VerifyCompanyUserFP extends ORMProcessFormProcessor
if(company.getIsVerified()!=Boolean.TRUE && CollectionUtils.equals(company.getAddedByUser(), companyUser))
{
process.setAttribute("Company", company);
process.setAttribute("socialLogin", socialLogin);
return new ProcessRedirectResult(nextPage, new String[0]);
}
......@@ -103,7 +118,11 @@ public class VerifyCompanyUserFP extends ORMProcessFormProcessor
IntercomUtils.createIntercomUser(secUser, "Hiring Team", intercomCompany);
}
if(!socialLogin)
{
secUser.setAttribute("md5:" + SecUser.FIELD_Password, companyUser.getPassword());
}
companyUser.setIsAccountVerified(Boolean.TRUE);
sendMail(companyUser, request);
......
......@@ -10,6 +10,7 @@ import oneit.components.*;
import oneit.logging.LogLevel;
import oneit.logging.LogMgr;
import oneit.logging.LoggingArea;
import oneit.objstore.ObjectStatus;
import oneit.objstore.ObjectTransaction;
import oneit.objstore.services.TransactionServicesFactory;
import oneit.security.Role;
......@@ -23,6 +24,9 @@ import oneit.servlets.utils.decorator.ServletDecorator;
import oneit.servlets.utils.decorator.ServletDecoratorConfig;
import oneit.utils.*;
import performa.orm.Candidate;
import performa.orm.CompanyUser;
import performa.orm.Company;
import performa.orm.types.RoleType;
/**
* This is almost similar class to OAuthCallbackDecorator,
......@@ -85,7 +89,20 @@ public class PerformaOAuthCallbackDecorator implements ServletDecorator, Initial
else if(fullURL.contains(WebUtils.ADMIN_PORTAL))
{
secUser.addRole(Role.searchNAME(secUser.getTransaction(), Utils.ROLE_CLIENT));
secUser.addRole(Role.searchNAME(secUser.getTransaction(), Utils.ROLE_COMPANY_ADMIN));
CompanyUser companyUser = secUser.getExtensionOrCreate(CompanyUser.REFERENCE_CompanyUser);
if(companyUser.getStatus()==ObjectStatus.NEW)
{
Company company = Company.createCompany(transaction);
company.setCompanyName(" ");
company.setAddedByUser(companyUser);
company.addToUsers(companyUser);
companyUser.setRole(RoleType.ADMIN);
}
}
transaction.commit();
......
......@@ -380,7 +380,7 @@ public class Utils
}
public static SecUser getSecUserForCompanyIfAvailable(CompanyUser companyUser)
public static Tuple.T2<SecUser, Boolean> getSecUserForCompanyIfAvailable(CompanyUser companyUser)
{
SecUser secUser = companyUser.getUser();
SecUser availableSecUser = SecUser.searchNAME(companyUser.getTransaction(), secUser.getEmail());
......@@ -396,11 +396,11 @@ public class Utils
secUser.removeFromExtensions(companyUser);
secUser.delete();
return availableSecUser;
return new Tuple.T2<SecUser, Boolean>(availableSecUser, Boolean.TRUE);
}
}
return secUser;
return new Tuple.T2<SecUser, Boolean>(secUser, Boolean.FALSE);
}
......
......@@ -71,7 +71,7 @@
</FORM>
<FORM name="*.facebookOAuthLogin" factory="Participant" class="oneit.security.oauth.form.FacebookOAuthLoginFP"/>
<FORM name="*.googleOAuthLogin" factory="Participant" class="oneit.security.oauth.form.GoogleOAuthLoginFP"/>
<!--<FORM name="*.linkedinOAuthLogin" factory="Participant" class="performa.form.LinkedInOAuthLoginFP"/>-->
<FORM name="*.linkedinOAuthLogin" factory="Participant" class="performa.form.LinkedInOAuthLoginFP"/>
</NODE>
<NODE name="forgot_password_jsp" factory="Participant">
......
......@@ -10,6 +10,7 @@
<%
String nextPage = WebUtils.getSamePageInRenderMode(request, "InviteUsers");
Company company = (Company) process.getAttribute("Company");
Boolean socialLogin = CollectionUtils.equals(process.getAttribute("socialLogin"), Boolean.TRUE);
Debug.assertion(company != null, "Invalid company user in admin portal");
......@@ -18,6 +19,7 @@
Integer pageNumber = 1;
process.setAttribute("Company", company);
process.setAttribute("socialLogin", socialLogin);
%>
<div class="hello-company-name">Hello, <%= secUser.getFirstName() %></div>
......
......@@ -17,7 +17,7 @@
<div class="form-group text-left">
<label>Email Address</label>
<%
if(companyUser.getStatus()==ObjectStatus.NEW)
if(companyUser.getStatus()==ObjectStatus.NEW || secUser.getEmail()==null)
{
%>
<oneit:ormInput obj="<%= secUser %>" type="text" attributeName="Email" cssClass="form-control" style="text-transform: lowercase" required="true"/>
......
......@@ -10,6 +10,7 @@
<%
String nextPage = WebUtils.getArticleByShortCut(process.getTransaction(), WebUtils.ADMIN_HOME).getLink(request) + "?showModal=true";
Company company = (Company) process.getAttribute("Company");
Boolean socialLogin = CollectionUtils.equals(process.getAttribute("socialLogin"), Boolean.TRUE);
Debug.assertion(company != null, "Invalid company user in admin portal");
......@@ -88,7 +89,7 @@
<div class="main-sc-section text-center company-profile-btn">
<oneit:button value="Send invites & proceed" name="sendCompanyUserInvites" cssClass="btn btn-primary box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Company", company).toMap())
.mapEntry("procParams", CollectionUtils.mapEntry("socialLogin", socialLogin).mapEntry("Company", company).toMap())
.toMap() %>"/>
</div>
</div>
......
......@@ -8,6 +8,19 @@
<%
//TODO: filter with Client;
SecUser secUser = SecUser.getTXUser(transaction);
//to verify social login and redirect to login verification
if(secUser.hasRole(Utils.ROLE_CLIENT))
{
CompanyUser companyUser = secUser.getExtension(CompanyUser.REFERENCE_CompanyUser);
if(companyUser!=null && companyUser.getIsAccountVerified()!=Boolean.TRUE)
{
response.sendRedirect(WebUtils.getArticleByShortCut(process.getTransaction(), WebUtils.COMPANY_ACCOUNT_VERIFICATION).getLink(request));
return;
}
}
Job[] jobs = Job.SearchByAll().andJobStatus(new EqualsFilter<>(JobStatus.OPEN))
.andCompanyUser(new EqualsFilter(secUser.getExtension(CompanyUser.REFERENCE_CompanyUser)))
.search(transaction);
......
......@@ -10,6 +10,7 @@
String nextPage = WebUtils.getSamePageInRenderMode(request, "CompanyProfile");
CompanyUser companyUser = (CompanyUser) process.getAttribute("CompanyUser");
SecUser secUser = null;
Boolean socialLogin = Boolean.FALSE;
//to process company user verification
String id = request.getParameter("id");
......@@ -31,8 +32,22 @@
if(invalid)
{
//to handle social login
SecUser logedInUser = SecUser.getTXUser(transaction);
companyUser = logedInUser.getExtension(CompanyUser.REFERENCE_CompanyUser);
if(logedInUser!=null
&& logedInUser.hasRole(Utils.ROLE_CLIENT)
&& companyUser!=null
&& companyUser.getIsAccountVerified()!=Boolean.TRUE)
{
socialLogin = Boolean.TRUE;
}
else
{
response.sendRedirect(WebUtils.getArticleByShortCut(process.getTransaction(), WebUtils.ADMIN_HOME).getLink(request));
}
}
Debug.assertion(companyUser != null, "Invalid CompanyUser in admin portal");
%>
......@@ -78,6 +93,10 @@
<div class="main-box-layout login-box">
<oneit:dynInclude page="/extensions/adminportal/inc/company_user_data.jsp" data="<%= CollectionUtils.EMPTY_MAP%>" CompanyUser="<%= companyUser %>"/>
<%
if(!socialLogin)
{
%>
<div class="form-group text-left">
<label>Password</label>
<oneit:ormInput obj="<%= companyUser %>" type="password" attributeName="Password" cssClass="form-control second-style reset-pw" required="true"/>
......@@ -86,9 +105,13 @@
<label>Confirm password</label>
<oneit:ormInput obj="<%= companyUser %>" type="password" attributeName="ConfirmPassword" cssClass="form-control second-style reset-pw " required="true"/>
</div>
<%
}
%>
<oneit:button value="Verify and login" name="verifyCompanyUser" cssClass="box-btn verify-btn"
requestAttribs="<%= CollectionUtils.mapEntry("CompanyUser", companyUser)
.mapEntry("socialLogin", socialLogin)
.mapEntry("nextPage", nextPage).toMap() %>"/>
</div>
</oneit:form>
......
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