Skip to content
This repository has been archived by the owner on Oct 20, 2021. It is now read-only.

Commit

Permalink
feat(dcr): Support multiple initial access token providers
Browse files Browse the repository at this point in the history
  • Loading branch information
brasseld committed May 8, 2019
1 parent 6459c44 commit 46bd015
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 14 deletions.
2 changes: 2 additions & 0 deletions src/entities/clientRegistrationProvider.ts
Expand Up @@ -19,9 +19,11 @@ export class ClientRegistrationProvider {
public name: string;
public description: string;
public discovery_endpoint: string;
public initial_access_token_type: string;
public client_id: string;
public client_secret: string;
public scopes: string[];
public initial_access_token: string;

constructor() {
'ngInject';
Expand Down
1 change: 0 additions & 1 deletion src/management/application/create-application.html
Expand Up @@ -147,7 +147,6 @@ <h2>Security</h2>
<div ng-message="md-maxlength">The name has to be less than 300 characters long.</div>
</div>
</md-input-container>

</div>
</div>
</div>
Expand Down
Expand Up @@ -31,6 +31,7 @@ class ClientRegistrationProviderController {
private clientRegistrationProvider: ClientRegistrationProvider;
private initialClientRegistrationProvider: ClientRegistrationProvider;
private updateMode: boolean;
private initialAccessTokenTypes: any[];

constructor(
private $scope: IClientRegistrationProviderScope,
Expand All @@ -45,6 +46,16 @@ class ClientRegistrationProviderController {
}

$onInit() {
this.initialAccessTokenTypes = [];
this.initialAccessTokenTypes.push({
name: 'Client Credentials',
value: 'client_credentials'
});
this.initialAccessTokenTypes.push({
name: 'Initial Access Token',
value: 'initial_access_token'
});

this.updateMode = this.clientRegistrationProvider !== undefined && this.clientRegistrationProvider.id !== undefined;
if (! this.updateMode) {
// Initialize the client registration provider
Expand Down
Expand Up @@ -57,24 +57,48 @@ <h2>Configuration</h2>
<div class="gv-form-content" layout="column">
<div layout="column">
<md-input-container class="md-block" flex-gt-xs>
<label>OIDC Discovery Endpoint</label>
<label>OpenID Connect Discovery Endpoint</label>
<input ng-model="$ctrl.clientRegistrationProvider.discovery_endpoint" type="url" required>
</md-input-container>

<md-input-container class="md-block" flex-gt-xs>
<label>Client Id</label>
<input ng-model="$ctrl.clientRegistrationProvider.client_id" type="text" required>
<md-input-container class="md-block">
<label>Initial Access Token Provider</label>
<md-select ng-model="$ctrl.clientRegistrationProvider.initial_access_token_type"
required>
<md-option
ng-value="initialAccessTokenType.value"
ng-repeat="initialAccessTokenType in $ctrl.initialAccessTokenTypes">
{{::initialAccessTokenType.name}}
</md-option>
</md-select>
<div class="hint">
Define the way the initial access token must be provided.
</div>
</md-input-container>

<md-input-container class="md-block" flex-gt-xs>
<label>Client Secret</label>
<input ng-model="$ctrl.clientRegistrationProvider.client_secret" type="text" required>
</md-input-container>
<div ng-if="$ctrl.clientRegistrationProvider.initial_access_token_type === 'client_credentials'">
<md-input-container class="md-block" flex-gt-xs>
<label>Client ID</label>
<input ng-model="$ctrl.clientRegistrationProvider.client_id" type="text" required>
</md-input-container>

<md-input-container class="md-block" flex-gt-xs>
<label>Scopes</label>
<md-chips ng-model="$ctrl.clientRegistrationProvider.scopes" placeholder="Enter a scope and press Enter"></md-chips>
</md-input-container>
<md-input-container class="md-block" flex-gt-xs>
<label>Client Secret</label>
<input ng-model="$ctrl.clientRegistrationProvider.client_secret" type="text" required>
</md-input-container>

<md-input-container class="md-block" flex-gt-xs>
<label>Scopes</label>
<md-chips ng-model="$ctrl.clientRegistrationProvider.scopes" placeholder="Enter a scope and press Enter"></md-chips>
</md-input-container>
</div>

<div ng-if="$ctrl.clientRegistrationProvider.initial_access_token_type === 'initial_access_token'">
<md-input-container class="md-block" flex-gt-xs>
<label>Initial Access Token</label>
<input ng-model="$ctrl.clientRegistrationProvider.initial_access_token" type="text" required>
</md-input-container>
</div>
</div>
</div>
</div>
Expand Down
4 changes: 3 additions & 1 deletion src/services/clientRegistrationProvider.service.ts
Expand Up @@ -48,9 +48,11 @@ class ClientRegistrationProviderService {
name: clientRegistrationProvider.name,
description: clientRegistrationProvider.description,
discovery_endpoint: clientRegistrationProvider.discovery_endpoint,
initial_access_token_type: clientRegistrationProvider.initial_access_token_type,
client_id: clientRegistrationProvider.client_id,
client_secret: clientRegistrationProvider.client_secret,
scopes: clientRegistrationProvider.scopes
scopes: clientRegistrationProvider.scopes,
initial_access_token: clientRegistrationProvider.initial_access_token
}).then(response => {
let clientRegistrationProvider = response.data;
clientRegistrationProvider.scopes = clientRegistrationProvider.scopes || [];
Expand Down

0 comments on commit 46bd015

Please sign in to comment.