Return user and Token instead of decoding token. Added transform to not store image in redux store

This commit is contained in:
Alex Holliday committed 2024-07-03 12:20:30 -07:00
1 parent 440716b021
commit f97aa1ca8c
4 files changed
+26 -18

No files matched your search

+2 -4
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;
+13 -1
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({
+7 -3
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;
+4 -10
View File
@@ -42,9 +42,7 @@ const insertUser = async (req, res) => {
}
const newUser = new UserModel(userData);
await newUser.save();
return await UserModel.findOne({ _id: newUser._id })
.select("-password")
.select("-profileImage"); // .select() doesn't work with create, need to save then find
return await UserModel.findOne({ _id: newUser._id }).select("-password"); // .select() doesn't work with create, need to save then find
} catch (error) {
if (error.code === DUPLICATE_KEY_CODE) {
throw new Error(errorMessages.DB_USER_EXISTS);
@@ -67,10 +65,8 @@ const insertUser = async (req, res) => {
const getUserByEmail = async (req, res) => {
try {
// Need the password to be able to compare, removed .select()
// PW hash is removed in controller
const user = await UserModel.findOne({ email: req.body.email }).select(
"-profileImage"
);
// We can strip the hash before returing the user
const user = await UserModel.findOne({ email: req.body.email });
if (user) {
return user;
} else {
@@ -106,9 +102,7 @@ const updateUser = async (req, res) => {
candidateUserId,
candidateUser,
{ new: true } // Returns updated user instead of pre-update user
)
.select("-password")
.select("-profileImage");
).select("-password");
return updatedUser;
} catch (error) {
throw error;