2019-08-09 19:13:18 +03:00
|
|
|
///
|
2020-02-20 10:26:43 +02:00
|
|
|
/// Copyright © 2016-2020 The Thingsboard Authors
|
2019-08-09 19:13:18 +03:00
|
|
|
///
|
|
|
|
|
/// Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
|
/// you may not use this file except in compliance with the License.
|
|
|
|
|
/// You may obtain a copy of the License at
|
|
|
|
|
///
|
|
|
|
|
/// http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
///
|
|
|
|
|
/// Unless required by applicable law or agreed to in writing, software
|
|
|
|
|
/// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
|
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
|
/// See the License for the specific language governing permissions and
|
|
|
|
|
/// limitations under the License.
|
|
|
|
|
///
|
|
|
|
|
|
|
|
|
|
import { AuthPayload, AuthState } from './auth.models';
|
|
|
|
|
import { AuthActions, AuthActionTypes } from './auth.actions';
|
|
|
|
|
|
|
|
|
|
const emptyUserAuthState: AuthPayload = {
|
|
|
|
|
authUser: null,
|
|
|
|
|
userDetails: null,
|
2019-11-15 12:22:14 +02:00
|
|
|
userTokenAccessEnabled: false,
|
|
|
|
|
forceFullscreen: false,
|
|
|
|
|
allowedDashboardIds: []
|
2019-08-09 19:13:18 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const initialState: AuthState = {
|
|
|
|
|
isAuthenticated: false,
|
|
|
|
|
isUserLoaded: false,
|
2019-11-15 12:22:14 +02:00
|
|
|
lastPublicDashboardId: null,
|
2019-08-09 19:13:18 +03:00
|
|
|
...emptyUserAuthState
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export function authReducer(
|
|
|
|
|
state: AuthState = initialState,
|
|
|
|
|
action: AuthActions
|
|
|
|
|
): AuthState {
|
|
|
|
|
switch (action.type) {
|
|
|
|
|
case AuthActionTypes.AUTHENTICATED:
|
|
|
|
|
return { ...state, isAuthenticated: true, ...action.payload };
|
|
|
|
|
|
|
|
|
|
case AuthActionTypes.UNAUTHENTICATED:
|
|
|
|
|
return { ...state, isAuthenticated: false, ...emptyUserAuthState };
|
|
|
|
|
|
|
|
|
|
case AuthActionTypes.LOAD_USER:
|
|
|
|
|
return { ...state, ...action.payload, isAuthenticated: action.payload.isUserLoaded ? state.isAuthenticated : false,
|
|
|
|
|
...action.payload.isUserLoaded ? {} : emptyUserAuthState };
|
|
|
|
|
|
|
|
|
|
case AuthActionTypes.UPDATE_USER_DETAILS:
|
|
|
|
|
return { ...state, ...action.payload};
|
|
|
|
|
|
2019-11-15 12:22:14 +02:00
|
|
|
case AuthActionTypes.UPDATE_LAST_PUBLIC_DASHBOARD_ID:
|
|
|
|
|
return { ...state, ...action.payload};
|
|
|
|
|
|
2019-08-09 19:13:18 +03:00
|
|
|
default:
|
|
|
|
|
return state;
|
|
|
|
|
}
|
|
|
|
|
}
|