pr feedback

This commit is contained in:
Nancy Butler 2021-03-10 07:55:37 -07:00
parent e5bf60dca5
commit cb55194031
4 changed files with 9 additions and 73 deletions

View File

@ -1,7 +1,7 @@
import Route from '@ember/routing/route';
export default Route.extend( {
model() {
beforeModel() {
this.transitionTo('verify');
}
});

View File

@ -117,9 +117,6 @@ export default Route.extend(VerifyAuth, {
if ( get(params, 'code') ) {
let openers = openersOauth
if (parsedState.provider === 'azuread'){
openers = openersAzure
}
if ( openers.stateMatches(get(parsedState, 'nonce')) ) {
reply(params.error_description, params.code);
} else {
@ -143,7 +140,7 @@ export default Route.extend(VerifyAuth, {
} catch {
reply({ err: 'nonce' })
}
if (oauth.stateMatches(parsedState.nonce) || (parsedState.provider === 'azuread' && azure.stateMatches(parsedState.nonce))){
if (oauth.stateMatches(parsedState.nonce)){
const providerType = parsedState.provider
const currentProvider = get(this, 'access.providers').findBy('id', providerType);

View File

@ -15,51 +15,7 @@ export default Service.extend({
globalStore: service(),
app: service(),
intl: service(),
generateState() {
const state = JSON.stringify({
to: 'ember',
provider: 'azuread',
nonce: Math.random(),
test: true
})
return set(this, 'session.oauthState', state);
},
generateLoginStateKey() {
const state = JSON.stringify({
to: 'ember',
provider: 'azuread',
nonce: Math.random(),
test: false
})
return set(this, 'session.oauthState', state);
},
encodeState(state){
const m = {
'+': '-',
'/': '_',
'=': ''
}
return AWS.util.base64.encode(state).replace(/[+/]|=$/, (char) => m[char])
},
stateMatches(actual) {
const state = get(this, 'session.oauthState')
try {
const parsedState = JSON.parse(state)
return actual && actual === parsedState.nonce
} catch {
return false
}
},
oauth: service(),
testConfig(config) {
return config.doAction('configureTest', config);
@ -74,7 +30,7 @@ export default Service.extend({
const authRedirect = get(provider, 'redirectUrl');
let redirect = Util.addQueryParams(authRedirect, additionalRedirectParams);
redirect = Util.addQueryParams(redirect, { state: this.encodeState(this.generateState()) });
redirect = Util.addQueryParams(redirect, { state: this.oauth.encodeState(this.oauth.generateState('azuread')) });
window.location.href = redirect;
@ -94,7 +50,9 @@ export default Service.extend({
};
url = Util.addQueryParams(url, additionalRedirectParams);
url = Util.addQueryParams(url, { state: this.encodeState(this.generateState()) });
const state = this.oauth.encodeState(this.oauth.generateState('azuread'))
url = Util.addQueryParams(url, { state });
const popup = window.open(url, 'rancherAuth', Util.popupWindowOptions());

View File

@ -10,27 +10,8 @@ export default Service.extend({
hostname: null,
scheme: null,
clientId: null,
oauth: service(),
generateState() {
const state = JSON.stringify({
to: 'ember',
provider: 'github',
nonce: Math.random(),
test: true
})
return set(this, 'session.oauthState', state);
},
encodeState(state){
const m = {
'+': '-',
'/': '_',
'=': ''
}
return AWS.util.base64.encode(state).replace(/[+/]|=$/, (char) => m[char])
},
redirectURL: computed(() => {
@ -42,7 +23,7 @@ export default Service.extend({
redirect = redirect.split('#')[0];
var url = Util.addQueryParams(githubAuthUrl, {
state: this.encodeState(this.generateState()),
state: this.oauth.encodeState(this.oauth.generateState('github')),
redirect_uri: redirect
});