Added basic RBAC component BOD-232

This commit is contained in:
Patrick Fic
2020-08-10 16:07:30 -07:00
parent 0df61a2701
commit 83c83ac06e
52 changed files with 670 additions and 288 deletions

View File

@@ -98,3 +98,8 @@ export const validatePasswordResetFailure = (error) => ({
type: UserActionTypes.VALIDATE_PASSWORD_RESET_FAILURE,
payload: error,
});
export const setAuthlevel = (authlevel) => ({
type: UserActionTypes.SET_AUTH_LEVEL,
payload: authlevel,
});

View File

@@ -14,6 +14,7 @@ const INITIAL_STATE = {
error: null,
success: false,
},
authLevel: 0,
};
const userReducer = (state = INITIAL_STATE, action) => {
@@ -84,6 +85,8 @@ const userReducer = (state = INITIAL_STATE, action) => {
...state,
error: action.payload,
};
case UserActionTypes.SET_AUTH_LEVEL:
return { ...state, authLevel: action.payload };
default:
return state;
}

View File

@@ -23,6 +23,7 @@ import {
sendPasswordResetSuccess,
validatePasswordResetSuccess,
validatePasswordResetFailure,
setAuthlevel,
} from "./user.actions";
import UserActionTypes from "./user.types";
@@ -199,6 +200,26 @@ export function* validatePasswordResetStart({ payload: { password, code } }) {
}
}
export function* onSetShopDetails() {
yield takeLatest(
UserActionTypes.SET_SHOP_DETAILS,
SetAuthLevelFromShopDetails
);
}
export function* SetAuthLevelFromShopDetails({ payload }) {
try {
const userEmail = yield select((state) => state.user.currentUser.email);
const authRecord = payload.associations.filter(
(a) => a.useremail === userEmail
);
yield put(setAuthlevel(authRecord[0] ? authRecord[0].authlevel : 0));
} catch (error) {
yield put(signInFailure(error.message));
}
}
export function* userSagas() {
yield all([
call(onEmailSignInStart),
@@ -210,5 +231,6 @@ export function* userSagas() {
call(onSignInSuccess),
call(onSendPasswordResetStart),
call(onValidatePasswordResetStart),
call(onSetShopDetails),
]);
}

View File

@@ -26,3 +26,8 @@ export const selectPasswordReset = createSelector(
[selectUser],
(user) => user.passwordreset
);
export const selectAuthLevel = createSelector(
[selectUser],
(user) => user.authLevel
);

View File

@@ -26,5 +26,6 @@ const UserActionTypes = {
VALIDATE_PASSWORD_RESET_START: "VALIDATE_PASSWORD_RESET_START",
VALIDATE_PASSWORD_RESET_SUCCESS: "VALIDATE_PASSWORD_RESET_SUCCESS",
VALIDATE_PASSWORD_RESET_FAILURE: "VALIDATE_PASSWORD_RESET_FAILURE",
SET_AUTH_LEVEL: "SET_AUTH_LEVEL",
};
export default UserActionTypes;