diff --git a/src/app/stakeholder/stakeholder.component.ts b/src/app/stakeholder/stakeholder.component.ts
index f2a374e..3112f5e 100644
--- a/src/app/stakeholder/stakeholder.component.ts
+++ b/src/app/stakeholder/stakeholder.component.ts
@@ -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);
+ }
}
diff --git a/src/app/stakeholder/stakeholder.module.ts b/src/app/stakeholder/stakeholder.module.ts
index 4544492..76c649e 100644
--- a/src/app/stakeholder/stakeholder.module.ts
+++ b/src/app/stakeholder/stakeholder.module.ts
@@ -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: [
diff --git a/src/app/topic/topic-routing.module.ts b/src/app/topic/topic-routing.module.ts
index 9386b63..71b27c9 100644
--- a/src/app/topic/topic-routing.module.ts
+++ b/src/app/topic/topic-routing.module.ts
@@ -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]
}
])
diff --git a/src/app/topic/topic.component.html b/src/app/topic/topic.component.html
index 4c920bb..3d78621 100644
--- a/src/app/topic/topic.component.html
+++ b/src/app/topic/topic.component.html
@@ -130,7 +130,7 @@
-
diff --git a/src/app/topic/topic.component.ts b/src/app/topic/topic.component.ts
index a2c9e8e..1f4c66b 100644
--- a/src/app/topic/topic.component.ts
+++ b/src/app/topic/topic.component.ts
@@ -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;
diff --git a/src/app/topic/topic.module.ts b/src/app/topic/topic.module.ts
index 3a380b0..49c99ea 100644
--- a/src/app/topic/topic.module.ts
+++ b/src/app/topic/topic.module.ts
@@ -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: [
diff --git a/src/app/utils/adminDashboard.guard.ts b/src/app/utils/adminDashboard.guard.ts
new file mode 100644
index 0000000..b80b0b4
--- /dev/null
+++ b/src/app/utils/adminDashboard.guard.ts
@@ -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 {
+ 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 {
+ return this.check(state.url);
+ }
+
+ canLoad(route: Route): Observable | Promise | boolean {
+ return this.check('/' + route.path);
+ }
+}