Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
PERFORMA_REPLICA
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Muhammad Usman
PERFORMA_REPLICA
Commits
34dfe523
Commit
34dfe523
authored
Sep 07, 2017
by
chenith
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
send invitation emails to company users.
parent
2373afbf
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
378 additions
and
19 deletions
+378
-19
SendCompanyUserInvitesFP.java
cmsWebApp/src/performa/form/SendCompanyUserInvitesFP.java
+194
-0
VerifyCompanyUserFP.java
cmsWebApp/src/performa/form/VerifyCompanyUserFP.java
+6
-6
CustomServlets_adminPortal.xml
...oot/extensions/adminportal/CustomServlets_adminPortal.xml
+4
-4
company_profile.jsp
cmsWebApp/webroot/extensions/adminportal/company_profile.jsp
+0
-0
invite_users.jsp
cmsWebApp/webroot/extensions/adminportal/invite_users.jsp
+108
-0
invite_users.jsp.jsp
...ebApp/webroot/extensions/adminportal/invite_users.jsp.jsp
+0
-6
20170907_InvitationEmailTemplate.cms.xml
...nportal/upgrades/20170907_InvitationEmailTemplate.cms.xml
+61
-0
verify_company.jsp
cmsWebApp/webroot/extensions/adminportal/verify_company.jsp
+5
-3
No files found.
cmsWebApp/src/performa/form/SendCompanyUserInvitesFP.java
0 → 100644
View file @
34dfe523
package
performa
.
form
;
import
java.util.Date
;
import
java.util.Map
;
import
javax.servlet.http.HttpServletRequest
;
import
oneit.business.content.Article
;
import
oneit.components.ParticipantInitialisationContext
;
import
oneit.email.ConfigurableArticleTemplateEmailer
;
import
oneit.email.ConfigurableEmailerException
;
import
oneit.logging.*
;
import
oneit.net.LoopbackHTTP
;
import
oneit.objstore.ObjectTransaction
;
import
oneit.objstore.StorageException
;
import
oneit.objstore.parser.BusinessObjectParser
;
import
oneit.security.SecUser
;
import
oneit.servlets.forms.*
;
import
oneit.servlets.process.*
;
import
oneit.servlets.security.SessionSecUserDecorator
;
import
oneit.utils.*
;
import
performa.orm.*
;
import
performa.utils.Utils
;
import
performa.utils.WebUtils
;
public
class
SendCompanyUserInvitesFP
extends
ORMProcessFormProcessor
{
private
static
LoggingArea
LOG
=
LoggingArea
.
createLoggingArea
(
"VerifyCompanyUser"
);
private
static
final
String
DEFAULT_PASSWORD
=
"Talentology123"
;
protected
ConfigurableArticleTemplateEmailer
emailer
;
protected
ConfigurableArticleTemplateEmailer
invitationEmailer
;
@Override
public
void
validate
(
ORMProcessState
process
,
SubmissionDetails
submission
,
MultiException
exceptions
,
Map
params
)
throws
StorageException
{
HttpServletRequest
request
=
submission
.
getRequest
();
Company
company
=
(
Company
)
process
.
getAttribute
(
"Company"
);
for
(
CompanyUser
cUser
:
company
.
getUsersSet
())
{
if
(!
CollectionUtils
.
equals
(
cUser
,
company
.
getAddedByUser
()))
{
SecUser
secUser
=
cUser
.
getUser
();
BusinessObjectParser
.
assertFieldCondition
(!
isEmailFound
(
process
.
getTransaction
(),
secUser
.
getEmail
()),
secUser
,
SecUser
.
FIELD_Email
,
"emailExists"
,
exceptions
,
true
,
request
);
}
}
super
.
validate
(
process
,
submission
,
exceptions
,
params
);
}
@Override
public
SuccessfulResult
processForm
(
ORMProcessState
process
,
SubmissionDetails
submission
,
Map
params
)
throws
BusinessException
,
StorageException
{
HttpServletRequest
request
=
submission
.
getRequest
();
ObjectTransaction
objTran
=
process
.
getTransaction
();
Company
company
=
(
Company
)
process
.
getAttribute
(
"Company"
);
CompanyUser
companyUser
=
company
.
getAddedByUser
();
SecUser
secUser
=
companyUser
.
getUser
();
String
nextPage
=
(
String
)
request
.
getAttribute
(
"nextPage"
);
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
);
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
);
//process user invitations
for
(
CompanyUser
cUser
:
company
.
getUsersSet
())
{
if
(!
CollectionUtils
.
equals
(
cUser
,
companyUser
))
{
SecUser
sUser
=
cUser
.
getUser
();
LogMgr
.
log
(
LOG
,
LogLevel
.
PROCESSING1
,
"Started to send invitaion email."
,
cUser
);
sUser
.
setUserName
(
sUser
.
getEmail
().
toLowerCase
());
sUser
.
setAttribute
(
"md5:"
+
SecUser
.
FIELD_Password
,
DEFAULT_PASSWORD
);
sUser
.
addRole
(
Utils
.
getRole
(
Utils
.
ROLE_CLIENT
,
objTran
));
LogMgr
.
log
(
LOG
,
LogLevel
.
PROCESSING1
,
"New user created :: "
,
sUser
);
sendInvitationMail
(
cUser
,
request
);
LogMgr
.
log
(
LOG
,
LogLevel
.
PROCESSING1
,
"End of sending invitation email."
,
cUser
);
}
}
process
.
completeAndRestart
();
return
new
ProcessRedirectResult
(
nextPage
,
new
String
[
0
]);
}
@Override
public
void
init
(
ParticipantInitialisationContext
context
)
throws
InitialisationException
{
super
.
init
(
context
);
emailer
=
(
ConfigurableArticleTemplateEmailer
)
(
context
.
getSingleChild
(
"AccountCreatedEmailer"
));
invitationEmailer
=
(
ConfigurableArticleTemplateEmailer
)
(
context
.
getSingleChild
(
"InvitationEmailer"
));
}
protected
void
sendAccountCreatedMail
(
CompanyUser
companyUser
,
HttpServletRequest
request
)
throws
BusinessException
{
try
{
LogMgr
.
log
(
LOG
,
LogLevel
.
PROCESSING1
,
"Sending Account Created mail from VerifyCompanyUserFP to :: "
,
companyUser
);
Map
defaultParams
=
CollectionUtils
.
EMPTY_MAP
;
ObjectTransform
transform
=
Utils
.
createCompoundTransform
(
defaultParams
,
companyUser
);
Utils
.
sendMail
(
emailer
,
transform
,
new
String
[]{
companyUser
.
getUser
().
getUserName
()},
null
,
companyUser
);
LogMgr
.
log
(
LOG
,
LogLevel
.
PROCESSING1
,
"Sent Account Created mail successfully from "
+
SendCompanyUserInvitesFP
.
class
+
" to :: "
,
companyUser
);
}
catch
(
ConfigurableEmailerException
ex
)
{
LogMgr
.
log
(
LOG
,
LogLevel
.
SYSTEMERROR1
,
ex
,
"Error occured while sending mail for CompanyUser :: "
+
companyUser
);
throw
new
BusinessException
(
"We are unable to send mail. Please try again or contact Talentology for more details."
);
}
}
protected
void
sendInvitationMail
(
CompanyUser
companyUser
,
HttpServletRequest
request
)
throws
BusinessException
{
if
(
companyUser
.
getIsAccountVerified
()!=
Boolean
.
TRUE
)
{
try
{
LogMgr
.
log
(
LOG
,
LogLevel
.
PROCESSING1
,
"Sending invitation mail from SendVerificationMailFP to :: "
,
companyUser
);
Article
invitationArticle
=
WebUtils
.
getArticleByShortCut
(
companyUser
.
getTransaction
(),
WebUtils
.
COMPANY_ACCOUNT_VERIFICATION
);
RandomStringGen
random
=
new
RandomStringGen
();
//set invitation key and send mail time
companyUser
.
setVerificationKey
(
random
.
generateAlphaNum
(
6
));
companyUser
.
setVerificationMailSendDate
(
new
Date
());
String
link
=
LoopbackHTTP
.
getRemoteAccessURL
(
request
)
+
invitationArticle
.
getLink
(
request
,
CollectionUtils
.
EMPTY_MAP
,
"/"
)
+
"?id="
+
companyUser
.
getID
()
+
"&key="
+
companyUser
.
getVerificationKey
();
Map
defaultParams
=
CollectionUtils
.
mapEntry
(
"link"
,
link
).
toMap
();
ObjectTransform
transform
=
Utils
.
createCompoundTransform
(
defaultParams
,
companyUser
);
Utils
.
sendMail
(
invitationEmailer
,
transform
,
new
String
[]{
companyUser
.
getUser
().
getEmail
()},
null
,
companyUser
);
LogMgr
.
log
(
LOG
,
LogLevel
.
PROCESSING1
,
"Sent invitation mail successfully from "
+
SendVerificationMailFP
.
class
+
" to :: "
,
companyUser
);
}
catch
(
ConfigurableEmailerException
ex
)
{
LogMgr
.
log
(
LOG
,
LogLevel
.
SYSTEMERROR1
,
ex
,
"Error occured while sending mail for Candidate :: "
+
companyUser
);
throw
new
BusinessException
(
"We are unable to send mail. Please try again or contact Talentology for more details."
);
}
}
else
{
LogMgr
.
log
(
LOG
,
LogLevel
.
PROCESSING1
,
"Call from "
+
SendVerificationMailFP
.
class
+
". Account is already verified for candidate :: "
,
companyUser
);
}
}
private
Boolean
isEmailFound
(
ObjectTransaction
objTran
,
String
email
)
{
if
(
email
!=
null
)
{
SecUser
user
=
SecUser
.
searchNAME
(
objTran
,
email
.
toLowerCase
());
if
(
user
!=
null
)
//&& user.getExtension(CompanyUser.REFERENCE_CompanyUser)!=null
{
return
Boolean
.
TRUE
;
}
}
return
Boolean
.
FALSE
;
}
}
\ No newline at end of file
cmsWebApp/src/performa/form/VerifyCompanyUserFP.java
View file @
34dfe523
...
...
@@ -61,21 +61,21 @@ public class VerifyCompanyUserFP extends ORMProcessFormProcessor
LogMgr
.
log
(
LOG
,
LogLevel
.
PROCESSING1
,
"Verifing User"
,
companyUser
,
secUser
);
if
(
CollectionUtils
.
equals
(
companyUser
.
getPassword
(),
companyUser
.
getConfirmPassword
()))
{
secUser
.
setAttribute
(
"md5:"
+
SecUser
.
FIELD_Password
,
companyUser
.
getPassword
());
companyUser
.
setIsAccountVerified
(
Boolean
.
TRUE
);
{
if
(
company
.
getIsVerified
()!=
Boolean
.
TRUE
)
{
company
.
setIsVerified
(
Boolean
.
TRUE
);
process
.
setAttribute
(
"Company"
,
company
);
nextPage
=
nextPage
+
"&CompanyUserID="
+
companyUser
.
getObjectID
(
);
return
new
ProcessRedirectResult
(
nextPage
,
new
String
[
0
]
);
}
else
{
nextPage
=
WebUtils
.
getArticleByShortCut
(
process
.
getTransaction
(),
WebUtils
.
ADMIN_HOME
).
getLink
(
request
);
}
secUser
.
setAttribute
(
"md5:"
+
SecUser
.
FIELD_Password
,
companyUser
.
getPassword
());
companyUser
.
setIsAccountVerified
(
Boolean
.
TRUE
);
sendMail
(
companyUser
,
request
);
request
.
getSession
().
setAttribute
(
SecUser
.
SEC_USER_ID
,
secUser
);
...
...
cmsWebApp/webroot/extensions/adminportal/CustomServlets_adminPortal.xml
View file @
34dfe523
...
...
@@ -34,6 +34,10 @@
<FORM
name=
"*.verifyCompanyUser"
factory=
"Participant"
class=
"performa.form.VerifyCompanyUserFP"
>
<AccountCreatedEmailer
factory=
"Participant"
class=
"oneit.email.ConfigurableArticleTemplateEmailer"
templateShortcut=
"AccountCreatedMail"
/>
</FORM>
<FORM
name=
"*.sendCompanyUserInvites"
factory=
"Participant"
class=
"performa.form.SendCompanyUserInvitesFP"
>
<AccountCreatedEmailer
factory=
"Participant"
class=
"oneit.email.ConfigurableArticleTemplateEmailer"
templateShortcut=
"AccountCreatedMail"
/>
<InvitationEmailer
factory=
"Participant"
class=
"oneit.email.ConfigurableArticleTemplateEmailer"
templateShortcut=
"InvitationMail"
/>
</FORM>
</NODE>
<NODE
name=
"job_assessment_criteria_add_jsp"
factory=
"Participant"
>
...
...
@@ -76,10 +80,6 @@
</FORM>
</NODE>
<NODE
name=
"company_profile_jsp"
factory=
"Participant"
>
<INHERITS
factory=
"Named"
nodename=
"CoreORMAdminNoPriv"
/>
</NODE>
<NODE
name=
"invite_user_add_jsp"
factory=
"Participant"
>
<INHERITS
factory=
"Named"
nodename=
"CoreORMAdminNoPriv"
/>
</NODE>
...
...
cmsWebApp/webroot/extensions/adminportal/company_profile.jsp
View file @
34dfe523
This diff is collapsed.
Click to expand it.
cmsWebApp/webroot/extensions/adminportal/invite_users.jsp
0 → 100644
View file @
34dfe523
<%@ page extends="oneit.servlets.jsp.JSPInclude" %>
<%@ include file="/inc/stdimports50.jsp" %><%-- This is in cougar --%>
<%@ include file="/inc/stdcms.jsp" %><%-- This is in cougar --%>
<%@ include file="/extensions/performa/inc/stdimports.jsp" %>
<%@ include file="inc/htmlheader_nopriv.jsp" %>
<oneit:dynIncluded>
<%
String nextPage = WebUtils.getArticleByShortCut(process.getTransaction(), WebUtils.ADMIN_HOME).getLink(request);
Company company = (Company) process.getAttribute("Company");
Debug.assertion(company != null, "Invalid company user in admin portal");
CompanyUser companyUser = company.getAddedByUser();
SecUser secUser = companyUser.getUser();
Integer pageNumber = 2;
%>
<script type="text/javascript">
function addUser() {
var divID = "#usersSection";
ajaxProcessAddJQ ("<%= request.getContextPath() %>/extensions/adminportal/inc/invite_user_add.jsp", divID, {newuser: "true"}, function (theHTML_JQ) {
$(divID).append (theHTML_JQ);
});
}
function deleteUser(deleteVarKey) {
ajaxProcessDeleteJQ("<%= request.getContextPath() %>/genericDelete_AJAX.jsp", "#usersSection" , { varKey: deleteVarKey });
return false;
}
</script>
<div class="hire-the-right-candi" style="height: 77px">You're nearly there...</div>
<oneit:form name="companyProfile" method="post" enctype="multipart/form-data">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="section-tab-view">
<div class="main-tab-form">
<ul class="nav nav-pills nav-justified">
<li class="complate">
<a href="#">
<span>
<img src="images/right-mark.svg"/>
</span>
<div>Company Profile</div>
</a>
</li>
<li class="active">
<a href="#">
<span>2</span>
<div>Invite Users</div>
</a>
</li>
<li class="">
<a href="#">
<span>3</span>
<div>Create a Job</div>
</a>
</li>
</ul>
</div>
<div class="section-page-area" style="text-align: left">
<div class="main-sc-section">
<div class="form-group">
<div id="usersSection">
<%
for (CompanyUser cUser : company.getUsersSet())
{
if(!CollectionUtils.equals(cUser, companyUser))
{
%>
<oneit:dynInclude page="/extensions/adminportal/inc/invite_user_add.jsp"
CompanyUser="<%= cUser %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
<%
}
}
%>
</div>
</div>
</div>
<div class="main-sc-section main-add-more content-to-center">
<oneit:button value="Add Another" name="newUser" cssClass="add-more-btn" skin="link"
onClick="<%="addUser(); return false;"%>"
requestAttribs="<%= CollectionUtils.EMPTY_MAP %>"/>
</div>
<div class="selection-br-line"></div>
<div class="main-sc-section form-group content-to-center">
<oneit:button value="Send invites & proceed" name="sendCompanyUserInvites" cssClass="box-btn send-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Company", company).toMap())
.toMap() %>"/>
</div>
</div>
</div>
</oneit:form>
</oneit:dynIncluded>
<%@ include file="inc/htmlfooter_nopriv.jsp" %>
\ No newline at end of file
cmsWebApp/webroot/extensions/adminportal/invite_users.jsp.jsp
deleted
100644 → 0
View file @
2373afbf
<%@ page extends="oneit.servlets.jsp.JSPInclude" %>
<%@ include file="/inc/stdimports50.jsp" %><%-- This is in cougar --%>
<%@ include file="/inc/stdcms.jsp" %><%-- This is in cougar --%>
<oneit:dynIncluded>
</oneit:dynIncluded>
cmsWebApp/webroot/extensions/adminportal/upgrades/20170907_InvitationEmailTemplate.cms.xml
0 → 100644
View file @
34dfe523
<?xml version="1.0" encoding="UTF-8"?>
<OBJECTS
xmlns:oneit=
"http://www.1iT.com.au"
name=
""
>
<NODE
factory=
"Vector"
name=
"Script"
><NODE
class=
"oneit.appservices.upgrade.cms.CMSArticleUpdateOperation"
factory=
"Participant"
name=
"Invitation Mail"
>
<createSpecificIdentifier
factory=
'String'
value=
'UDQKBSOIBW9O2ET72SI93FJJ6SUWF3'
/>
<articleIdentifiers
factory=
"Array"
class=
"java.lang.String"
>
<NODE
factory=
"String"
value=
"UDQKBSOIBW9O2ET72SI93FJJ6SUWF3"
/>
</articleIdentifiers>
<createdLabel
factory=
"String"
value=
"UDQKBSOIBW9O2ET72SI93FJJ6SUWF3"
/>
<newParentCategory
factory=
"String"
value=
"RESOURCE_LIBRARY"
/>
<articleAttributeChanges
factory=
"Map"
>
<NODE
name=
"EmailTo"
factory=
"Null"
/>
<NODE
name=
"EmailFrom"
factory=
"String"
value=
"info@talentology.com.au"
/>
<NODE
name=
"EmailSubject"
factory=
"String"
value=
"Invitation to join Talentology"
/>
<NODE
name=
"Shortcuts"
factory=
"String"
value=
"InvitationMail"
/>
<NODE
name=
"EmailCC"
factory=
"Null"
/>
<NODE
name=
"EmailBCC"
factory=
"Null"
/>
</articleAttributeChanges>
<ormAttributeChanges
factory=
"Map"
>
<NODE
name=
"PublishDate"
factory=
"Date"
value=
"2016-02-05 00:00:00"
/>
<NODE
name=
"WithdrawDate"
factory=
"Date"
value=
"2066-02-05 16:00:00"
/>
<NODE
name=
"Title"
factory=
"String"
value=
"Invitation Mail"
/>
<NODE
name=
"ShortTitle"
factory=
"String"
value=
"Reset Code Email"
/>
<NODE
name=
"SortOrder"
factory=
"Integer"
value=
"-200926"
/>
<NODE
name=
"Type"
factory=
"Enumerated"
class=
"oneit.business.content.ArticleType"
value=
"ARTICLE"
/>
<NODE
name=
"Template"
factory=
"Enumerated"
class=
"oneit.business.content.ArticleTemplate"
value=
"EMAIL_TEMPLATE"
/>
</ormAttributeChanges>
<content
factory=
"Map"
>
<NODE
name=
"EmailBody"
factory=
"Map"
>
<NODE
name=
"Content"
factory=
"String"
>
<![CDATA[<html>
<head>
<META
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<meta
content=
"HTML Tidy, see www.w3.org"
name=
"generator"
>
<title></title>
</head>
<body>
<p>
<strong>
Join Talentology
</strong>
</p>
<p>
You are invited to join Talentology. To accept this invitation,
<a
href=
"${link}"
>
click here
</a>
.
</p>
</body>
</html>
]]>
</NODE>
<NODE
name=
"TransformedContent"
factory=
"String"
>
<![CDATA[<p>
<strong>
Join Talentology
</strong>
</p><p>
You are invited to join Talentology. To accept this invitation,
<a
href=
"${link}"
>
click here
</a>
.
</p>
]]>
</NODE>
<NODE
name=
"IncludeContent"
factory=
"Boolean"
value=
"true"
/>
</NODE>
<NODE
name=
""
factory=
"Map"
>
<NODE
name=
"Content"
factory=
"String"
>
<![CDATA[
<p>
</p>
]]>
</NODE>
<NODE
name=
"IncludeContent"
factory=
"Boolean"
value=
"true"
/>
</NODE>
</content>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
cmsWebApp/webroot/extensions/adminportal/verify_company.jsp
View file @
34dfe523
...
...
@@ -7,7 +7,7 @@
<oneit:dynIncluded>
<%
String nextPage =
"extensions/adminportal/company_profile.jsp"
;
String nextPage =
WebUtils.getSamePageInRenderMode(request, "CompanyProfile")
;
CompanyUser companyUser = (CompanyUser) process.getAttribute("CompanyUser");
SecUser secUser = null;
...
...
@@ -92,4 +92,6 @@
.mapEntry("nextPage", nextPage).toMap() %>"/>
</div>
</oneit:form>
</oneit:dynIncluded>
\ No newline at end of file
</oneit:dynIncluded>
<%@ include file="inc/htmlfooter_nopriv.jsp" %>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment