72 lines
1.7 KiB
TypeScript
72 lines
1.7 KiB
TypeScript
import { Request, Response } from "express";
|
|
import AppError from "../errors/AppError";
|
|
|
|
import AuthUserService from "../services/UserServices/AuthUserService";
|
|
import { SendRefreshToken } from "../helpers/SendRefreshToken";
|
|
import { RefreshTokenService } from "../services/AuthServices/RefreshTokenService";
|
|
|
|
import createOrUpdateOnlineUserService from "../services/UserServices/CreateOrUpdateOnlineUserService";
|
|
import { removeUserFromOlineList } from "../helpers/removeUserFromOnlineList";
|
|
|
|
// const usersSocket = require("./../libs/socket");
|
|
const usersSocket = require("../libs/socket");
|
|
|
|
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 userOnline = await createOrUpdateOnlineUserService({
|
|
userId: serializedUser.id,
|
|
status: "online"
|
|
});
|
|
|
|
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 remove = async (
|
|
req: Request,
|
|
res: Response
|
|
): Promise<Response> => {
|
|
res.clearCookie("jrt");
|
|
|
|
const { userId } = req.params;
|
|
|
|
removeUserFromOlineList(userId);
|
|
|
|
const userOnline = await createOrUpdateOnlineUserService({
|
|
userId,
|
|
status: "offline"
|
|
});
|
|
|
|
return res.send();
|
|
};
|