Create wt-odlux directory
[ccsdk/features.git] / sdnr / wt-odlux / odlux / framework / src / middleware / policies.ts
1 /**
2  * ============LICENSE_START========================================================================
3  * ONAP : ccsdk feature sdnr wt odlux
4  * =================================================================================================
5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
6  * =================================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software distributed under the License
13  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14  * or implied. See the License for the specific language governing permissions and limitations under
15  * the License.
16  * ============LICENSE_END==========================================================================
17  */
18
19 import authenticationService from '../services/authenticationService';
20
21 import { UpdateUser, UpdatePolicies } from '../actions/authentication';
22 import { Dispatch } from '../flux/store';
23 import { MiddlewareApi } from '../store/applicationStore';
24
25 function updatePoliciesMiddleware() {
26   return ({ dispatch, getState }: MiddlewareApi) =>
27     (next : Dispatch) : Dispatch =>
28       action => {
29         const { framework: { applicationState: { enablePolicy } } } = getState() || { framework: { applicationState: { } } };
30         if (enablePolicy && action instanceof UpdateUser) {
31           next(action);
32           authenticationService.getAccessPolicies().then((policies) => dispatch(new UpdatePolicies(policies||undefined)));
33           return action;
34         }
35         if (enablePolicy === false) next(new UpdatePolicies());
36         return next(action);
37       };
38 }
39
40 export const updatePolicies = updatePoliciesMiddleware();
41 export default updatePolicies;