Skip to content
2 changes: 1 addition & 1 deletion src/protectedApi_v8/user/profile-details.ts
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@ profileDeatailsApi.post('/createUser', async (req, res) => {
meetingLink: CONSTANTS.NINE_TO_FIVE_MEETING_LINK,
mode: 'email',
orgName: sbChannel,
profileUpdateLink: CONSTANTS.HTTPS_HOST +'/app/user-profile/details',
profileUpdateLink: CONSTANTS.HTTPS_HOST + '/app/user-profile/details',
recipientEmails: [ sbemail_ ],
setPasswordLink: true,
signinLink: CONSTANTS.HTTPS_HOST + '/protected/v8/resource',
Expand Down
3 changes: 2 additions & 1 deletion src/publicApi_v8/keycloakHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export function getKeyCloakClient() {

// tslint:disable-next-line: no-any
const deauthenticated = async (reqObj: any) => {
logInfo('Inside keycloakHelper deauthenticated method')
logInfo('keycloakHelper::deauthenticated...')
const keyCloakPropertyName = 'keycloak-token'
if (reqObj.session.hasOwnProperty(keyCloakPropertyName)) {
Expand Down Expand Up @@ -52,7 +53,7 @@ const deauthenticated = async (reqObj: any) => {
delete reqObj.session.userRoles
delete reqObj.session.userId
reqObj.session.destroy()
logInfo(`${process.pid}: User Deauthenticated`)
logInfo(`${process.pid}: User Deauthenticated from keycloakHelper`)
}

// tslint:disable-next-line: no-any
Expand Down
25 changes: 22 additions & 3 deletions src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import { proxiesV8 } from './proxies_v8/proxies_v8'
import { publicApiV8 } from './publicApi_v8/publicApiV8'
import { CustomKeycloak } from './utils/custom-keycloak'
import { CONSTANTS } from './utils/env'
import { logInfo, logSuccess } from './utils/logger'
import { logError, logInfo, logSuccess } from './utils/logger'
const cookieParser = require('cookie-parser')
const healthcheck = require('express-healthcheck')

Expand Down Expand Up @@ -169,14 +169,33 @@ export class Server {
}
private resetCookies() {
this.app.use('/reset', (_req, res) => {
logInfo('CLEARING RES COOKIES')
logInfo('Handling /reset call...')
res.clearCookie('connect.sid', { path: '/' })
try {
logInfo('before calling logout method.')
// this.logout(_req)
logInfo('logout method called successfully.')
} catch (error) {
// tslint:disable-next-line: no-any
logError('Error calling logout method: ', JSON.stringify(error))
}
logInfo('CLEARING RES COOKIES')

const host = _req.get('host')
let redirectUrl = '/public/logout'
let redirectUrl = '/auth/realms/sunbird/protocol/openid-connect/logout?redirect_uri='
redirectUrl = redirectUrl + `${CONSTANTS.KARMAYOGI_PORTAL_HOST}` + '/public/logout'
logInfo('Reset Cookies... received host value ' + host)
if (host === `${CONSTANTS.KARMAYOGI_PORTAL_HOST}`) {
redirectUrl = '/public/home'
}
logInfo('redirectUrl -> ' + redirectUrl)
if (_req.session) {
delete _req.session.userRoles
delete _req.session.userId
delete _req.session.keycloakClientId
delete _req.session.keycloakClientSecret
// _req.session.destroy()
}
res.redirect(redirectUrl)
})
}
Expand Down
77 changes: 3 additions & 74 deletions src/utils/custom-keycloak.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import * as express from 'express'
import expressSession from 'express-session'
import keycloakConnect from 'keycloak-connect'
import request from 'request'
import { getKeycloakConfig } from '../configs/keycloak.config'
import { CONSTANTS } from './env'
import { logError, logInfo } from './logger'
Expand Down Expand Up @@ -84,78 +83,8 @@ export class CustomKeycloak {
}

// tslint:disable-next-line: no-any
deauthenticated = (reqObj: any) => {
const keyCloakPropertyName = 'keycloak-token'
if (reqObj.session.hasOwnProperty(keyCloakPropertyName)) {
const keycloakToken = reqObj.session[keyCloakPropertyName]
if (keycloakToken) {
const tokenObject = JSON.parse(keycloakToken)
const refreshToken = tokenObject.refresh_token
if (refreshToken) {
const host = reqObj.get('host')
const urlValue = `https://${host}` + '/auth/realms/' + CONSTANTS.KEYCLOAK_REALM + '/protocol/openid-connect/logout'
const formData: Record<string, string> = {
client_id: 'portal',
refresh_token: refreshToken,
}

if (reqObj.session.hasOwnProperty('keycloakClientId') && (reqObj.session.keycloakClientId !== '')) {
formData.client_id = reqObj.session.keycloakClientId
formData.client_secret = reqObj.session.keycloakClientSecret
}
logInfo('formData used in logout: ' + JSON.stringify(formData))
try {
request.post({
form: formData,
url: urlValue,
})
} catch (err) {
// tslint:disable-next-line: no-console
console.log('Failed to call keycloak logout API ', err, '------', new Date().toString())
}

if (reqObj.session.parichayToken) {
logInfo('Parichay login found... trying to logout from Parichay...')
try {
request.get({
headers: {
Authorization: reqObj.session.parichayToken.access_token,
},
url: CONSTANTS.PARICHAY_REVOKE_URL,
}, (err, res, body) => {
if (err) {
logError('Received error when calling Parichay logout... ')
logError(JSON.stringify(err))
}
if (res) {
logInfo('Received response from Parichay logout... ')
logInfo(JSON.stringify(res.body))
}
if (body) {
logInfo('Received body from Parichay logout...')
logInfo(JSON.stringify(body))
}
})
} catch (err) {
// tslint:disable-next-line: no-console
console.log('Failed to call parichay revoke API ', err, '------', new Date().toString())
}
}
} else {
logError('Not able to retrieve refresh_token value from Session. Logout process failed.')
}
} else {
logError('Not able to retrieve keycloak-token value from Session. Logout process failed.')
}
} else {
logError('Session does not have property with name: ' + keyCloakPropertyName)
}
delete reqObj.session.userRoles
delete reqObj.session.userId
delete reqObj.session.keycloakClientId
delete reqObj.session.keycloakClientSecret
reqObj.session.destroy()
logInfo(`${process.pid}: User Deauthenticated`)
deauthenticated = () => {
logInfo(`${process.pid}: User Deauthenticated from custom-keycloak.ts`)
}

protect = (req: express.Request, res: express.Response, next: express.NextFunction) => {
Expand All @@ -173,7 +102,7 @@ export class CustomKeycloak {
getKeycloakConfig(url, realm)
)
keycloak.authenticated = this.authenticated
keycloak.deauthenticated = this.deauthenticated
// keycloak.deauthenticated = this.deauthenticated
return keycloak
}
}