[Monitor Dashboard|TRunk]
Topic - Icon: change topic.iconUrl to icon show it as inner html in sidebars Create AdminDashboardGuard: use it in restricted parts check if portal admin, community curator or monitor curator git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-monitor-portal/trunk/monitor_dashboard@58901 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
parent
210d44764c
commit
09b8683328
|
@ -145,7 +145,7 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
}
|
||||
if (this.adminMenuItems.length == 0) {
|
||||
//nstructor(id: string, name: string, route: string, items: Item[], icon, open: boolean) {
|
||||
this.adminMenuItems.push(new MenuItem("stakeholders", "Manage Stakeholders", "", "/admin", false, [], [], {}, "settings"));
|
||||
this.adminMenuItems.push(new MenuItem("stakeholders", "Manage Stakeholders", "", "/admin", false, [], [], {}, "<i class=\"material-icons md-24\">settings</i>"));
|
||||
/*let adminOptions = new MenuItem("adminOptions", "Admin Options", "", "", false, [], [], {})
|
||||
adminOptions.items.push(new MenuItem("pages", "Pages", "", "/pages", false, [], [], {}));
|
||||
adminOptions.items.push(new MenuItem("portals", "Portals", "", "/portals", false, [], [], {}));
|
||||
|
|
|
@ -2,7 +2,7 @@ import {NgModule} from '@angular/core';
|
|||
import {RouterModule} from '@angular/router';
|
||||
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
import {ManageStakeholdersComponent} from "./manageStakeholders.component";
|
||||
import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
||||
import {AdminDashboardGuard} from "../utils/adminDashboard.guard";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
|
@ -10,7 +10,7 @@ import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
|||
{
|
||||
path: '',
|
||||
component: ManageStakeholdersComponent,
|
||||
canActivate: [LoginGuard],
|
||||
canActivate: [AdminDashboardGuard],
|
||||
canDeactivate: [PreviousRouteRecorder],
|
||||
data: {hasSidebar: true}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ import {InputModule} from "../openaireLibrary/dashboard/sharedComponents/input/i
|
|||
import {LoadingModule} from "../openaireLibrary/dashboard/sharedComponents/loading/loading.module";
|
||||
import {AlertModalModule} from "../openaireLibrary/utils/modal/alertModal.module";
|
||||
import {ReactiveFormsModule} from "@angular/forms";
|
||||
import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
||||
import {AdminDashboardGuard} from "../utils/adminDashboard.guard";
|
||||
|
||||
@NgModule({
|
||||
declarations: [ManageStakeholdersComponent],
|
||||
|
@ -22,7 +22,7 @@ import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
|||
ReactiveFormsModule
|
||||
],
|
||||
providers: [
|
||||
LoginGuard, PreviousRouteRecorder,
|
||||
AdminDashboardGuard, PreviousRouteRecorder,
|
||||
],
|
||||
exports: [ManageStakeholdersComponent]
|
||||
})
|
||||
|
|
|
@ -256,7 +256,7 @@ export class MonitorComponent implements OnInit, OnDestroy, IDeactivateComponent
|
|||
let topicItem: MenuItem = new MenuItem(topic.alias, topic.name, "", (
|
||||
'/' + this.stakeholder.alias + '/' + topic.alias ),
|
||||
null, [], [], {});
|
||||
topicItem.icon = topic.iconUrl;
|
||||
topicItem.icon = topic.icon;
|
||||
items.push(topicItem);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -3,7 +3,7 @@ import {RouterModule} from '@angular/router';
|
|||
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
import {StakeholderComponent} from "./stakeholder.component";
|
||||
import {CanExitGuard} from "../openaireLibrary/utils/can-exit.guard";
|
||||
import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
||||
import {AdminDashboardGuard} from "../utils/adminDashboard.guard";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
|
@ -11,7 +11,7 @@ import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
|||
{
|
||||
path: '',
|
||||
component: StakeholderComponent,
|
||||
canActivate: [LoginGuard],
|
||||
canActivate: [AdminDashboardGuard],
|
||||
canDeactivate: [PreviousRouteRecorder, CanExitGuard]
|
||||
}
|
||||
])
|
||||
|
|
|
@ -29,8 +29,9 @@
|
|||
<ng-template ngFor [ngForOf]="stakeholder.topics" let-topic let-i="index">
|
||||
<li>
|
||||
<a [routerLink]="topic.alias">
|
||||
<span *ngIf="topic.icon" class="menu_icon"><i
|
||||
class="material-icons">{{topic.icon}}</i></span>
|
||||
<span *ngIf="topic.icon" class="menu_icon">
|
||||
<span [innerHTML]="satinizeHTML(topic.icon)"></span>
|
||||
</span>
|
||||
<div class="menu_title uk-width-expand">
|
||||
{{topic.name}}
|
||||
</div>
|
||||
|
@ -119,7 +120,7 @@
|
|||
<div dashboard-input class="uk-form-row" [formInput]="form.get('description')"
|
||||
label="Description" type="textarea">
|
||||
</div>
|
||||
<div dashboard-input class="uk-form-row" [formInput]="form.get('iconUrl')"
|
||||
<div dashboard-input class="uk-form-row" [formInput]="form.get('icon')"
|
||||
label="Icon(SVG)" type="textarea">
|
||||
</div>
|
||||
<div class="uk-form-row uk-flex uk-flex-middle">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import {Component, OnDestroy, OnInit, ViewChild} from '@angular/core';
|
||||
import {ActivatedRoute, Router} from '@angular/router';
|
||||
import {Title} from '@angular/platform-browser';
|
||||
import {DomSanitizer, Title} from '@angular/platform-browser';
|
||||
import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties';
|
||||
|
||||
import {ErrorCodes} from '../openaireLibrary/utils/properties/errorCodes';
|
||||
|
@ -42,7 +42,7 @@ export class StakeholderComponent implements OnInit, OnDestroy, IDeactivateCompo
|
|||
private title: Title,
|
||||
private layoutService: LayoutService,
|
||||
private fb: FormBuilder,
|
||||
private stakeholderService: StakeholderService) {
|
||||
private stakeholderService: StakeholderService, private sanitizer: DomSanitizer) {
|
||||
this.errorCodes = new ErrorCodes();
|
||||
this.errorMessages = new ErrorMessagesComponent();
|
||||
}
|
||||
|
@ -97,7 +97,7 @@ export class StakeholderComponent implements OnInit, OnDestroy, IDeactivateCompo
|
|||
isPublic: this.fb.control(topic.isPublic),
|
||||
defaultId: this.fb.control(topic.defaultId),
|
||||
categories: this.fb.control(topic.categories),
|
||||
iconUrl: this.fb.control(topic.iconUrl)
|
||||
icon: this.fb.control(topic.icon)
|
||||
});
|
||||
this.subscriptions.push(this.form.get('name').valueChanges.subscribe(value => {
|
||||
let i = 1;
|
||||
|
@ -233,4 +233,7 @@ export class StakeholderComponent implements OnInit, OnDestroy, IDeactivateCompo
|
|||
});
|
||||
});
|
||||
}
|
||||
satinizeHTML(html){
|
||||
return this.sanitizer.bypassSecurityTrustHtml(html);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ import {StakeholderComponent} from "./stakeholder.component";
|
|||
import {StakeholderRoutingModule} from "./stakeholder-routing.module";
|
||||
import {InputModule} from "../openaireLibrary/dashboard/sharedComponents/input/input.module";
|
||||
import {ClickModule} from "../openaireLibrary/utils/click/click.module";
|
||||
import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
||||
import {AdminDashboardGuard} from "../utils/adminDashboard.guard";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
|
@ -20,7 +20,7 @@ import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
|||
StakeholderComponent
|
||||
],
|
||||
providers: [
|
||||
LoginGuard, PreviousRouteRecorder,
|
||||
AdminDashboardGuard, PreviousRouteRecorder,
|
||||
PiwikService
|
||||
],
|
||||
exports: [
|
||||
|
|
|
@ -3,7 +3,7 @@ import {RouterModule} from '@angular/router';
|
|||
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
import {TopicComponent} from "./topic.component";
|
||||
import {CanExitGuard} from "../openaireLibrary/utils/can-exit.guard";
|
||||
import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
||||
import {AdminDashboardGuard} from "../utils/adminDashboard.guard";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
|
@ -11,7 +11,7 @@ import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
|||
{
|
||||
path: '',
|
||||
component: TopicComponent,
|
||||
canActivate: [LoginGuard],
|
||||
canActivate: [AdminDashboardGuard],
|
||||
canDeactivate: [PreviousRouteRecorder, CanExitGuard]
|
||||
}
|
||||
])
|
||||
|
|
|
@ -130,7 +130,7 @@
|
|||
<div dashboard-input class="uk-form-row" [formInput]="form.get('description')"
|
||||
label="Description" type="textarea">
|
||||
</div>
|
||||
<div *ngIf="form.get('iconUrl')" dashboard-input class="uk-form-row" [formInput]="form.get('iconUrl')"
|
||||
<div *ngIf="form.get('icon')" dashboard-input class="uk-form-row" [formInput]="form.get('icon')"
|
||||
label="Icon(SVG)" type="textarea">
|
||||
</div>
|
||||
<div class="uk-form-row uk-flex uk-flex-middle">
|
||||
|
|
|
@ -138,7 +138,7 @@ export class TopicComponent implements OnInit, OnDestroy, IDeactivateComponent {
|
|||
isPublic: this.fb.control(topic.isPublic),
|
||||
defaultId: this.fb.control(topic.defaultId),
|
||||
categories: this.fb.control(topic.categories),
|
||||
iconUrl: this.fb.control(topic.iconUrl)
|
||||
icon: this.fb.control(topic.icon)
|
||||
});
|
||||
this.subscriptions.push(this.form.get('name').valueChanges.subscribe(value => {
|
||||
let i = 1;
|
||||
|
|
|
@ -13,7 +13,7 @@ import {IndicatorsComponent} from "./indicators.component";
|
|||
import {AlertModalModule} from "../openaireLibrary/utils/modal/alertModal.module";
|
||||
import {InputModule} from "../openaireLibrary/dashboard/sharedComponents/input/input.module";
|
||||
import {ClickModule} from "../openaireLibrary/utils/click/click.module";
|
||||
import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
||||
import {AdminDashboardGuard} from "../utils/adminDashboard.guard";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
|
@ -24,7 +24,7 @@ import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
|||
TopicComponent, IndicatorsComponent
|
||||
],
|
||||
providers: [
|
||||
LoginGuard, PreviousRouteRecorder,
|
||||
AdminDashboardGuard, PreviousRouteRecorder,
|
||||
PiwikService
|
||||
],
|
||||
exports: [
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
import {Injectable} from '@angular/core';
|
||||
import {ActivatedRouteSnapshot, CanActivate, CanLoad, Route, Router, RouterStateSnapshot} from '@angular/router';
|
||||
import {Observable} from 'rxjs/Observable';
|
||||
|
||||
import {filter, map} from "rxjs/operators";
|
||||
import {UserManagementService} from "../openaireLibrary/services/user-management.service";
|
||||
import {LoginErrorCodes} from "../openaireLibrary/login/utils/guardHelper.class";
|
||||
import {Session} from "../openaireLibrary/login/utils/helper.class";
|
||||
|
||||
@Injectable()
|
||||
export class AdminDashboardGuard implements CanActivate, CanLoad {
|
||||
|
||||
constructor(private router: Router,
|
||||
private userManagementService: UserManagementService) {
|
||||
}
|
||||
|
||||
check(path: string): Observable<boolean> | boolean {
|
||||
if (Session.isLoggedIn()) {
|
||||
const obs = this.userManagementService.getUserInfo(false).pipe(map(user => {
|
||||
return (Session.isPortalAdministrator(user) || Session.isCommunityCurator(user) || Session.isMonitorCurator(user));
|
||||
}));
|
||||
obs.pipe(filter(isLoggedIn => !isLoggedIn)).subscribe(() => {
|
||||
this.router.navigate(['/user-info'], {queryParams: {'errorCode': LoginErrorCodes.NOT_ADMIN, path}});
|
||||
});
|
||||
return obs;
|
||||
} else {
|
||||
this.router.navigate(['/user-info'], {queryParams: {'errorCode': LoginErrorCodes.NOT_LOGIN, path}});
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
|
||||
return this.check(state.url);
|
||||
}
|
||||
|
||||
canLoad(route: Route): Observable<boolean> | Promise<boolean> | boolean {
|
||||
return this.check('/' + route.path);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue