diff --git a/src/app/access/access.state.ts b/src/app/access/access.state.ts index 699678993783163cd304809d7703cc3513493fbb..91eff44b5a9e0a9642a935b91e1962b93f77f47f 100644 --- a/src/app/access/access.state.ts +++ b/src/app/access/access.state.ts @@ -9,7 +9,7 @@ import {ApiService} from "@app/shared/services/api.service"; import {CrudHelperUtil} from "@app/shared/utils/crud-helper.util"; import {MapUtil} from "@app/shared/utils/map.util"; import {StringUtil} from "@app/shared/utils/string.util"; -import {Action, State, StateContext} from "@ngxs/store"; +import {Action, State, StateContext, Store} from "@ngxs/store"; import {tap} from "rxjs/internal/operators/tap"; import {catchError} from "rxjs/operators"; @@ -29,7 +29,7 @@ export interface AccessStateModel extends CrudStateModel<ArchiveMetadataModel> { }, }) export class AccessState { - constructor(private apiService: ApiService) { + constructor(private apiService: ApiService, protected store: Store, ) { } private readonly DEFAULT_SEARCH = "*"; diff --git a/src/app/deposit/deposit.state.ts b/src/app/deposit/deposit.state.ts index 685807a072481f2192739e6b825ea818514707ef..38b74c6de85a177d971d5cfadf736cf3be7ad137 100644 --- a/src/app/deposit/deposit.state.ts +++ b/src/app/deposit/deposit.state.ts @@ -16,7 +16,7 @@ import {PreservationPolicyAction} from "@app/shared/preservation-policy.action"; import {ApiService} from "@app/shared/services/api.service"; import {SubmissionPolicyAction} from "@app/shared/submission-policy.action"; import {NotificationService} from "@app/shared/services/notification.service"; -import {Action, State, StateContext} from "@ngxs/store"; +import {Action, State, StateContext, Store} from "@ngxs/store"; import {Observable} from "rxjs"; import {map} from "rxjs/operators"; @@ -43,8 +43,9 @@ export interface DepositStateModel extends CrudStateModel<DepositsModel> { }) export class DepositState extends CrudState<DepositsModel> { constructor(protected apiService: ApiService, + protected store: Store, protected notificationService: NotificationService) { - super(apiService, notificationService); + super(apiService, store, notificationService); } defineUrlResource(): ResourceApiEnum { diff --git a/src/app/shared/crud.state.ts b/src/app/shared/crud.state.ts index 6b3ea24a0a0c2cc52a0c4b15c3858114be511bf8..17ea80e9db8cc8a5444588b534f50745dda81f83 100644 --- a/src/app/shared/crud.state.ts +++ b/src/app/shared/crud.state.ts @@ -16,7 +16,7 @@ import {CrudRouteUtil} from "@app/shared/utils/crud-route.util"; import {ObjectUtil} from "@app/shared/utils/object.util"; import {TRANSLATE} from "@app/shared/utils/translate.util"; import {Navigate} from "@ngxs/router-plugin"; -import {StateContext} from "@ngxs/store"; +import {StateContext, Store} from "@ngxs/store"; import _ from "lodash"; import {Observable} from "rxjs"; import {catchError} from "rxjs/internal/operators/catchError"; @@ -35,6 +35,7 @@ export abstract class CrudState<T> { private readonly subResource: ApiResourceNameEnum[]; protected constructor(protected apiService: ApiService, + protected store: Store, protected notificationService: NotificationService) { this.urlResource = this.defineUrlResource(); this.state = this.defineState(); diff --git a/src/app/shared/enums/api.enum.ts b/src/app/shared/enums/api.enum.ts index 650591e65d56756991b0fe086cc1050c64789a6b..5c0708b77cde64c234682fb4d327b21c6b0a9a10 100644 --- a/src/app/shared/enums/api.enum.ts +++ b/src/app/shared/enums/api.enum.ts @@ -53,6 +53,8 @@ export class AccessResourceApiEnum implements ResourceApiEnum { BaseResourceApiEnum.access + sep + ApiResourceNameEnum.OAI_SETS; static orders = BaseResourceApiEnum.access + sep + ApiResourceNameEnum.ORDER; + static organizationalUnits = + BaseResourceApiEnum.access + sep + ApiResourceNameEnum.ORG_UNIT; } export class DataManagementApiEnum implements ResourceApiEnum { diff --git a/src/app/shared/language.state.ts b/src/app/shared/language.state.ts index 8e2b6ccdf4248275279f0735aaf9cadef49874a7..c9cb9bee08c91193ac306393cda4d5b8c2b6680e 100644 --- a/src/app/shared/language.state.ts +++ b/src/app/shared/language.state.ts @@ -7,7 +7,7 @@ import {LanguageAction} from "@app/shared/language.action"; import {QueryParametersModel} from "@app/shared/models/query-parameters.model"; import {ApiService} from "@app/shared/services/api.service"; import {NotificationService} from "@app/shared/services/notification.service"; -import {Action, State, StateContext} from "@ngxs/store"; +import {Action, State, StateContext, Store} from "@ngxs/store"; import {Observable} from "rxjs"; export interface LanguageStateModel extends CrudStateModel<LanguagesModel> { @@ -25,8 +25,9 @@ export interface LanguageStateModel extends CrudStateModel<LanguagesModel> { }) export class LanguageState extends CrudState<LanguagesModel> { constructor(protected apiService: ApiService, + protected store: Store, protected notificationService: NotificationService) { - super(apiService, notificationService); + super(apiService, store, notificationService); } defineState(): StateEnum { diff --git a/src/app/shared/license.state.ts b/src/app/shared/license.state.ts index b3da08b3d968a256845a0696301d491e4fb4f1e1..88074a5cc317136970e97f24911ec85d9dabc5e1 100644 --- a/src/app/shared/license.state.ts +++ b/src/app/shared/license.state.ts @@ -7,7 +7,7 @@ import {LicenseAction} from "@app/shared/license.action"; import {QueryParametersModel} from "@app/shared/models/query-parameters.model"; import {ApiService} from "@app/shared/services/api.service"; import {NotificationService} from "@app/shared/services/notification.service"; -import {Action, State, StateContext} from "@ngxs/store"; +import {Action, State, StateContext, Store} from "@ngxs/store"; import {Observable} from "rxjs"; export interface LicenseStateModel extends CrudStateModel<LicensesModel> { @@ -25,8 +25,9 @@ export interface LicenseStateModel extends CrudStateModel<LicensesModel> { }) export class LicenseState extends CrudState<LicensesModel> { constructor(protected apiService: ApiService, + protected store: Store, protected notificationService: NotificationService) { - super(apiService, notificationService); + super(apiService, store, notificationService); } defineState(): StateEnum { diff --git a/src/app/shared/organizational-unit.state.ts b/src/app/shared/organizational-unit.state.ts index 0ca560222c6a02927261a808da16a9cba35c00be..af9320762736083dd24190de0c0080d5e1776839 100644 --- a/src/app/shared/organizational-unit.state.ts +++ b/src/app/shared/organizational-unit.state.ts @@ -1,8 +1,9 @@ +import {AppStateModel} from "@app/app.state"; import {DepositStateModel} from "@app/deposit/deposit.state"; import {OrganizationalUnitsModel, SubmissionPoliciesModel} from "@app/generated-api"; import {CrudState, CrudStateModel} from "@app/shared/crud.state"; import {ApiResourceNameEnum} from "@app/shared/enums/api-resource-name.enum"; -import {AdminResourceApiEnum, ResourceApiEnum} from "@app/shared/enums/api.enum"; +import {AccessResourceApiEnum, AdminResourceApiEnum, ResourceApiEnum} from "@app/shared/enums/api.enum"; import {ModelAttributeEnum} from "@app/shared/enums/model-attribute.enum"; import {StateEnum} from "@app/shared/enums/state.enum"; import {CollectionTypedModel} from "@app/shared/models/collection-typed.model"; @@ -40,10 +41,10 @@ export interface OrganizationalUnitStateModel extends CrudStateModel<Organizatio export class OrganizationalUnitState extends CrudState<OrganizationalUnitsModel> { constructor(protected apiService: ApiService, + protected store: Store, protected notificationService: NotificationService, - private actions$: Actions, - private store: Store) { - super(apiService, notificationService); + private actions$: Actions) { + super(apiService, store, notificationService); zip(this.actions$.pipe(ofActionCompleted(OrgUnitAction.CreateSubResourceSubmissionPolicies)), this.actions$.pipe(ofActionCompleted(OrgUnitAction.DeleteSubResourceSubmissionPolicies))) .pipe( @@ -59,7 +60,11 @@ export class OrganizationalUnitState extends CrudState<OrganizationalUnitsModel> } defineUrlResource(): ResourceApiEnum { - return AdminResourceApiEnum.organizationalUnits; + const isLoggedId = this.store.selectSnapshot((state) => (state[StateEnum.application] as AppStateModel).isLoggedIn); + if (isLoggedId) { + return AdminResourceApiEnum.organizationalUnits; + } + return AccessResourceApiEnum.organizationalUnits; } defineState(): StateEnum { diff --git a/src/app/shared/preservation-policy.state.ts b/src/app/shared/preservation-policy.state.ts index 62644fba83d34c9fded3f68c023c4994b17668d0..b80a239da8e88e842159552410e4b83badb1d4fe 100644 --- a/src/app/shared/preservation-policy.state.ts +++ b/src/app/shared/preservation-policy.state.ts @@ -7,7 +7,7 @@ import {QueryParametersModel} from "@app/shared/models/query-parameters.model"; import {PreservationPolicyAction} from "@app/shared/preservation-policy.action"; import {ApiService} from "@app/shared/services/api.service"; import {NotificationService} from "@app/shared/services/notification.service"; -import {Action, State, StateContext} from "@ngxs/store"; +import {Action, State, StateContext, Store} from "@ngxs/store"; import {Observable} from "rxjs"; export interface PreservationPolicyStateModel extends CrudStateModel<PreservationPoliciesModel> { @@ -25,8 +25,9 @@ export interface PreservationPolicyStateModel extends CrudStateModel<Preservatio }) export class PreservationPolicyState extends CrudState<PreservationPoliciesModel> { constructor(protected apiService: ApiService, + protected store: Store, protected notificationService: NotificationService) { - super(apiService, notificationService); + super(apiService, store, notificationService); } defineState(): StateEnum { diff --git a/src/app/shared/submission-policy.state.ts b/src/app/shared/submission-policy.state.ts index b28cd88d424ccdeca44be645d3fb89233a456750..9ffd3f0735eb28477838c68614f7452f75a84dc7 100644 --- a/src/app/shared/submission-policy.state.ts +++ b/src/app/shared/submission-policy.state.ts @@ -7,7 +7,7 @@ import {QueryParametersModel} from "@app/shared/models/query-parameters.model"; import {ApiService} from "@app/shared/services/api.service"; import {NotificationService} from "@app/shared/services/notification.service"; import {SubmissionPolicyAction} from "@app/shared/submission-policy.action"; -import {Action, State, StateContext} from "@ngxs/store"; +import {Action, State, StateContext, Store} from "@ngxs/store"; import {Observable} from "rxjs"; export interface SubmissionPolicyStateModel extends CrudStateModel<SubmissionPoliciesModel> { @@ -25,8 +25,9 @@ export interface SubmissionPolicyStateModel extends CrudStateModel<SubmissionPol }) export class SubmissionPolicyState extends CrudState<SubmissionPoliciesModel> { constructor(protected apiService: ApiService, + protected store: Store, protected notificationService: NotificationService) { - super(apiService, notificationService); + super(apiService, store, notificationService); } defineUrlResource(): ResourceApiEnum {