5c2a08de6d
* Update browserslist * Add browserslistrc * ember-cli-update --to 3.26, fix conflicts * Run codemodes that start with ember-* * More codemods - before cp* * More codemods (curly data-test-*) * WIP ember-basic-dropdown template errors * updates ember-basic-dropdown and related deps to fix build issues * updates basic dropdown instances to new version API * updates more deps -- ember-template-lint is working again * runs no-implicit-this codemod * creates and runs no-quoteless-attributes codemod * runs angle brackets codemod * updates lint:hbs globs to only touch hbs files * removes yield only templates * creates and runs deprecated args transform * supresses lint error for invokeAction on LinkTo component * resolves remaining ambiguous path lint errors * resolves simple-unless lint errors * adds warnings for deprecated tagName arg on LinkTo components * adds warnings for remaining curly component invocation * updates global template lint rules * resolves remaining template lint errors * disables some ember specfic lint rules that target pre octane patterns * js lint fix run * resolves remaining js lint errors * fixes test run * adds npm-run-all dep * fixes test attribute issues * fixes console acceptance tests * fixes tests * adds yield only wizard/tutorial-active template * fixes more tests * attempts to fix more flaky tests * removes commented out settled in transit test * updates deprecations workflow and adds initializer to filter by version * updates flaky policies acl old test * updates to flaky transit test * bumps ember deps down to LTS version * runs linters after main merge * fixes client count tests after bad merge conflict fixes * fixes client count history test * more updates to lint config * another round of hbs lint fixes after extending stylistic rule * updates lint-staged commands * removes indent eslint rule since it seems to break things * fixes bad attribute in transform-edit-form template * test fixes * fixes enterprise tests * adds changelog * removes deprecated ember-concurrency-test-waiters dep and adds @ember/test-waiters * flaky test fix Co-authored-by: hashishaw <cshaw@hashicorp.com>
60 lines
1.7 KiB
JavaScript
60 lines
1.7 KiB
JavaScript
/**
|
|
* @module OidcConsentBlock
|
|
* OidcConsentBlock components are used to show the consent form for the OIDC Authorization Code Flow
|
|
*
|
|
* @example
|
|
* ```js
|
|
* <OidcConsentBlock @redirect="https://example.com/oidc-callback" @code="abcd1234" @state="string-for-state" />
|
|
* ```
|
|
* @param {string} redirect - redirect is the URL where successful consent will redirect to
|
|
* @param {string} code - code is the string required to pass back to redirect on successful OIDC auth
|
|
* @param {string} [state] - state is a string which is required to return on redirect if provided, but optional generally
|
|
*/
|
|
|
|
import Ember from 'ember';
|
|
import Component from '@glimmer/component';
|
|
import { action } from '@ember/object';
|
|
import { tracked } from '@glimmer/tracking';
|
|
|
|
const validParameters = ['code', 'state'];
|
|
export default class OidcConsentBlockComponent extends Component {
|
|
@tracked didCancel = false;
|
|
|
|
get win() {
|
|
return this.window || window;
|
|
}
|
|
|
|
buildUrl(urlString, params) {
|
|
try {
|
|
let url = new URL(urlString);
|
|
Object.keys(params).forEach((key) => {
|
|
if (params[key] && validParameters.includes(key)) {
|
|
url.searchParams.append(key, params[key]);
|
|
}
|
|
});
|
|
return url;
|
|
} catch (e) {
|
|
console.debug('DEBUG: parsing url failed for', urlString);
|
|
throw new Error('Invalid URL');
|
|
}
|
|
}
|
|
|
|
@action
|
|
handleSubmit(evt) {
|
|
evt.preventDefault();
|
|
let { redirect, ...params } = this.args;
|
|
let redirectUrl = this.buildUrl(redirect, params);
|
|
if (Ember.testing) {
|
|
this.args.testRedirect(redirectUrl.toString());
|
|
} else {
|
|
this.win.location.replace(redirectUrl);
|
|
}
|
|
}
|
|
|
|
@action
|
|
handleCancel(evt) {
|
|
evt.preventDefault();
|
|
this.didCancel = true;
|
|
}
|
|
}
|