Merge remote-tracking branch 'upstream/master' into feat/image-upload

This commit is contained in:
Daniel Cojocea
2024-07-03 15:38:25 -04:00
5 changed files with 30 additions and 11 deletions

View File

@@ -67,10 +67,8 @@ const handleAuthFulfilled = (state, action) => {
state.isLoading = false;
state.success = action.payload.success;
state.msg = action.payload.msg;
state.authToken = action.payload.data;
const decodedToken = jwtDecode(action.payload.data);
const user = { ...decodedToken };
state.user = user;
state.authToken = action.payload.data.token;
state.user = action.payload.data.user;
};
const handleAuthRejected = (state, action) => {
state.isLoading = false;

View File

@@ -37,6 +37,7 @@ const Register = () => {
lastname: "",
email: "",
password: "",
role: "",
});
useEffect(() => {
@@ -50,7 +51,7 @@ const Register = () => {
.catch((error) => {
console.log(error);
});
}, [navigate]);
}, [form, navigate]);
useEffect(() => {
const { error } = registerValidation.validate(form, {
@@ -76,8 +77,9 @@ const Register = () => {
const handleSubmit = async (e) => {
e.preventDefault();
try {
await registerValidation.validateAsync(form, { abortEarly: false });
const action = await dispatch(register(form));
const adminForm = { ...form, role: "admin" };
await registerValidation.validateAsync(adminForm, { abortEarly: false });
const action = await dispatch(register(adminForm));
if (action.meta.requestStatus === "fulfilled") {
const token = action.payload.data;

View File

@@ -22,6 +22,9 @@ const registerValidation = joi.object({
"string.min": "Password must be at least 8 characters",
"string.empty": "Password is required",
}),
role: joi.string().required().messages({
"string.empty": "Role is required",
}),
});
const loginValidation = joi.object({

View File

@@ -2,12 +2,24 @@ import { configureStore, combineReducers } from "@reduxjs/toolkit";
import monitorsReducer from "./Features/Monitors/monitorsSlice";
import authReducer from "./Features/Auth/authSlice";
import storage from "redux-persist/lib/storage";
import { persistReducer, persistStore } from "redux-persist";
import { persistReducer, persistStore, createTransform } from "redux-persist";
const authTransform = createTransform(
(inboundState) => {
const { profileImage, ...rest } = inboundState;
return rest;
},
// No transformation on rehydration
null,
// Only applies to auth
{ whitelist: ["auth"] }
);
const persistConfig = {
key: "root",
storage,
whitielist: ["auth", "monitors"],
transforms: [authTransform],
};
const rootReducer = combineReducers({

View File

@@ -55,7 +55,11 @@ const registerController = async (req, res, next) => {
service: SERVICE_NAME,
userId: newUser._id,
});
const token = issueToken(newUser._doc);
const userForToken = { ...newUser._doc };
delete userForToken.profileImage;
const token = issueToken(userForToken);
// Sending email to user with pre defined template
const template = registerTemplate("https://www.bluewavelabs.ca");
@@ -69,7 +73,7 @@ const registerController = async (req, res, next) => {
return res.status(200).json({
success: true,
msg: successMessages.AUTH_CREATE_USER,
data: token,
data: { user: newUser, token: token },
});
} catch (error) {
error.service = SERVICE_NAME;
@@ -108,7 +112,7 @@ const loginController = async (req, res, next) => {
return res.status(200).json({
success: true,
msg: successMessages.AUTH_LOGIN_USER,
data: token,
data: { user: userWithoutPassword, token: token },
});
} catch (error) {
error.status = 500;