Skip to content

Commit ce7ce38

Browse files
annahasselannahassel
authored andcommitted
fix: params
1 parent 9aae708 commit ce7ce38

File tree

2 files changed

+33
-18
lines changed

2 files changed

+33
-18
lines changed

src/actions/oauth/upgrade.js

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
const { strict: assert } = require('assert');
2-
const Boom = require('@hapi/boom');
32

43
const { ActionTransport } = require('@microfleet/plugin-router');
54

65
const { oauthVerification, mserviceVerification } = require('../../auth/oauth');
76
const formOAuthResponse = require('../../auth/oauth/utils/form-oauth-response');
8-
const { validateGrantCode } = require('../../auth/oauth/strategies/apple');
7+
const { upgradeAppleCode } = require('../../auth/oauth/strategies/apple');
98

109
/**
1110
* @api {amqp} <prefix>.oauth.upgrade Upgardes existing SSO token to service-verified token
@@ -38,22 +37,14 @@ async function upgrade(request) {
3837
query.jwt = params.jwt;
3938
}
4039

41-
let credentials;
42-
43-
if (provider === 'apple') {
44-
try {
45-
const redirectUrl = transportRequest.url.href
46-
.replace(/\/upgrade$/, '/apple')
47-
.replace(/^http:\/\//, 'https://');
48-
const tokenResponse = await validateGrantCode(providerSettings, token, redirectUrl);
49-
credentials = await profile.call(providerSettings, { token, query }, tokenResponse);
50-
} catch (error) {
51-
throw Boom.internal(error);
52-
}
53-
} else {
54-
// verifies token by retreiving profile
55-
credentials = await profile.call(providerSettings, { token, query });
56-
}
40+
const credentials = provider === 'apple'
41+
? await upgradeAppleCode({
42+
query,
43+
providerSettings,
44+
code: token,
45+
redirectUrl: transportRequest.url.href.replace(/\/upgrade$/, '/apple').replace(/^http:\/\//, 'https://'),
46+
})
47+
: await profile.call(providerSettings, { token, query });
5748

5849
// ensure its a shallow copy as we will mutate it later
5950
const oauthConfig = { ...this.config.oauth.providers[provider] };

src/auth/oauth/strategies/apple.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const { sign, verify } = require('jsonwebtoken');
22
const getJwksClient = require('jwks-rsa');
33
const Bluebird = require('bluebird');
44
const httpRequest = require('request-promise');
5+
const Boom = require('@hapi/boom');
56

67
// @todo more options from config
78
const jwksClient = getJwksClient({
@@ -144,8 +145,31 @@ function getProvider(options, server) {
144145
};
145146
}
146147

148+
async function upgradeAppleCode({ providerSettings, code, query, redirectUrl }) {
149+
const { profile } = providerSettings.provider;
150+
151+
try {
152+
const tokenResponse = await validateGrantCode(providerSettings, code, redirectUrl);
153+
const credentials = await profile.call(
154+
providerSettings,
155+
{
156+
query,
157+
token: tokenResponse.access_token,
158+
refreshToken: tokenResponse.refresh_token,
159+
expiresIn: tokenResponse.expires_in,
160+
},
161+
tokenResponse
162+
);
163+
164+
return credentials;
165+
} catch (error) {
166+
throw Boom.internal(error);
167+
}
168+
}
169+
147170
module.exports = {
148171
transformAccountToResponseFormat,
149172
validateGrantCode,
173+
upgradeAppleCode,
150174
options: getProvider,
151175
};

0 commit comments

Comments
 (0)