Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

4.8.0 mar23 rel v2 #145

Open
wants to merge 69 commits into
base: 4.8.0-apr-23-v1
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
224a1c4
Setting different values for sameSite attribute in Cookie
karthik-tarento Mar 13, 2023
8214215
Using secure and sameSite attributes in Cookie
karthik-tarento Mar 13, 2023
1a9dea6
Using secure and sameSite attributes in Cookie
karthik-tarento Mar 13, 2023
0cc8095
Removed secure and sameSite attribute from Cookie
karthik-tarento Mar 13, 2023
61ba537
Fix for build error
karthik-tarento Mar 13, 2023
577c89b
Added debug logs
karthik-tarento Mar 13, 2023
cb86b12
Using secure and sameSite attributes in Cookie
karthik-tarento Mar 14, 2023
b96a3fe
Using different value for SameSite attribute in cookie
karthik-tarento Mar 14, 2023
9a2578d
Using different value for SameSite attribute in cookie
karthik-tarento Mar 14, 2023
90df6b2
Removed secure flag and using SameSite in Cookie
karthik-tarento Mar 14, 2023
6440ee9
Using lax for sameSite
karthik-tarento Mar 14, 2023
0dfeb95
Using only secure flag in cookie
karthik-tarento Mar 14, 2023
10c9790
Using only sameSite flag in cookie
karthik-tarento Mar 14, 2023
451ef9d
add collectiveAggregation whitelist properties (#138)
ManthanSharma94 Mar 15, 2023
db75351
4.8.0 mar23 rel v2 (#139)
ManthanSharma94 Mar 15, 2023
5fe6da8
Updated log
karthik-tarento Mar 16, 2023
5482a94
Merge branch '4.8.0-mar23Rel-v2' of https://github.com/sunbird-cb/sun…
karthik-tarento Mar 16, 2023
30fa73d
adding x-forward-proto header to incoming request
karthik-tarento Mar 23, 2023
7c0abcf
added secure flag to cookie
karthik-tarento Mar 23, 2023
fa0fe3a
added secure flag to cookie
karthik-tarento Mar 23, 2023
8153679
removed secure flag from cookie
karthik-tarento Mar 24, 2023
8411516
added secure flag from cookie
karthik-tarento Mar 24, 2023
b1f1162
enabled google for testing
karthik-tarento Mar 24, 2023
c085b5e
Updated docker to do npm install
karthik-tarento Mar 24, 2023
c639cfd
Removed secure flag
karthik-tarento Mar 29, 2023
8b6f59e
Added secure flag and removed google apis
karthik-tarento Mar 29, 2023
3bcec8f
Updated logs
karthik-tarento Mar 29, 2023
cc43610
Updated logs
karthik-tarento Mar 29, 2023
0d031e7
Added logs in keycloak-connect and using the same
karthik-tarento Mar 30, 2023
3fad79b
Removed secure flag from cookie
karthik-tarento Mar 30, 2023
3253d46
Using updated keycloak-connect lib
karthik-tarento Mar 30, 2023
b5da0cf
Proxy api for master Data (#141)
Manas-tarento Mar 30, 2023
8fb30dc
updated changes
Manas-tarento Mar 30, 2023
fe2a56b
Updating cookie after keycloak auth
karthik-tarento Mar 30, 2023
e870a57
Updating cookie after keycloak auth
karthik-tarento Mar 30, 2023
e6859b5
Merge branch '4.8.0-mar23Rel-v2' of https://github.com/sunbird-cb/sun…
karthik-tarento Mar 30, 2023
efb3c0a
Setting cookie after keycloak authentication
karthik-tarento Mar 30, 2023
fb6e5b9
Merge pull request #142 from Manas-tarento/4.8.0-mar23Rel-v2
christyfernandes Mar 30, 2023
99310c3
Updated set-cookie in response
karthik-tarento Mar 30, 2023
116a022
Merge branch '4.8.0-mar23Rel-v2' of https://github.com/sunbird-cb/sun…
karthik-tarento Mar 30, 2023
bd6beb7
Check headers before assigning value
karthik-tarento Mar 30, 2023
2c1f5c7
Set secure flag in cookie
karthik-tarento Mar 30, 2023
1623d44
Removed secure from cookie
karthik-tarento Mar 30, 2023
072d294
Added httpOnly flag in Cookie
karthik-tarento Mar 30, 2023
df1dc61
Added httpOnly flag in Cookie
karthik-tarento Mar 30, 2023
d6bc112
Added Master Data Upsert API to whitelist
juhiagl8 Mar 31, 2023
28f9c20
Merge pull request #143 from juhiagl8/patch-11
Haritest Mar 31, 2023
742b21b
Update proxies_v8.ts
juhiagl8 Mar 31, 2023
4a88fa1
Merge pull request #144 from juhiagl8/patch-12
Haritest Mar 31, 2023
cff28a6
Added logs when fetching resource
karthik-tarento Apr 3, 2023
0b259d5
Merge branch '4.8.0-mar23Rel-v2' of https://github.com/sunbird-cb/sun…
karthik-tarento Apr 3, 2023
5b045f4
Added logs and disabled httpOnly for testing
karthik-tarento Apr 3, 2023
5ee76bb
Added logs to read cookie value
karthik-tarento Apr 3, 2023
8a4f632
Trying to update cookie in response after login
karthik-tarento Apr 3, 2023
4105e7b
Fixed typo while set cookie
karthik-tarento Apr 3, 2023
71aa6e8
Fixed typo while set cookie
karthik-tarento Apr 3, 2023
d4f5e96
Trying to update cookie in response after login
karthik-tarento Apr 3, 2023
c866284
Setting sameSite value in cookie
karthik-tarento Apr 3, 2023
032701c
Merge branch '4.8.0-apr-23-v1' into 4.8.0-mar23Rel-v2
karthik-tarento Apr 3, 2023
74babbe
Removed unnecessary modifications and logs w.r.t. secure flag
karthik-tarento Apr 3, 2023
f203591
Merge branch '4.8.0-mar23Rel-v2' of https://github.com/sunbird-cb/sun…
karthik-tarento Apr 3, 2023
66fea84
Updated express sid cookie with secure flags
karthik-tarento Apr 3, 2023
a8a0144
Updated express sid cookie with secure flags
karthik-tarento Apr 3, 2023
96ba25f
Added secure and sameSite flags in cookie
karthik-tarento Apr 3, 2023
ed1c3ed
Removed setCookie which sets express sid
karthik-tarento Apr 3, 2023
2f85632
Removed setCookie which sets express sid
karthik-tarento Apr 3, 2023
08f8f47
Merge pull request #146 from sunbird-cb/4.8.0-secureFlag
karthik-tarento Apr 3, 2023
6e56b38
Merge branch '4.8.0-apr-23-v2' into 4.8.0-mar23Rel-v2
karthik-tarento Apr 4, 2023
0e02495
Fixed merge errors and unnecessary changes
karthik-tarento Apr 4, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion src/protectedApi_v8/resource.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,22 @@
import { Router } from 'express'
import { CONSTANTS } from '../utils/env'
import { logInfo } from '../utils/logger'
const _ = require('lodash')
export const userAuthKeyCloakApi = Router()
userAuthKeyCloakApi.get('/', (req, res) => {
const host = req.get('host')
let queryParam = ''
let isLocal = 0
logInfo('Received query param: ' + req.query)
logInfo('Received query param: ' + JSON.stringify(req.query))
if (req.session && req.session.authenticated ) {
logInfo('User is authenticated.. Updating Cookie with Secure and SameSite flags')
res.cookie('connect.sid', req.cookies['connect.sid'], {
httpOnly: true,
maxAge: CONSTANTS.KEYCLOAK_SESSION_TTL,
sameSite: 'None',
secure: true,
})
}
if (!_.isEmpty(req.query)) {
queryParam = req.query.q
if (queryParam && queryParam.includes('localhost')) {
Expand Down
193 changes: 41 additions & 152 deletions src/protectedApi_v8/user/profile-registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@ import { logError, logInfo } from '../../utils/logger'
import { extractAuthorizationFromRequest,
extractUserIdFromRequest,
IAuthorizedRequest } from '../../utils/requestExtract'
const fs = require('fs')

const API_END_POINTS = {
createUserRegistry: (userId: string) => `${CONSTANTS.NETWORK_HUB_SERVICE_BACKEND}/v1/user/create/profile?userId=${userId}`,
getAllPosition: `${CONSTANTS.FRAC_API_BASE}/frac/getAllNodes?type=POSITION&status=VERIFIED`,
getUserRegistry: `${CONSTANTS.NETWORK_HUB_SERVICE_BACKEND}/v1/user/get/profile`,
getUserRegistryById: (userId: string) => `${CONSTANTS.NETWORK_HUB_SERVICE_BACKEND}/v1/user/search/profile?userId=${userId}`,
masterLanguages: `${CONSTANTS.KONG_API_BASE}/masterData/v1/languages`,
masterNationalities: `${CONSTANTS.KONG_API_BASE}/masterData/v1/nationalities`,
profilePageMetaData: `${CONSTANTS.KONG_API_BASE}/masterData/v1/profilePageMetaData`,
searchUserRegistry: `${CONSTANTS.NETWORK_HUB_SERVICE_BACKEND}/v1/user/search/profile`,
updateUserRegistry: (userId: string) => `${CONSTANTS.NETWORK_HUB_SERVICE_BACKEND}/v1/user/update/profile?userId=${userId}`,
updateUserWorkflowRegistry: (userId: string) =>
Expand All @@ -25,6 +27,8 @@ const profileStatusCheckConfig = {
}

const ERROR_MESSAGE_CREATE_REGISTRY = 'ERROR CREATING USER REGISTRY >'
const CONNECTION_ERROR = 'CONNECTIONS REQUESTS ERROR> '
const unknown = 'Connections Apis:- Failed due to unknown reason'

export const profileRegistryApi = Router()

Expand Down Expand Up @@ -152,176 +156,61 @@ profileRegistryApi.get('/getUserRegistryByUser/:id', async (req, res) => {

profileRegistryApi.get('/getMasterNationalities', async (_req, res) => {
try {
// tslint:disable-next-line: no-identical-functions
fs.readFile(__dirname + '/../../static-data/nationality.json', (err: Error, json: string) => {
if (!err) {
const obj = JSON.parse(json)
res.json(obj)
}
const response = await axios.get(API_END_POINTS.masterNationalities, {
...axiosRequestConfig,
headers: {
Authorization: CONSTANTS.SB_API_KEY,
},
})
res.send((response.data))
} catch (err) {
res.status((err && err.response && err.response.status) || 500).send(err)
logError(CONNECTION_ERROR, err)
res.status((err && err.response && err.response.status) || 500).send(
(err && err.response && err.response.data) || {
error: unknown,
}
)
}
})

profileRegistryApi.get('/getMasterLanguages', async (_req, res) => {
try {
fs.readFile(__dirname + '/../../static-data/languages.json', (err: Error, json: string) => {
if (!err) {
const obj = JSON.parse(json)
res.json({
languages: obj.languages.map((item: string) => {
return { name: item }
}),
})
}
const response = await axios.get(API_END_POINTS.masterLanguages, {
...axiosRequestConfig,
headers: {
Authorization: CONSTANTS.SB_API_KEY,
},
})
res.send((response.data))
} catch (err) {
res.status((err && err.response && err.response.status) || 500).send(err)
logError(CONNECTION_ERROR, err)
res.status((err && err.response && err.response.status) || 500).send(
(err && err.response && err.response.data) || {
error: unknown,
}
)
}
})

profileRegistryApi.get('/getProfilePageMeta', async (_req, res) => {
try {
const govtOrg = await govtOrgMeta()
.catch((err) => {
logError(`error fetching govtOrgMeta`, err)
})
const industries = await industreisMeta()
.catch((err) => {
logError(`error fetching industreisMeta`, err)
})
const degrees = await degreesMeta()
.catch((err) => {
logError(`error fetching degreesMeta`, err)
})
let designations = Object.create({})
designations = await designationMeta()
.catch((err) => {
logError(`error fetching designationMeta`, err)
})
designations.designations = await designationMetaFrac(_req)
.catch((err) => {
logError('error fetching desingations from FRAC', err)
})
res.json({
degrees,
designations,
govtOrg,
industries,
const response = await axios.get(API_END_POINTS.profilePageMetaData, {
...axiosRequestConfig,
headers: {
Authorization: CONSTANTS.SB_API_KEY,
},
})
res.send((response.data))
} catch (err) {
res.status((err && err.response && err.response.status) || 500).send(err)
logError(CONNECTION_ERROR, err)
res.status((err && err.response && err.response.status) || 500).send(
(err && err.response && err.response.data) || {
error: unknown,
}
)
}
})

export async function govtOrgMeta() {
return new Promise(async (resolve, reject) => {
try {
await fs.readFile(__dirname + '/../../static-data/govtOrg.json', (err: Error, json: string) => {
if (!err) {
const obj = JSON.parse(json)
const result = {
cadre: obj.cadre.map((item: string) => {
return { name: item }
}),
ministries: obj.ministries.map((item: string) => {
return { name: item }
}),
service: obj.services.map((item: string) => {
return { name: item }
}),
}
resolve(result)
} else {
reject(err)

}
})
} catch (err) {
logError('ERROR on govtOrgMeta')
throw err
}
})
}

export async function industreisMeta() {
return new Promise(async (resolve, reject) => {
try {
await fs.readFile(__dirname + '/../../static-data/industries.json', (err: Error, json: string) => {
if (!err) {
const obj = JSON.parse(json)
resolve(
obj.industries.map((item: string) => {
return { name: item }
})
)
} else {
reject(err)

}
})
} catch (err) {
logError('ERROR on industreisMeta')
throw err
}
})
}

export async function degreesMeta() {
return new Promise(async (resolve, reject) => {
try {
await fs.readFile(__dirname + '/../../static-data/degrees.json', (err: Error, json: string) => {
if (!err) {
const obj = JSON.parse(json)
const result = {
graduations: obj.graduations.map((item: string) => {
return { name: item }
}),
postGraduations: obj.postGraduations.map((item: string) => {
return { name: item }
}),
}
resolve(result)
} else {
reject(err)

}
})
} catch (err) {
logError('ERROR on degreesMeta')
throw err
}
})
}

export async function designationMeta() {
return new Promise(async (resolve, reject) => {
try {
await fs.readFile(__dirname + '/../../static-data/designation.json', (err: Error, json: string) => {
if (!err) {
const obj = JSON.parse(json)
const result = {
designations: obj.designations.map((item: string) => {
return { name: item }
}),
gradePay: obj.gradePay.map((item: string) => {
return { name: item }
}),
}
resolve(result)
} else {
reject(err)

}
})
} catch (err) {
logError('ERROR on designationMeta')
throw err
}
})
}

profileRegistryApi.post('/createUserRegistryV2/:userId', async (req, res) => {
try {
const userId = req.params.userId
Expand Down
4 changes: 4 additions & 0 deletions src/proxies_v8/proxies_v8.ts
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,10 @@ proxiesV8.use('/forms/*',
proxyCreatorSunbird(express.Router(), `${CONSTANTS.KONG_API_BASE}`)
)

proxiesV8.use('/masterData/*',
proxyCreatorSunbird(express.Router(), `${CONSTANTS.KONG_API_BASE}`)
)

// proxiesV8.use('/api/framework/*',
// // tslint:disable-next-line: max-line-length
// proxyCreatorQML(express.Router(), `${CONSTANTS.KONG_API_BASE}`, '/api/')
Expand Down
4 changes: 2 additions & 2 deletions src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,6 @@ export class Server {
const rootOrg = req.headers ? req.headers.rootOrg || req.headers.rootorg : ''
if (rootOrg && req.hostname.toLowerCase().includes('localhost')) {
res.cookie('rootorg', rootOrg)
res.cookie('secure', true)
res.cookie('sameSite', 'Lax')
}
next()
})
Expand Down Expand Up @@ -113,6 +111,8 @@ export class Server {
)
// TODO: See what needs to be logged
this.app.use((req, _, next) => {
logInfo('adding x-forward-proto header with https to request...')
req.headers['x-forwarded-proto'] = 'https'
logInfo(`Server:ConfigureMiddleWare:: Worker ${process.pid} : ${req.protocol}://${req.hostname}/${req.url}`)
next()
})
Expand Down
1 change: 1 addition & 0 deletions src/utils/custom-keycloak.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ export class CustomKeycloak {
// tslint:disable-next-line: no-any
authenticated = (reqObj: any, next: any) => {
logInfo('Step 3: authenticated function', '------', new Date().toString())
reqObj.session.authenticated = true
try {
const userId = reqObj.kauth.grant.access_token.content.sub.split(':')
reqObj.session.userId = userId[userId.length - 1]
Expand Down
20 changes: 18 additions & 2 deletions src/utils/whitelistApis.ts
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,13 @@ export const API_LIST = {
ROLE.PUBLIC,
],
},
'/proxies/v8/forms/getCollectiveAggregation': {
checksNeeded: [CHECK.ROLE],
// tslint:disable-next-line: object-literal-sort-keys
ROLE_CHECK: [
ROLE.PUBLIC,
],
},
'/proxies/v8/forms/getAllForms': {
checksNeeded: [CHECK.ROLE],
// tslint:disable-next-line: object-literal-sort-keys
Expand Down Expand Up @@ -2006,14 +2013,21 @@ export const API_LIST = {
ROLE.MDO_ADMIN,
],
},
'/proxies/v8/user/offensive/data/flag': {
'/proxies/v8/user/offensive/data/flag': {
checksNeeded: [CHECK.ROLE],
// tslint:disable-next-line: object-literal-sort-keys
ROLE_CHECK: [
ROLE.PUBLIC,
],
},
'/proxies/v8/user/offensive/data/flag/getFlaggedData': {
checksNeeded: [CHECK.ROLE],
// tslint:disable-next-line: object-literal-sort-keys
ROLE_CHECK: [
ROLE.PUBLIC,
],
},
'/proxies/v8/user/offensive/data/flag/getFlaggedData': {
'/proxies/v8/masterData/v1/upsert': {
checksNeeded: [CHECK.ROLE],
// tslint:disable-next-line: object-literal-sort-keys
ROLE_CHECK: [
Expand Down Expand Up @@ -2111,6 +2125,7 @@ export const API_LIST = {
'/proxies/v8/wat/dashboard/getDashboardConfig/Karmayogi/overview',
'/proxies/v8/forms/createForm',
'/proxies/v8/forms/getFormById',
'/proxies/v8/forms/getCollectiveAggregation',
'/proxies/v8/forms/getAllForms',
'/proxies/v8/forms/v1/saveFormSubmit',
'/proxies/v8/forms/getAllApplications',
Expand Down Expand Up @@ -2289,5 +2304,6 @@ export const API_LIST = {
'/proxies/v8/mdo/content/v3/batch/removeUser',
'/proxies/v8/user/offensive/data/flag',
'/proxies/v8/user/offensive/data/flag/getFlaggedData',
'/proxies/v8/masterData/v1/upsert',
],
}