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
0f997969
Commit
0f997969
authored
Sep 20, 2017
by
chenith
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
LinkedIn login for applicant portal.
parent
b46f18a0
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
200 additions
and
3 deletions
+200
-3
LinkedInOAuthLoginFP.java
cmsWebApp/src/performa/form/LinkedInOAuthLoginFP.java
+49
-0
LinkedInOAuthLoginHandler.java
cmsWebApp/src/performa/form/LinkedInOAuthLoginHandler.java
+143
-0
CustomServlets_adminPortal.xml
...oot/extensions/adminportal/CustomServlets_adminPortal.xml
+2
-2
CustomServlets_applicantPortal.xml
...nsions/applicantportal/CustomServlets_applicantPortal.xml
+1
-1
20170920_Add_LinkedInProperties.txt
...ons/performa/upgrades/20170920_Add_LinkedInProperties.txt
+5
-0
No files found.
cmsWebApp/src/performa/form/LinkedInOAuthLoginFP.java
0 → 100644
View file @
0f997969
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package
performa
.
form
;
import
javax.servlet.http.HttpServletRequest
;
import
oneit.appservices.config.ConfigMgr
;
import
oneit.security.oauth.form.BaseOAuthLoginFP
;
import
oneit.servlets.forms.*
;
import
oneit.utils.CollectionUtils
;
/**
*
* @author Pradip Sabhadiya
*/
public
class
LinkedInOAuthLoginFP
extends
BaseOAuthLoginFP
{
public
static
final
String
LINKEDIN_CLIENTID_ATTR_NAME
=
"linkedin.clientId"
;
public
static
final
String
LINKEDIN_CLIENTSECRET_ATTR_NAME
=
"linkedin.clientSecret"
;
public
static
final
String
LINKEDIN_APP_OAUTH_URL
=
"https://www.linkedin.com/oauth/v2/authorization"
;
public
static
final
String
LINKEDIN_ACCESS_TOKEN_URL
=
"https://www.linkedin.com/oauth/v2/accessToken"
;
public
static
final
String
LINKEDIN_PROFILE_FROM_TOKEN_URL
=
"https://api.linkedin.com/v1/people/~"
;
@Override
public
String
getOAuthLoginURL
(
SubmissionDetails
submission
,
String
token
)
{
String
appId
=
ConfigMgr
.
getKeyfileString
(
LINKEDIN_CLIENTID_ATTR_NAME
);
String
callbackURL
=
getCallbackURL
(
submission
.
getRequest
());
return
LINKEDIN_APP_OAUTH_URL
+
HTTPRequestDetails
.
getParamStringURL
(
CollectionUtils
.
mapEntry
(
"client_id"
,
appId
)
.
mapEntry
(
"redirect_uri"
,
callbackURL
)
.
mapEntry
(
"scope"
,
"r_basicprofile"
)
.
mapEntry
(
"response_type"
,
"code"
)
.
mapEntry
(
"state"
,
token
).
toMap
());
}
public
static
String
getCallbackURL
(
HttpServletRequest
request
)
{
String
urlFirstBit
=
request
.
getScheme
()
+
"://"
+
request
.
getServerName
()
+
":"
+
request
.
getServerPort
();
return
HTTPRequestDetails
.
getFullURL
(
urlFirstBit
+
request
.
getContextPath
()
+
"/linkedinCallback"
,
new
String
[
0
]);
}
}
cmsWebApp/src/performa/form/LinkedInOAuthLoginHandler.java
0 → 100644
View file @
0f997969
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package
performa
.
form
;
import
java.io.*
;
import
java.net.*
;
import
javax.servlet.http.HttpServletRequest
;
import
oneit.appservices.config.ConfigMgr
;
import
oneit.components.ParticipantInitialisationContext
;
import
oneit.logging.*
;
import
oneit.security.oauth.decorator.OAuthCallbackDecorator
;
import
oneit.security.oauth.utils.BaseOAuthLoginHandler
;
import
oneit.servlets.forms.HTTPRequestDetails
;
import
oneit.utils.*
;
import
org.json.*
;
/**
*
* @author Pradip Sabhadiya
*/
public
class
LinkedInOAuthLoginHandler
extends
BaseOAuthLoginHandler
{
protected
static
final
LoggingArea
LOG
=
LoggingArea
.
createLoggingArea
(
"BaseOAuthLoginHandler"
);
@Override
public
void
validateRequest
(
HttpServletRequest
request
)
{
LogMgr
.
log
(
LOG
,
LogLevel
.
DEBUG3
,
"Validation LinkedIn callback request"
);
String
state
=
request
.
getParameter
(
"state"
);
String
token
=
(
String
)
request
.
getSession
().
getAttribute
(
OAuthCallbackDecorator
.
TOKEN_ATTRIB_NAME
);
Debug
.
assertion
(
CollectionUtils
.
equals
(
state
,
token
),
"Unothorized access to callback url."
);
}
@Override
public
OAuthLoginInfo
getProfileInfo
(
HttpServletRequest
request
)
throws
Exception
{
LogMgr
.
log
(
LOG
,
LogLevel
.
DEBUG3
,
"Getting profile data from callback"
);
String
accessToken
=
getAccessToken
(
request
);
try
{
String
profileURL
=
LinkedInOAuthLoginFP
.
LINKEDIN_PROFILE_FROM_TOKEN_URL
+
HTTPRequestDetails
.
getParamStringURL
(
CollectionUtils
.
mapEntry
(
"oauth2_access_token"
,
accessToken
).
mapEntry
(
"format"
,
"json"
).
toMap
());
JSONObject
json
=
executeURL
(
profileURL
);
LogMgr
.
log
(
LOG
,
LogLevel
.
PROCESSING1
,
"Profile Data found "
,
json
);
OAuthLoginInfo
loginInfo
=
new
OAuthLoginInfo
();
loginInfo
.
setId
(
json
.
getString
(
"id"
));
loginInfo
.
setFirstName
(
json
.
getString
(
"firstName"
));
if
(
json
.
has
(
"email"
))
{
loginInfo
.
setEmail
(
json
.
getString
(
"email"
));
}
if
(
json
.
has
(
"lastName"
))
{
loginInfo
.
setLastName
(
json
.
getString
(
"lastName"
));
}
return
loginInfo
;
}
catch
(
Exception
e
)
{
LogMgr
.
log
(
LOG
,
LogLevel
.
SYSTEMERROR1
,
"Exception occured in getProfileInfo"
);
throw
new
NestedException
(
e
,
"ERROR while getting user data."
);
}
}
public
String
getAccessToken
(
HttpServletRequest
request
)
throws
Exception
{
String
code
=
request
.
getParameter
(
"code"
);
String
appId
=
ConfigMgr
.
getKeyfileString
(
LinkedInOAuthLoginFP
.
LINKEDIN_CLIENTID_ATTR_NAME
);
String
appSecret
=
ConfigMgr
.
getKeyfileString
(
LinkedInOAuthLoginFP
.
LINKEDIN_CLIENTSECRET_ATTR_NAME
);
String
callbackURL
=
LinkedInOAuthLoginFP
.
getCallbackURL
(
request
);
@SuppressWarnings
(
"unchecked"
)
String
accessTokenURL
=
LinkedInOAuthLoginFP
.
LINKEDIN_ACCESS_TOKEN_URL
+
HTTPRequestDetails
.
getParamStringURL
(
CollectionUtils
.
mapEntry
(
"grant_type"
,
"authorization_code"
)
.
mapEntry
(
"code"
,
code
)
.
mapEntry
(
"redirect_uri"
,
callbackURL
)
.
mapEntry
(
"client_id"
,
appId
)
.
mapEntry
(
"client_secret"
,
appSecret
).
toMap
());
JSONObject
data
=
executeURL
(
accessTokenURL
,
"POST"
);
if
(!
data
.
has
(
"access_token"
))
{
throw
new
RuntimeException
(
"ERROR: Access Token Invalid: "
+
data
);
}
return
data
.
getString
(
"access_token"
);
}
public
void
init
(
ParticipantInitialisationContext
context
)
throws
InitialisationException
{
context
.
setObject
(
this
);
}
public
static
JSONObject
executeURL
(
String
urlString
)
{
return
executeURL
(
urlString
,
null
);
}
public
static
JSONObject
executeURL
(
String
urlString
,
String
method
)
{
LogMgr
.
log
(
LoggingArea
.
ALL
,
LogLevel
.
DEBUG3
,
"Executing url "
,
urlString
);
try
{
URL
url
=
new
URL
(
urlString
);
URLConnection
urlConnection
=
url
.
openConnection
();
if
(
StringUtils
.
subBlanks
(
method
)
!=
null
&&
method
.
toUpperCase
().
equals
(
"POST"
))
{
urlConnection
.
setDoOutput
(
true
);
}
BufferedReader
in
=
new
BufferedReader
(
new
InputStreamReader
(
urlConnection
.
getInputStream
()));
return
new
JSONObject
(
IOUtils
.
readerToString
(
in
));
}
catch
(
IOException
e
)
{
LogMgr
.
log
(
LoggingArea
.
ALL
,
LogLevel
.
SYSTEMERROR1
,
"Error in Executing url "
,
urlString
,
e
);
throw
new
NestedException
(
e
);
}
catch
(
JSONException
je
)
{
LogMgr
.
log
(
LoggingArea
.
ALL
,
LogLevel
.
SYSTEMERROR1
,
"Error in Parsing Json Data"
,
urlString
,
je
);
throw
new
NestedException
(
je
);
}
}
}
cmsWebApp/webroot/extensions/adminportal/CustomServlets_adminPortal.xml
View file @
0f997969
...
@@ -124,10 +124,10 @@
...
@@ -124,10 +124,10 @@
<NODE
name=
"helper"
factory=
"Named"
nodename=
"SetupUserHelper"
/>
<NODE
name=
"helper"
factory=
"Named"
nodename=
"SetupUserHelper"
/>
<NODE
name=
"serviceName"
factory=
"String"
value=
"GOOGLE"
/>
<NODE
name=
"serviceName"
factory=
"String"
value=
"GOOGLE"
/>
</Handler>
</Handler>
<!--
<Handler name="/linkedinCallback" factory="Participant" class="performa.form.LinkedInOAuthLoginHandler">
<Handler
name=
"/linkedinCallback"
factory=
"Participant"
class=
"performa.form.LinkedInOAuthLoginHandler"
>
<NODE
name=
"helper"
factory=
"Named"
nodename=
"SetupUserHelper"
/>
<NODE
name=
"helper"
factory=
"Named"
nodename=
"SetupUserHelper"
/>
<NODE
name=
"serviceName"
factory=
"String"
value=
"LINKEDIN"
/>
<NODE
name=
"serviceName"
factory=
"String"
value=
"LINKEDIN"
/>
</Handler>
-->
</Handler>
</DECORATOR>
</DECORATOR>
</NODE>
</NODE>
...
...
cmsWebApp/webroot/extensions/applicantportal/CustomServlets_applicantPortal.xml
View file @
0f997969
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
</FORM>
</FORM>
<FORM
name=
"*.facebookOAuthLogin"
factory=
"Participant"
class=
"oneit.security.oauth.form.FacebookOAuthLoginFP"
/>
<FORM
name=
"*.facebookOAuthLogin"
factory=
"Participant"
class=
"oneit.security.oauth.form.FacebookOAuthLoginFP"
/>
<FORM
name=
"*.googleOAuthLogin"
factory=
"Participant"
class=
"oneit.security.oauth.form.GoogleOAuthLoginFP"
/>
<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"
/
>
<FORM
name=
"*.forgotPassword"
factory=
"Participant"
class=
"performa.form.ForgotPasswordFP"
>
<FORM
name=
"*.forgotPassword"
factory=
"Participant"
class=
"performa.form.ForgotPasswordFP"
>
<ResetCodeEmailer
factory=
"Participant"
class=
"oneit.email.ConfigurableArticleTemplateEmailer"
templateShortcut=
"ResetCodeEmail"
/>
<ResetCodeEmailer
factory=
"Participant"
class=
"oneit.email.ConfigurableArticleTemplateEmailer"
templateShortcut=
"ResetCodeEmail"
/>
</FORM>
</FORM>
...
...
cmsWebApp/webroot/extensions/performa/upgrades/20170920_Add_LinkedInProperties.txt
0 → 100644
View file @
0f997969
Add followings to keyfile.properties
linkedin.clientId=81eohoovrfda10
linkedin.clientSecret=jXDHcrXYDirPygCf
\ 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