diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 8161d57..db7a185 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -212,6 +212,13 @@ export class AppComponent implements OnInit, OnDestroy { this.menuItems = []; this.adminMenuItems = []; this.userMenuItems = []; + if (this.isAdmin()) { + this.userMenuItems.push(new MenuItem("", "Manage profiles", + "", "/admin", true, [], [], {})) + } + if (this.user) { + this.userMenuItems.push(new MenuItem("", "User information", "", "/user-info", false, [], [], {})); + } if (this.stakeholder) { if (this.isFrontPage) { this.menuHeader = { @@ -262,13 +269,7 @@ export class AppComponent implements OnInit, OnDestroy { "", "/helptexts", true, [], [], {communityId:'openaire'})) }*/ - if (this.isAdmin()) { - this.userMenuItems.push(new MenuItem("", "Manage profiles", - "", "/admin", true, [], [], {})) - } - if (this.user) { - this.userMenuItems.push(new MenuItem("", "User information", "", "/user-info", false, [], [], {})); - } + } else { if (this.isFrontPage || !this.hasAdminMenu) { this.menuHeader = { @@ -316,7 +317,7 @@ export class AppComponent implements OnInit, OnDestroy { } public isAdmin() { - return this.user && (Session.isPortalAdministrator(this.user) || Session.isCommunityCurator(this.user) || Session.isMonitorCurator(this.user) || (this.stakeholder && Session.isManager(this.stakeholder.type, this.stakeholder.alias, this.user))); + return this.user && (Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user) || (this.stakeholder && Session.isManager(this.stakeholder.type, this.stakeholder.alias, this.user))); } private resolvePageInner() { diff --git a/src/app/general/edit-stakeholder/edit-stakeholder.component.ts b/src/app/general/edit-stakeholder/edit-stakeholder.component.ts index e64dad6..a358972 100644 --- a/src/app/general/edit-stakeholder/edit-stakeholder.component.ts +++ b/src/app/general/edit-stakeholder/edit-stakeholder.component.ts @@ -8,6 +8,8 @@ import {EnvProperties} from "../../openaireLibrary/utils/properties/env-properti import {properties} from "../../../environments/environment"; import {StakeholderService} from "../../openaireLibrary/monitor/services/stakeholder.service"; import {UtilitiesService} from "../../openaireLibrary/services/utilities.service"; +import {User} from "../../openaireLibrary/login/utils/helper.class"; +import {UserManagementService} from "../../openaireLibrary/services/user-management.service"; @Component({ selector: 'edit-stakeholder', @@ -76,8 +78,8 @@ import {UtilitiesService} from "../../openaireLibrary/services/utilities.service [options]="stakeholderUtils.statuses" type="select">
+ [placeholder]="'Select a type'" hint="Select the type of your profile" + label="Type" [options]="stakeholderUtils.getTypesByUserRoles(user)" type="select">
{ + this.user = user; + }, error => { + console.log("App couldn't fetch properties"); + console.log(error); + })); this.stakeholderFb = this.fb.group({ _id: this.fb.control(this.stakeholder._id), defaultId: this.fb.control(this.stakeholder.defaultId), diff --git a/src/app/general/general.component.html b/src/app/general/general.component.html index 1bedb02..bd25158 100644 --- a/src/app/general/general.component.html +++ b/src/app/general/general.component.html @@ -27,7 +27,7 @@
+ [maxHeight]="'60vh'" [paddingLarge]="true" >
diff --git a/src/app/manageStakeholders/manageStakeholders.component.ts b/src/app/manageStakeholders/manageStakeholders.component.ts index 1bbaef0..b5e67ac 100644 --- a/src/app/manageStakeholders/manageStakeholders.component.ts +++ b/src/app/manageStakeholders/manageStakeholders.component.ts @@ -248,7 +248,7 @@ export class ManageStakeholdersComponent implements OnInit, OnDestroy { } public isCurator(): boolean { - return this.isAdmin() || Session.isCommunityCurator(this.user) || Session.isMonitorCurator(this.user); + return this.isAdmin() || Session.isMonitorCurator(this.user); } public isAdmin(): boolean { diff --git a/src/app/monitor/monitor.component.ts b/src/app/monitor/monitor.component.ts index 966a4eb..f0ba2d2 100644 --- a/src/app/monitor/monitor.component.ts +++ b/src/app/monitor/monitor.component.ts @@ -437,7 +437,7 @@ export class MonitorComponent implements OnInit, OnDestroy { } isAdmin(){ - return this.user && (Session.isPortalAdministrator(this.user) || Session.isCommunityCurator(this.user) || Session.isMonitorCurator(this.user)); + return this.user && (Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user)); } public isPublicOrIsMember(visibility: Visibility): boolean { diff --git a/src/app/topic/indicators.component.ts b/src/app/topic/indicators.component.ts index 78f1e90..37d9dcc 100644 --- a/src/app/topic/indicators.component.ts +++ b/src/app/topic/indicators.component.ts @@ -737,7 +737,7 @@ export class IndicatorsComponent implements OnInit, OnDestroy, OnChanges, AfterV } public get isAdministrator(): boolean { - return Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user) || Session.isCommunityCurator(this.user) + return Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user) } refreshIndicator() { diff --git a/src/app/utils/adminDashboard.guard.ts b/src/app/utils/adminDashboard.guard.ts index 6b5c49a..27c75a5 100644 --- a/src/app/utils/adminDashboard.guard.ts +++ b/src/app/utils/adminDashboard.guard.ts @@ -24,8 +24,8 @@ export class AdminDashboardGuard implements CanActivate { if(user) { return this.stakeholderService.getStakeholder(alias).pipe(map(stakeholder => { if(stakeholder) { - return (Session.isPortalAdministrator(user) || Session.isCommunityCurator(user) || - Session.isMonitorCurator(user) || Session.isManager(stakeholder.type, stakeholder.alias, user)); + return (Session.isPortalAdministrator(user) || + Session.isCurator(stakeholder.type, user) || Session.isManager(stakeholder.type, stakeholder.alias, user)); } else { return false; } diff --git a/src/app/utils/indicator-utils.ts b/src/app/utils/indicator-utils.ts index f26fa49..0cb2320 100644 --- a/src/app/utils/indicator-utils.ts +++ b/src/app/utils/indicator-utils.ts @@ -9,13 +9,14 @@ import { } from "../openaireLibrary/monitor/entities/stakeholder"; import {AbstractControl, ValidatorFn, Validators} from "@angular/forms"; import {Option} from "../openaireLibrary/dashboard/sharedComponents/input/input.component"; +import {Session} from "../openaireLibrary/login/utils/helper.class"; export class StakeholderUtils { statuses: Option[] = [ {value: 'PUBLIC', label: 'Public'}, {value: 'RESTRICTED', label: 'Restricted'}, {value: 'PRIVATE', label: 'Private'} - ] + ]; types: Option[] = [ {value: 'funder', label: 'Funder'}, @@ -23,7 +24,15 @@ export class StakeholderUtils { {value: 'project', label: 'Project'}, {value: 'organization', label: 'Organization'} ]; - + getTypesByUserRoles(user):Option[]{ + let types = []; + for(let type of this.types){ + if(Session.isCurator(type.value, user)|| Session.isPortalAdministrator(user)){ + types.push(type); + } + } + return types; + } visibility: Option[] = [ {icon: 'world', value: "PUBLIC", label: 'Public'}, {icon: 'lock', value: "RESTRICTED", label: 'Restricted'}, diff --git a/src/assets/dashboard-theme/structure.css b/src/assets/dashboard-theme/structure.css index d08f15e..61da7e6 100644 --- a/src/assets/dashboard-theme/structure.css +++ b/src/assets/dashboard-theme/structure.css @@ -85,7 +85,7 @@ transition-property: left; } -.sidebar_main_swipe #page_content { +.sidebar_main_swipe #page_content, openaire-user { padding-left: var(--sidebar-width); padding-top: var(--header-height); transition: 0.5s;