Files
myDrive/backend/controllers/user.ts
T

158 lines
3.2 KiB
TypeScript

import env from "../enviroment/env";
import UserService from "../services/UserService";
import { Request, Response } from "express";
import { UserInterface } from "../models/user";
const UserProvider = new UserService();
interface RequestType extends Request {
user?: UserInterface,
auth?: any,
busboy?: any,
encryptedToken?: any
}
class UserController {
constructor() {
}
getUser = async(req: RequestType, res: Response) => {
try {
const user = req.user!;
user.tokens = [];
user.tempTokens = [];
user.password = '';
user.privateKey = undefined;
user.publicKey = undefined;
res.send(user)
} catch (e) {
res.status(500).send(e);
}
}
login = async(req: RequestType, res: Response) => {
try {
const body = req.body;
const {user, token} = await UserProvider.login(body);
user.tokens = [];
user.tempTokens = [];
user.password = '';
user.privateKey = undefined;
user.publicKey = undefined;
res.status(200).send({user, token});
} catch (e) {
const code = e.code || 500;
console.log(e);
res.status(code).send(e);
}
}
logout = async(req: RequestType, res: Response) => {
if (!req.user) {
return;
}
try {
const user = req.user;
const token = req.encryptedToken;
await UserProvider.logout(user, token);
res.send();
} catch (e) {
res.status(500).send(e);
}
}
logoutAll = async(req: RequestType, res: Response) => {
try {
const user = req.user;
await UserProvider.logoutAll(user!);
res.send();
} catch (e) {
res.status(500).send(e);
}
}
createUser = async(req: RequestType, res: Response) => {
if (env.createAcctBlocked) {
return await res.status(401).send()
}
try {
const {user, token} = await UserProvider.create(req.body);
user.tokens = [];
user.tempTokens = []
user.password = '';
user.privateKey = undefined;
user.publicKey = undefined;
res.status(201).send({user, token})
} catch (e) {
const code = e.code || 500;
console.log(e);
res.status(code).send(e);
}
}
changePassword = async(req: RequestType, res: Response) => {
if (!req.user) {
return;
}
try {
const user = req.user;
const oldPassword = req.body.oldPassword;
const newPassword = req.body.newPassword;
const newToken = await UserProvider.changePassword(user, oldPassword, newPassword);
res.send(newToken);
} catch (e) {
const code = e.code || 500;
console.log(e);
res.status(code).send(e);
}
}
}
export default UserController;