Browse Source

Add type and clear code

pull/3557/head
Vladyslav_Prykhodko 6 years ago
parent
commit
3d533b7c23
  1. 35
      ui-ngx/src/app/core/guards/redirect.guard.ts
  2. 3
      ui-ngx/src/app/modules/home/pages/admin/admin-routing.module.ts
  3. 32
      ui-ngx/src/app/modules/home/pages/admin/oauth2-settings.component.html
  4. 26
      ui-ngx/src/app/modules/home/pages/admin/oauth2-settings.component.ts
  5. 3
      ui-ngx/src/app/shared/models/settings.models.ts
  6. 2
      ui-ngx/src/assets/locale/locale.constant-en_US.json

35
ui-ngx/src/app/core/guards/redirect.guard.ts

@ -0,0 +1,35 @@
import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';
import { AuthState } from '@core/auth/auth.models';
import { select, Store } from '@ngrx/store';
import { selectAuth } from '@core/auth/auth.selectors';
import { take } from 'rxjs/operators';
import { AppState } from '@core/core.state';
import { Authority } from '@shared/models/authority.enum';
@Injectable({
providedIn: 'root'
})
export class RedirectGuard implements CanActivate {
constructor(private store: Store<AppState>,
private router: Router) { }
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot) {
let auth: AuthState = null;
this.store.pipe(select(selectAuth), take(1)).subscribe(
(authState: AuthState) => {
auth = authState;
}
);
if (auth?.userDetails?.authority === Authority.TENANT_ADMIN) {
this.router.navigateByUrl('/settings/oauth2-settings');
return false;
}
this.router.navigateByUrl('/settings/general');
return false;
}
}

3
ui-ngx/src/app/modules/home/pages/admin/admin-routing.module.ts

