🖥️ Onlyoffice connector moved into the TwakeDrive repository (#366)

This commit is contained in:
Montassar Ghanmy
2024-02-27 10:35:01 +01:00
committed by GitHub
parent ff74104a1b
commit dcb6fa1c36
40 changed files with 1557 additions and 3 deletions
@@ -0,0 +1,70 @@
import { CREDENTIALS_SECRET } from '@/config';
import loggerService from '@/services/logger.service';
import userService from '@/services/user.service';
import { NextFunction, Request, Response } from 'express';
import jwt from 'jsonwebtoken';
interface RequestQuery {
mode: string;
company_id: string;
preview: string;
token: string;
file_id: string;
}
export default async (req: Request<{}, {}, {}, RequestQuery>, res: Response, next: NextFunction) => {
try {
const token = req.query?.token;
if (!token && req.cookies.token) {
try {
const userJwt = jwt.verify(req.cookies.token, CREDENTIALS_SECRET) as any;
if (userJwt.id) {
req.user = userJwt;
next();
return;
}
} catch (error) {
loggerService.error('invalid token', error);
res.clearCookie('token');
}
}
if (!token) {
return res.status(401).send({ message: 'invalid token' });
}
const user = await userService.getCurrentUser(token);
if (!user || !user.id) {
return res.status(401).json({ message: 'invalid token' });
}
res.cookie(
'token',
jwt.sign(
{
id: user.id,
username: user.username,
email: user.email,
thumbnail: user.thumbnail,
picture: user.picture,
preferences: {
locale: user?.preferences?.locale,
},
},
CREDENTIALS_SECRET,
{
expiresIn: 60 * 60 * 24 * 30,
},
),
{ maxAge: 60 * 60 * 24 * 30 },
);
req.user = user;
next();
} catch (error) {
console.error(error);
return res.status(500).send({ message: 'invalid token' });
}
};
@@ -0,0 +1,15 @@
import loggerService from '@/services/logger.service';
import { NextFunction, Request, Response } from 'express';
export default (error: Error & { status?: number }, req: Request, res: Response, next: NextFunction): void => {
try {
const status: number = error.status || 500;
const message: string = error.message || 'something went wrong';
loggerService.error(`[${req.method}] ${req.path} >> StatusCode:: ${status}, Message:: ${message}`);
res.status(status).json({ message });
} catch (error) {
next(error);
}
};
@@ -0,0 +1,16 @@
import { NextFunction, Request, Response } from 'express';
interface RequestQuery {
company_id: string;
token: string;
}
export default (req: Request<{}, {}, {}, RequestQuery>, res: Response, next: NextFunction) => {
const { company_id } = req.query;
if (!company_id) {
return res.status(400).json({ message: 'invalid request' });
}
next();
};