removed double login prevention

This commit is contained in:
Alex Holliday
2024-08-15 11:39:45 -07:00
parent 53ea08fc48
commit ae46527965
7 changed files with 26 additions and 75 deletions

View File

@@ -78,28 +78,10 @@ function Sidebar() {
*
*/
const logout = async () => {
try {
// Make request to BE to remove JWT from user
await axiosInstance.post(
"/auth/logout",
{ email: authState.user.email },
{
headers: {
Authorization: `Bearer ${authState.authToken}`,
"Content-Type": "application/json",
},
}
);
// Clear auth state
dispatch(clearAuthState());
dispatch(clearUptimeMonitorState());
navigate("/login");
} catch (error) {
createToast({
body: error.message,
});
}
// Clear auth state
dispatch(clearAuthState());
dispatch(clearUptimeMonitorState());
navigate("/login");
};
/**

View File

@@ -160,13 +160,12 @@ const Monitors = () => {
// Bool for sorting arrow
const [isSorted, setIsSorted] = useState(false);
// Function to handle sorting on click of status text
const handleSort = () => {
setSortOrder(prevOrder => prevOrder * -1);
setSortOrder((prevOrder) => prevOrder * -1);
// Sort existing monitors with start of ascending order
const monitors = [...monitorState.monitors].sort(a => {
const monitors = [...monitorState.monitors].sort((a) => {
return a.status ? -1 * sortOrder : 1 * sortOrder;
});
@@ -182,9 +181,21 @@ const Monitors = () => {
{
id: 2,
name: (
<Box width="max-content" onClick={handleSort} style={{ cursor: "pointer" }}>
<Box
width="max-content"
onClick={handleSort}
style={{ cursor: "pointer" }}
>
Status
{isSorted ? <span>{sortOrder === -1 ? <ArrowUpwardRoundedIcon /> : <ArrowDownwardRoundedIcon />}</span> : null}
{isSorted ? (
<span>
{sortOrder === -1 ? (
<ArrowUpwardRoundedIcon />
) : (
<ArrowDownwardRoundedIcon />
)}
</span>
) : null}
</Box>
),
},
@@ -195,6 +206,7 @@ const Monitors = () => {
rows: [],
};
console.log(monitorState.monitors);
// Render out sorted monitors/default monitors
data.rows = sortedMonitors.map((monitor, idx) => {
const params = {

View File

@@ -136,10 +136,6 @@ const loginController = async (req, res, next) => {
throw new Error(errorMessages.AUTH_INCORRECT_PASSWORD);
}
if (user.authToken) {
throw new Error(errorMessages.AUTH_ALREADY_LOGGED_IN);
}
// Remove password from user object. Should this be abstracted to DB layer?
const userWithoutPassword = { ...user._doc };
delete userWithoutPassword.password;
@@ -164,23 +160,6 @@ const loginController = async (req, res, next) => {
}
};
const logoutController = async (req, res, next) => {
try {
// Get user
const { email } = req.body;
const userToLogout = await req.db.getUserByEmail(email);
userToLogout.authToken = null;
await userToLogout.save();
return res
.status(200)
.json({ success: true, msg: successMessages.AUTH_LOGOUT_USER });
} catch (error) {
error.service = SERVICE_NAME;
next(error);
}
};
const userEditController = async (req, res, next) => {
try {
await editUserParamValidation.validateAsync(req.params);
@@ -524,7 +503,6 @@ const getAllUsersController = async (req, res) => {
module.exports = {
registerController,
loginController,
logoutController,
userEditController,
inviteController,
inviteVerifyController,

View File

@@ -34,27 +34,11 @@ const verifyJWT = (req, res, next) => {
const parsedToken = token.slice(TOKEN_PREFIX.length, token.length);
// Verify the token's authenticity
jwt.verify(parsedToken, process.env.JWT_SECRET, async (err, decoded) => {
jwt.verify(parsedToken, process.env.JWT_SECRET, (err, decoded) => {
if (err) {
try {
const userId = jwt.decode(parsedToken)._id;
await req.db.logoutUser(userId);
logger.error(errorMessages.INVALID_AUTH_TOKEN, {
service: SERVICE_NAME,
});
return res
.status(401)
.json({ success: false, msg: errorMessages.INVALID_AUTH_TOKEN });
} catch (error) {
logger.error(errorMessages.UNKNOWN_ERROR, {
service: SERVICE_NAME,
error: error,
});
error.status = 401;
error.service = SERVICE_NAME;
next(error);
return;
}
return res
.status(401)
.json({ success: false, msg: errorMessages.INVALID_AUTH_TOKEN });
}
//Add the user to the request object for use in the route
req.user = decoded;

View File

@@ -40,9 +40,6 @@ const UserSchema = mongoose.Schema(
default: "user",
enum: ["user", "admin"],
},
authToken: {
type: String,
},
},
{
timestamps: true,

View File

@@ -24,7 +24,6 @@ const {
//Auth routes
router.post("/register", upload.single("profileImage"), registerController);
router.post("/login", loginController);
router.post("/logout", logoutController);
router.put(
"/user/:userId",
upload.single("profileImage"),

View File

@@ -7,7 +7,6 @@ const errorMessages = {
UNAUTHORIZED: "Unauthorized access",
AUTH_ADMIN_EXISTS: "Admin already exists",
AUTH_INVITE_NOT_FOUND: "Invite not found",
AUTH_ALREADY_LOGGED_IN: "User already logged in",
//Error handling middleware
UNKNOWN_SERVICE: "Unknown service",