160 lines
4.0 KiB
TypeScript
160 lines
4.0 KiB
TypeScript
import { Request, Response } from "express";
|
|
import { UserInterface } from "../models/user";
|
|
import UserServicePersonal from "../services/UserPersonalService";
|
|
import { createLoginCookie } from "../cookies/createCookies";
|
|
|
|
const UserProviderPersonal = new UserServicePersonal()
|
|
|
|
type userAccessType = {
|
|
_id: string,
|
|
emailVerified: boolean,
|
|
email: string,
|
|
s3Enabled: boolean,
|
|
}
|
|
|
|
interface RequestTypeRefresh extends Request {
|
|
user?: UserInterface,
|
|
encryptedToken?: string
|
|
}
|
|
|
|
interface RequestTypeFullUser extends Request {
|
|
user?: UserInterface,
|
|
encryptedToken?: string
|
|
}
|
|
|
|
interface RequestType extends Request {
|
|
user?: userAccessType,
|
|
encryptedToken?: string
|
|
}
|
|
|
|
class UserPersonalController {
|
|
|
|
constructor() {
|
|
|
|
}
|
|
|
|
addS3Storage = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user;
|
|
const s3Data = req.body;
|
|
const ipAddress = req.clientIp;
|
|
|
|
const {accessToken, refreshToken} = await UserProviderPersonal.addS3Storage(user, s3Data, ipAddress);
|
|
|
|
createLoginCookie(res, accessToken, refreshToken);
|
|
|
|
res.send();
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nAdd S3 Storage Error Personal User Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
removeS3Storage = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user;
|
|
const ipAddress = req.clientIp;
|
|
|
|
const {accessToken, refreshToken} = await UserProviderPersonal.removeS3Storage(user, ipAddress);
|
|
|
|
createLoginCookie(res, accessToken, refreshToken);
|
|
|
|
res.send();
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nRemove S3 Storage Error Personal User Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
removeS3Metadata = async(req: RequestType, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user;
|
|
|
|
await UserProviderPersonal.removeS3Metadata(user);
|
|
|
|
res.send();
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nRemove S3 Metadata Error Personal User Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
downloadPersonalFileList = async(req: RequestType, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user;
|
|
|
|
res.set('Content-Type', 'application/json');
|
|
res.setHeader('Content-disposition', 'attachment; filename= personal-data-list.json');
|
|
|
|
const personalFileList = await UserProviderPersonal.downloadPersonalFileList(user);
|
|
|
|
res.send(personalFileList);
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nDownload S3 Metadata Error Personal User Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
uploadPersonalFileList = async(req: RequestType, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user;
|
|
const fileList = req.body;
|
|
|
|
await UserProviderPersonal.uploadPersonalFileList(user, fileList);
|
|
|
|
res.send();
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nUpload S3 Metadata Error Personal User Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
}
|
|
|
|
export default UserPersonalController; |