fix problem with multer

This commit is contained in:
Guillaume Dorce 2022-08-27 17:05:38 +02:00
parent e5ba280381
commit f8466fb261
5 changed files with 28 additions and 15 deletions

3
.gitignore vendored
View File

@ -26,4 +26,5 @@ dist-ssr
*.sqlite
*.db
.env
.prisma/
.prisma/
public/uploads/

View File

@ -6,6 +6,7 @@ import deletePost from './deletePost';
import likePost from './likePost';
import unlikePost from './unlikePost';
import { verifyToken } from '@/controller/AuthController';
import { upload } from '@/controller/FileController';
const posts = Router();
@ -17,7 +18,7 @@ const getToken = (req: Request): string | undefined => {
const checkAuth = (req: Request, res: Response, next: NextFunction) => {
const token = getToken(req);
if (token === undefined) {
return res.status(401).send('No token provided');
return res.status(401).send({ error: 'No token provided' });
}
return verifyToken(token)
.then((decodedToken: number) => {
@ -25,15 +26,15 @@ const checkAuth = (req: Request, res: Response, next: NextFunction) => {
next();
})
.catch((error) => {
return res.status(401).send(error);
return res.status(401).send({ error });
});
};
posts.use(checkAuth);
posts.get('/', getPosts);
posts.post('/new', newPost);
posts.put('/edit/:id', putPost);
posts.post('/new', upload.single('image'), newPost);
posts.put('/edit/:id', upload.single('image'), putPost);
posts.delete('/delete/:id', deletePost);
posts.put('/like/:id', likePost);
posts.put('/unlike/:id', unlikePost);

View File

@ -32,20 +32,20 @@ const genToken = (userId: number) => {
});
};
const verifyToken = async (token: string): Promise<number> => {
const prismaToken = await prisma.token.findUnique({
where: { token },
});
if (prismaToken === null) {
throw 'Token not found';
}
const verifyToken = (token: string): Promise<number> => {
return new Promise((resolve, reject) => {
jwt.verify(token, config.JWT_SECRET, (err?, decoded?: jwt.JwtPayload | string) => {
jwt.verify(token, config.JWT_SECRET, async (err?, decoded?: jwt.JwtPayload | string) => {
if (err) {
reject(err);
reject('Unkown error');
} else if (decoded === undefined || typeof decoded === 'string' || decoded.id === undefined) {
reject('Invalid token');
} else {
const prismaToken = await prisma.token.findUnique({
where: { token },
});
if (prismaToken === null) {
throw 'Token not found';
}
const decodedToken: number = decoded.id;
resolve(decodedToken);
}

View File

@ -0,0 +1,11 @@
import multer from 'multer';
import path from 'path';
const storage = multer.diskStorage({
destination: path.join(__dirname, '../../public/uploads'),
filename: (req, file, cb) => {
cb(null, file.originalname);
},
});
export const upload = multer({ storage });

View File

@ -37,8 +37,8 @@ const checkExpiredTokenTimer = ms(process.env.CHECK_EXPIRED_TOKEN_EVERY || '60s'
const app = express();
app.use(cors());
app.use(json({ limit: '50mb' }));
app.use(urlencoded({ extended: true, limit: '50mb' }));
app.use(json());
app.use('/api', api);