aegis-auth
Version:
A credentials-based auth solution for Next.js (and other Node projects) with IP rate-limiting, account lockouts, and sessions in DB.
43 lines • 1.36 kB
JavaScript
import { ErrorCodes } from "../types";
import { logoutUserSchema } from "../validations";
import { revokeSession } from "./revokeSession";
export async function logoutUser(context, input) {
const { config } = context;
try {
const validatedInput = logoutUserSchema.safeParse(input);
if (!validatedInput.success) {
config.logger.securityEvent("INVALID_INPUT", {
route: "logoutUser",
});
return {
success: false,
status: 400,
message: "Invalid input provided",
code: ErrorCodes.INVALID_INPUT,
};
}
const { sessionToken } = validatedInput.data;
const result = await revokeSession(context, { sessionToken });
if (!result.success) {
return result;
}
return {
success: true,
status: 200,
message: "User logged out",
};
}
catch (error) {
config.logger.error("Error during logout", {
error,
sessionToken: input.sessionToken,
});
return {
success: false,
status: 500,
message: "An unexpected error occurred.",
code: ErrorCodes.INTERNAL_SERVER_ERROR,
};
}
}
//# sourceMappingURL=logoutUser.js.map