Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
auth.store.js 1.98 KiB
import * as redux from 'redux';
import { ObjectFlags } from 'typescript';

let permissionStack = {};
/**
 * Retrive permission details for given module
 * @param {Object} state 
 * @param {Object} action 
 * @returns 
 */
const rolePermissionReducer = (state, action) => {
    switch (action.type) {
       /* case 'project': {
            if(state && state['project']) {
                delete state['project'];
            }
            return { ...state, project: permissionStack['project']};
        }
        case 'scheduleunit': {
            if(state && state['scheduleunit']) {
                delete state['scheduleunit'];
            }
            return { ...state, scheduleunit:permissionStack['scheduleunit']};
        }*/
        case 'loadpermission': {
            permissionStack = action.payload;
            const keys = Object. keys(permissionStack);
            for ( const key of keys) {
                state[key] = permissionStack[key];
            }
            return  { ...state};
        }
        case 'loadpermissionbyid': {
            permissionStack = action.payload;
            state['rolePermission'][action.module] = {...state['rolePermission'][action.module] , [action.id]: permissionStack[action.module][action.id] }
            return {...state};
        }

        case 'deletestore': {
            state = action.payload;
            return {...state};
        }
       
        default: {
            const actionType = action.type;
            if (permissionStack && permissionStack[actionType]) {
                //if(state && state[actionType]) {
                  //delete state[actionType];
               // }
                return { ...state, [actionType]:permissionStack[actionType]};
            }   else {
                return  { ...state, rolePermission: {}};
            } 
        }
    }
} 

const rootReducer = redux.combineReducers({
    userRolePermission: rolePermissionReducer
});

const AuthStore = redux.createStore(rootReducer);
export default AuthStore;