@ -23,6 +23,7 @@ import { Authority } from '@shared/models/authority.enum';
import { GeneralSettingsComponent } from '@modules/home/pages/admin/general-settings.component';
import { SecuritySettingsComponent } from '@modules/home/pages/admin/security-settings.component';
import { OAuth2SettingsComponent } from '@home/pages/admin/oauth2-settings.component';
import { RedirectGuard } from '@core/guards/redirect.guard';
const routes: Routes = [
{
@ -37,7 +38,7 @@ const routes: Routes = [
children: [
{
path: '',
redirectTo: Authority.TENANT_ADMIN ? 'oauth2-settings' : 'general',
canActivate: [RedirectGuard],
pathMatch: 'full'
},
{

32
ui-ngx/src/app/modules/home/pages/admin/oauth2-settings.component.html

@ -80,26 +80,16 @@
<mat-icon>delete</mat-icon>
</button>
</div>
<div fxLayout="row" fxLayout.xs="column" fxLayoutGap.gt-xs="8px">
<mat-form-field fxFlex class="mat-block">
<mat-label translate>admin.oauth2.registration-id</mat-label>
<input matInput formControlName="registrationId" required>
<mat-error *ngIf="registration.get('registrationId').hasError('required')">
{{ 'admin.oauth2.registration-id-required' | translate }}
</mat-error>
<mat-error *ngIf="registration.get('registrationId').hasError('unique')">
{{ 'admin.oauth2.registration-id-unique' | translate }}
</mat-error>
</mat-form-field>
<mat-form-field fxFlex class="mat-block">
<mat-label translate>admin.oauth2.client-name</mat-label>
<input matInput formControlName="clientName" required>
<mat-error *ngIf="registration.get('clientName').hasError('required')">
{{ 'admin.oauth2.client-name-required' | translate }}
</mat-error>
</mat-form-field>
</div>
<mat-form-field fxFlex class="mat-block">
<mat-label translate>admin.oauth2.registration-id</mat-label>
<input matInput formControlName="registrationId" required>
<mat-error *ngIf="registration.get('registrationId').hasError('required')">
{{ 'admin.oauth2.registration-id-required' | translate }}
</mat-error>
<mat-error *ngIf="registration.get('registrationId').hasError('unique')">
{{ 'admin.oauth2.registration-id-unique' | translate }}
</mat-error>
</mat-form-field>
<div fxLayout="row" fxLayout.xs="column" fxLayoutGap.gt-xs="8px">
<mat-form-field fxFlex class="mat-block">
@ -310,7 +300,7 @@
<mat-form-field fxFlex class="mat-block">
<mat-label translate>common.password</mat-label>
<input matInput formControlName="password">
<input matInput type="password" formControlName="password" autocomplete="new-password">
</mat-form-field>
</div>
</section>

26
ui-ngx/src/app/modules/home/pages/admin/oauth2-settings.component.ts

@ -16,7 +16,14 @@
import { Component, Inject, OnDestroy, OnInit } from '@angular/core';
import { AbstractControl, FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { ClientRegistration, DomainParams, OAuth2Settings } from '@shared/models/settings.models';
import {
ClientAuthenticationMethod,
ClientRegistration,
DomainParams,
MapperConfigType,
OAuth2Settings,
TenantNameStrategy
} from '@shared/models/settings.models';
import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state';
import { AdminService } from '@core/http/admin.service';
@ -44,9 +51,9 @@ export class OAuth2SettingsComponent extends PageComponent implements OnInit, Ha
oauth2SettingsForm: FormGroup;
oauth2Settings: OAuth2Settings;
clientAuthenticationMethods = ['basic', 'post'];
converterTypesExternalUser = ['BASIC', 'CUSTOM'];
tenantNameStrategies = ['DOMAIN', 'EMAIL', 'CUSTOM'];
clientAuthenticationMethods: ClientAuthenticationMethod[] = ['BASIC', 'POST'];
converterTypesExternalUser: MapperConfigType[] = ['BASIC', 'CUSTOM'];
tenantNameStrategies: TenantNameStrategy[] = ['DOMAIN', 'EMAIL', 'CUSTOM'];
constructor(protected store: Store<AppState>,
private adminService: AdminService,
@ -117,7 +124,7 @@ export class OAuth2SettingsComponent extends PageComponent implements OnInit, Ha
}
private initOAuth2Settings(oauth2Settings: OAuth2Settings): void {
if(oauth2Settings.clientsDomainsParams) {
if (oauth2Settings.clientsDomainsParams) {
oauth2Settings.clientsDomainsParams.forEach((domaindomain) => {
this.clientsDomainsParams.push(this.buildSettingsDomain(domaindomain));
});
@ -173,7 +180,7 @@ export class OAuth2SettingsComponent extends PageComponent implements OnInit, Ha
formDomain.get('redirectUriTemplate').patchValue(uri);
}));
if(domainParams){
if (domainParams) {
domainParams.clientRegistrations.forEach((registration) => {
this.clientDomainRegistrations(formDomain).push(this.buildSettingsRegistration(registration));
})
@ -187,7 +194,6 @@ export class OAuth2SettingsComponent extends PageComponent implements OnInit, Ha
private buildSettingsRegistration(registrationData?: ClientRegistration): FormGroup {
const clientRegistration = this.fb.group({
registrationId: [null, [Validators.required, this.uniqueRegistrationIdValidator]],
clientName: [null, [Validators.required]],
loginButtonLabel: [null, [Validators.required]],
loginButtonIcon: [null],
clientId: ['', [Validators.required]],
@ -197,7 +203,7 @@ export class OAuth2SettingsComponent extends PageComponent implements OnInit, Ha
scope: this.fb.array([], [Validators.required]),
jwkSetUri: ['', [Validators.required, Validators.pattern(this.URL_REGEXP)]],
userInfoUri: ['', [Validators.required, Validators.pattern(this.URL_REGEXP)]],
clientAuthenticationMethod: ['post', [Validators.required]],
clientAuthenticationMethod: ['POST', [Validators.required]],
userNameAttributeName: ['email', [Validators.required]],
mapperConfig: this.fb.group({
allowUserCreation: [true],
@ -219,11 +225,11 @@ export class OAuth2SettingsComponent extends PageComponent implements OnInit, Ha
}
}));
if(registrationData){
if (registrationData) {
registrationData.scope.forEach(() => {
(clientRegistration.get('scope') as FormArray).push(this.fb.control(''))
})
if(registrationData.mapperConfig.type !== 'BASIC'){
if (registrationData.mapperConfig.type !== 'BASIC') {
clientRegistration.get('mapperConfig.type').patchValue('CUSTOM');
}
}

3
ui-ngx/src/app/shared/models/settings.models.ts

@ -23,7 +23,7 @@ export interface AdminSettings<T> {
export declare type SmtpProtocol = 'smtp' | 'smtps';
export declare type ClientAuthenticationMethod = 'basic' | 'post';
export declare type ClientAuthenticationMethod = 'BASIC' | 'POST';
export declare type MapperConfigType = 'BASIC' | 'CUSTOM';
export declare type TenantNameStrategy = 'DOMAIN' | 'EMAIL' | 'CUSTOM';
@ -77,7 +77,6 @@ export interface DomainParams {
export interface ClientRegistration {
registrationId: string;
clientName: string;
loginButtonLabel: string;
loginButtonIcon: string;
clientId: string;

2
ui-ngx/src/assets/locale/locale.constant-en_US.json

@ -131,8 +131,6 @@
"registration-id": "Registration ID",
"registration-id-required": "Registration ID is required.",
"registration-id-unique": "Registration ID need to unique for the system.",
"client-name": "Client name",
"client-name-required": "Client name is required.",
"client-id": "Client ID",
"client-id-required": "Client ID is required.",
"client-secret": "Client secret",

Loading…
Cancel
Save