carga
This commit is contained in:
81
backend/src/controllers/SessionController.ts
Normal file
81
backend/src/controllers/SessionController.ts
Normal file
@@ -0,0 +1,81 @@
|
||||
import { Request, Response } from "express";
|
||||
import AppError from "../errors/AppError";
|
||||
import { getIO } from "../libs/socket";
|
||||
|
||||
import AuthUserService from "../services/UserServices/AuthUserService";
|
||||
import { SendRefreshToken } from "../helpers/SendRefreshToken";
|
||||
import { RefreshTokenService } from "../services/AuthServices/RefreshTokenService";
|
||||
import FindUserFromToken from "../services/AuthServices/FindUserFromToken";
|
||||
import User from "../models/User";
|
||||
|
||||
export const store = async (req: Request, res: Response): Promise<Response> => {
|
||||
const { email, password } = req.body;
|
||||
|
||||
const { token, serializedUser, refreshToken } = await AuthUserService({
|
||||
email,
|
||||
password
|
||||
});
|
||||
|
||||
SendRefreshToken(res, refreshToken);
|
||||
|
||||
const io = getIO();
|
||||
io.to(`user-${serializedUser.id}`).emit(`company-${serializedUser.companyId}-auth`, {
|
||||
action: "update",
|
||||
user: {
|
||||
id: serializedUser.id,
|
||||
email: serializedUser.email,
|
||||
companyId: serializedUser.companyId
|
||||
}
|
||||
});
|
||||
|
||||
return res.status(200).json({
|
||||
token,
|
||||
user: serializedUser
|
||||
});
|
||||
};
|
||||
|
||||
export const update = async (
|
||||
req: Request,
|
||||
res: Response
|
||||
): Promise<Response> => {
|
||||
|
||||
const token: string = req.cookies.jrt;
|
||||
|
||||
if (!token) {
|
||||
throw new AppError("ERR_SESSION_EXPIRED", 401);
|
||||
}
|
||||
|
||||
const { user, newToken, refreshToken } = await RefreshTokenService(
|
||||
res,
|
||||
token
|
||||
);
|
||||
|
||||
SendRefreshToken(res, refreshToken);
|
||||
|
||||
return res.json({ token: newToken, user });
|
||||
};
|
||||
|
||||
export const me = async (req: Request, res: Response): Promise<Response> => {
|
||||
const token: string = req.cookies.jrt;
|
||||
const user = await FindUserFromToken(token);
|
||||
const { id, profile, super: superAdmin } = user;
|
||||
|
||||
if (!token) {
|
||||
throw new AppError("ERR_SESSION_EXPIRED", 401);
|
||||
}
|
||||
|
||||
return res.json({ id, profile, super: superAdmin });
|
||||
};
|
||||
|
||||
export const remove = async (
|
||||
req: Request,
|
||||
res: Response
|
||||
): Promise<Response> => {
|
||||
const { id } = req.user;
|
||||
const user = await User.findByPk(id);
|
||||
await user.update({ online: false });
|
||||
|
||||
res.clearCookie("jrt");
|
||||
|
||||
return res.send();
|
||||
};
|
||||
Reference in New Issue
Block a user