jec-glasscat
Version:
JEC GlassCat - The GlassCat Aplication Server is the default JEC implementation.
150 lines (135 loc) • 6.14 kB
text/typescript
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
//
// Copyright 2016-2018 Pascal ECHEMANN.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import {Component, OnInit, OnDestroy} from "@angular/core";
import {ActivatedRoute, Router} from '@angular/router';
import {Subscription} from "rxjs/Rx";
import {EjpService} from "../../services/EjpService";
import {EjpConstraintConfig, EjpSecurityConfig} from "jec-glasscat-config";
import {BreadcrumbService} from "../../services/messaging/BreadcrumbService";
import {DialogMessageService} from '../../services/messaging/DialogMessageService';
import {MessagingService} from '../../services/messaging/MessagingService';
import {FormBuilder, FormGroup, FormControl, Validators} from "@angular/forms";
import {EjpAbstractSecurityComponent} from "./EjpAbstractSecurityComponent";
import {SelectItem} from "primeng/components/common/api";
import {ConsoleMenuItem} from "../../business/messaging/ConsoleMenuItem";
export class EjpConstraintsComponent extends EjpAbstractSecurityComponent
implements OnInit, OnDestroy {
constructor(protected __ejpService:EjpService,
protected __breadcrumbService:BreadcrumbService,
protected __dialogMessageService:DialogMessageService,
protected __messagingService:MessagingService,
protected __router:Router,
protected __route:ActivatedRoute,
private _fb:FormBuilder){
super(
__ejpService, __breadcrumbService, __dialogMessageService,
__messagingService, __router, __route,
"Constraints", "constraints"
);
}
public ejpConstraintForm:FormGroup = null;
public constraintEditable:boolean = false;
public onEjpLoad():void {
this.initConstraintModel();
}
public onParamsLoad():void {
this._ejpNameControl =
new FormControl(this.EMPTY_STRING, Validators.required);
this._ejpRolesControl =
new FormControl(this.EMPTY_STRING, Validators.required);
this._ejpUrlPatternControl =
new FormControl(this.EMPTY_STRING, Validators.required);
this._ejpErrorUrlControl = new FormControl(this.EMPTY_STRING);
this.ejpConstraintForm = this._fb.group({
constraintName: this._ejpNameControl,
constraintRoles: this._ejpRolesControl,
urlPattern: this._ejpUrlPatternControl,
errorUrl: this._ejpErrorUrlControl
});
}
public selectListChange():void {
if(this.selectedItem) {
this.constraintEditable = true;
const constraint:EjpConstraintConfig = this.selectedItem as EjpConstraintConfig;
this.ejpConstraintForm.patchValue( { constraintName: constraint.name });
this.ejpConstraintForm.patchValue( { constraintRoles: constraint.roles.join(", ") });
this.ejpConstraintForm.patchValue( { urlPattern: constraint.urlPattern });
this.ejpConstraintForm.patchValue( { errorUrl: constraint.errorUrl });
} else {
this.cancel();
}
}
public cancel():void {
this.selectedItem = null;
this.ejpConstraintForm.reset();
this.constraintEditable = false;
}
public onEjpUpdate():void {
this.cancel();
this.initConstraintModel();
}
public createResource():void {
const constraints:Array<EjpConstraintConfig> = this.__ejpModel.webapp.security.constraints;
const constraint:EjpConstraintConfig = {
name: this.ejpConstraintForm.get("constraintName").value,
roles: this.getRolesArray(),
urlPattern: this.ejpConstraintForm.get("urlPattern").value,
errorUrl: this.ejpConstraintForm.get("errorUrl").value
};
constraints.push(constraint);
this.updateEjp();
}
public updateConstraint():void {
const constraint:EjpConstraintConfig = this.selectedItem as EjpConstraintConfig;
constraint.name = this.ejpConstraintForm.get("constraintName").value;
constraint.roles = this.getRolesArray();
constraint.urlPattern = this.ejpConstraintForm.get("urlPattern").value;
constraint.errorUrl = this.ejpConstraintForm.get("errorUrl").value;
this.updateEjp();
}
public removeConstraint():void {
const constraints:Array<EjpConstraintConfig> = this.__ejpModel.webapp.security.constraints;
const constraint:EjpConstraintConfig = this.selectedItem as EjpConstraintConfig;
constraints.splice(constraints.indexOf(constraint), 1);
this.updateEjp();
}
private _ejpNameControl:FormControl = null;
private _ejpRolesControl:FormControl = null;
private _ejpUrlPatternControl:FormControl = null;
private _ejpErrorUrlControl:FormControl = null;
private initConstraintModel():void {
if(this.itemListModel) this.itemListModel.splice(0);
const security:EjpSecurityConfig = this.__ejpModel.webapp.security;
const constraints:Array<EjpConstraintConfig> = security.constraints;
const constraintList:SelectItem[] = new Array<SelectItem>();
let constraint:EjpConstraintConfig = null;
let len:number = constraints.length;
while(len--) {
constraint = constraints[len];
constraintList.push( { label: constraint.name, value: constraint } );
}
this.itemListModel = constraintList;
}
private getRolesArray():string[] {
let roles:string = this.ejpConstraintForm.get("constraintRoles").value;
roles = roles.replace(" ", this.EMPTY_STRING);
return roles.split(",");
}
}