move to public repo
This commit is contained in:
51
server/src/controllers/auth.controller.ts
Normal file
51
server/src/controllers/auth.controller.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
import type { Request, Response } from "express";
|
||||
import type { User } from "@types";
|
||||
import xss from "xss";
|
||||
|
||||
export const getCurrentSession = async (req: Request, res: Response) => {
|
||||
try {
|
||||
if (req.session.user) {
|
||||
res.status(200).json(req.session.user);
|
||||
} else {
|
||||
res.status(404).end();
|
||||
}
|
||||
} catch (err: unknown) {
|
||||
console.log(err);
|
||||
res.status(500).end();
|
||||
}
|
||||
};
|
||||
|
||||
export const guestSession = async (req: Request, res: Response) => {
|
||||
try {
|
||||
const name = xss(req.body.name);
|
||||
|
||||
if (!req.session.user || !req.session.user?.id) {
|
||||
// create guest session
|
||||
const user: User = {
|
||||
id: req.session.id,
|
||||
name
|
||||
};
|
||||
req.session.user = user;
|
||||
} else if (typeof req.session.user.id === "string" && req.session.user.name !== name) {
|
||||
// update guest name
|
||||
req.session.user.name = name;
|
||||
}
|
||||
req.session.save(() => {
|
||||
res.status(201).json(req.session.user);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
console.log(err);
|
||||
res.status(500).end();
|
||||
}
|
||||
};
|
||||
|
||||
export const logoutSession = async (req: Request, res: Response) => {
|
||||
try {
|
||||
req.session.destroy(() => {
|
||||
res.status(204).end();
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
console.log(err);
|
||||
res.status(500).end();
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user