Commit 0c67813d authored by Devesh's avatar Devesh
Browse files

Issue #SB-13773 fix:handled mobile migration

parent 9b4d0c56
master Dark_theme SB-25589 SB-28090 aws_fileRead contributions dependabot/npm_and_yarn/src/app/client/decode-uri-component-0.2.2 dependabot/npm_and_yarn/src/app/decode-uri-component-0.2.2 dependabot/npm_and_yarn/src/app/express-4.17.3 dependabot/npm_and_yarn/src/app/jsonwebtoken-9.0.0 dependabot/npm_and_yarn/src/desktop/OpenRAP/decode-uri-component-0.2.2 dependabot/npm_and_yarn/src/desktop/OpenRAP/express-4.17.3 dependabot/npm_and_yarn/src/desktop/OpenRAP/jsonwebtoken-9.0.0 dependabot/npm_and_yarn/src/desktop/OpenRAP/qs-6.5.3 dependabot/npm_and_yarn/src/desktop/decode-uri-component-0.2.2 dependabot/npm_and_yarn/src/desktop/express-4.17.3 dependabot/npm_and_yarn/src/desktop/jsonwebtoken-9.0.0 dependabot/npm_and_yarn/src/desktop/qs-6.10.3 desktop-common-consumption filters_5.1.1 gcp gcp_test keshavprasadms-patch-1 keshavprasadms-patch-2 release-2.10.0 release-2.10.1 release-2.10.2 release-2.10.3 release-2.4.0 release-2.4.1 release-2.4.2 release-2.5.0 release-2.5.1 release-2.6.0 release-2.6.0-loadtest release-2.6.5 release-2.6.6 release-2.7.0 release-2.8.0 release-2.8.1 release-2.8.10 release-2.8.11 release-2.8.12 release-2.8.2 release-2.8.3 release-2.8.4 release-2.8.5 release-2.8.6 release-2.8.7 release-2.8.8 release-2.8.9 release-2.9.0 release-3.0 release-3.0-merge release-3.0.0 release-3.0.1 release-3.0.2 release-3.0.3 release-3.0.4 release-3.0.4-sso release-3.1.0 release-3.1.1 release-3.1.2 release-3.2.0 release-3.2.1 release-3.2.10 release-3.2.11 release-3.2.12 release-3.2.13 release-3.2.14 release-3.2.2 release-3.2.3 release-3.2.4 release-3.3.0 release-3.3.0-telemetry-fix release-3.3.1 release-3.3.2 release-3.4.0 release-3.4.1 release-3.4.2 release-3.4.3 release-3.4.4 release-3.4.5 release-3.4.6 release-3.4.7 release-3.5.0 release-3.5.1 release-3.5.2 release-3.5.3 release-3.6.0 release-3.6.1 release-3.6.5 release-3.6.6 release-3.7.0 release-3.7.1 release-3.7.2 release-3.8.0 release-3.8.1 release-3.8.2 release-3.8.3 release-3.9.0 release-3.9.1 release-3.9.2 release-3.9.3 release-4.0.0 release-4.0.1 release-4.0.2 release-4.1 release-4.1.0 release-4.1.1 release-4.10.0 release-4.10.0.1 release-4.10.1 release-4.10.2 release-4.10.2.1 release-4.10.2.2 release-4.10.3 release-4.2.0 release-4.2.1 release-4.3.0 release-4.3.1 release-4.4.0 release-4.4.1 release-4.5.0 release-4.5.1 release-4.5.2 release-4.6.0 release-4.7.0 release-4.7.1 release-4.8.0 release-4.8.5 release-4.9.0 release-4.9.1 release-5.0.0 release-5.0.0.1 release-5.0.0.2 release-5.0.0.3 release-5.0.1 release-5.0.2 release-5.1.0 release-5.1.1 release-sonarcloud revert-3718-copypi revert-3842-release-2.8.7 revert-3890-release-2.8.9 revert-4427-player-cache-issue revert-4537-SB-19763 revert-5244-sh-809 revert-5260-SB-table-3.3.0 revert-8284-release-5.0.0 sharathkashyap-patch-1 Tags unavailable
No related merge requests found
Showing with 19 additions and 6 deletions
+19 -6
......@@ -38,6 +38,7 @@ module.exports = (app) => {
errType = 'USER_FETCH_API';
userDetails = await fetchUserWithExternalId(jwtPayload, req);
req.session.userDetails = userDetails;
console.log("userDetails fetched", userDetails);
if(!_.isEmpty(userDetails) && (userDetails.phone || userDetails.email)) {
redirectUrl = successUrl + getQueryParams({ id: userDetails.userName });
logger.info({
......@@ -253,6 +254,7 @@ module.exports = (app) => {
errType = 'FREE_UP_USER';
await freeUpUser(req).catch(handleProfileUpdateError);
}
await delay();
errType = 'CREATE_USER';
req.query.type = req.query.identifier;
req.query.value = req.query.identifierValue;
......@@ -309,14 +311,17 @@ module.exports = (app) => {
stateToken : req.session.migrateAccountInfo.stateToken,
userId: req.query.userId,
identifier: req.query.identifier,
identifierValue: req.query.identifierValue
identifierValue: req.query.identifierValue,
client_id: req.session.migrateAccountInfo.client_id
};
errType = 'ERROR_ENCRYPTING_DATA';
req.session.migrateAccountInfo.encryptedData = encrypt(JSON.stringify(dataToEncrypt));
const payload = JSON.stringify(req.session.migrateAccountInfo.encryptedData);
url = `${envHelper.PORTAL_AUTH_SERVER_URL}/realms/${envHelper.PORTAL_REALM}/protocol/openid-connect/auth`;
query = `?client_id=portal&state=3c9a2d1b-ede9-4e6d-a496-068a490172ee&identifierValue=${req.query.identifierValue}&redirect_uri=https://${req.get('host')}/migrate/account/login/callback&payload=${payload}&scope=openid&response_type=code&automerge=1&version=3&goBackUrl=https://${req.get('host')}/sign-in/sso/select-org`;
console.log('url for migration', url + query);
const userInfo = `&userId=${req.query.userId}&identifierType=${req.query.identifier}&identifierValue=${req.query.identifierValue}`;
redirectUrl = url + query + userInfo;
console.log('url for migration', redirectUrl);
} catch (error) {
response = {error: getErrorMessage(error, errType)};
logger.error({
......@@ -329,7 +334,7 @@ module.exports = (app) => {
});
logErrorEvent(req, errType, error);
} finally {
res.redirect(url + query || errorUrl)
res.redirect(redirectUrl || errorUrl)
}
});
......@@ -353,8 +358,9 @@ module.exports = (app) => {
req.session.nonStateUserToken = nonStateUserToken;
} else {
nonStateUserToken = await generateAuthToken(req.query.code, `https://${req.get('host')}/migrate/account/login/callback`).catch(err => {
console.log('error in verifyAuthToken', err);
console.log('error in verifyAuthToken', err.error);
console.log('error details', err.statusCode, err.message)
res.redirect(errorUrl)
});
const userToken = parseJson(nonStateUserToken);
req.session.nonStateUserToken = userToken.access_token;
......@@ -365,13 +371,20 @@ module.exports = (app) => {
app.all('/migrate/user/account', async (req, res) => {
let stateUserData, stateJwtPayload, errType;
console.log('migration initiated', req.session.nonStateUserToken, JSON.stringify(req.session.migrateAccountInfo));
if (!req.session.migrateAccountInfo || !req.session.nonStateUserToken) {
// to support mobile flow
if (!req.session.migrateAccountInfo) {
req.session.migrateAccountInfo = {
encryptedData: req.get('x-authenticated-user-data')
}
}
req.session.nonStateUserToken = req.session.nonStateUserToken || req.get('x-authenticated-user-token');
if (!req.session.nonStateUserToken || !(req.session.migrateAccountInfo && req.session.migrateAccountInfo.encryptedData)) {
res.status(401).send({
responseCode: 'UNAUTHORIZED'
});
return false;
}
console.log('migration initiated', req.session.nonStateUserToken, JSON.stringify(req.session.migrateAccountInfo));
console.log('decryption started');
try {
const decryptedData = decrypt(req.session.migrateAccountInfo.encryptedData);
......
Supports Markdown
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