fix problem with multer
This commit is contained in:
parent
e5ba280381
commit
f8466fb261
|
|
@ -27,3 +27,4 @@ dist-ssr
|
||||||
*.db
|
*.db
|
||||||
.env
|
.env
|
||||||
.prisma/
|
.prisma/
|
||||||
|
public/uploads/
|
||||||
|
|
@ -6,6 +6,7 @@ import deletePost from './deletePost';
|
||||||
import likePost from './likePost';
|
import likePost from './likePost';
|
||||||
import unlikePost from './unlikePost';
|
import unlikePost from './unlikePost';
|
||||||
import { verifyToken } from '@/controller/AuthController';
|
import { verifyToken } from '@/controller/AuthController';
|
||||||
|
import { upload } from '@/controller/FileController';
|
||||||
|
|
||||||
const posts = Router();
|
const posts = Router();
|
||||||
|
|
||||||
|
|
@ -17,7 +18,7 @@ const getToken = (req: Request): string | undefined => {
|
||||||
const checkAuth = (req: Request, res: Response, next: NextFunction) => {
|
const checkAuth = (req: Request, res: Response, next: NextFunction) => {
|
||||||
const token = getToken(req);
|
const token = getToken(req);
|
||||||
if (token === undefined) {
|
if (token === undefined) {
|
||||||
return res.status(401).send('No token provided');
|
return res.status(401).send({ error: 'No token provided' });
|
||||||
}
|
}
|
||||||
return verifyToken(token)
|
return verifyToken(token)
|
||||||
.then((decodedToken: number) => {
|
.then((decodedToken: number) => {
|
||||||
|
|
@ -25,15 +26,15 @@ const checkAuth = (req: Request, res: Response, next: NextFunction) => {
|
||||||
next();
|
next();
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
return res.status(401).send(error);
|
return res.status(401).send({ error });
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
posts.use(checkAuth);
|
posts.use(checkAuth);
|
||||||
|
|
||||||
posts.get('/', getPosts);
|
posts.get('/', getPosts);
|
||||||
posts.post('/new', newPost);
|
posts.post('/new', upload.single('image'), newPost);
|
||||||
posts.put('/edit/:id', putPost);
|
posts.put('/edit/:id', upload.single('image'), putPost);
|
||||||
posts.delete('/delete/:id', deletePost);
|
posts.delete('/delete/:id', deletePost);
|
||||||
posts.put('/like/:id', likePost);
|
posts.put('/like/:id', likePost);
|
||||||
posts.put('/unlike/:id', unlikePost);
|
posts.put('/unlike/:id', unlikePost);
|
||||||
|
|
|
||||||
|
|
@ -32,20 +32,20 @@ const genToken = (userId: number) => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const verifyToken = async (token: string): Promise<number> => {
|
const verifyToken = (token: string): Promise<number> => {
|
||||||
const prismaToken = await prisma.token.findUnique({
|
|
||||||
where: { token },
|
|
||||||
});
|
|
||||||
if (prismaToken === null) {
|
|
||||||
throw 'Token not found';
|
|
||||||
}
|
|
||||||
return new Promise((resolve, reject) => {
|
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) {
|
if (err) {
|
||||||
reject(err);
|
reject('Unkown error');
|
||||||
} else if (decoded === undefined || typeof decoded === 'string' || decoded.id === undefined) {
|
} else if (decoded === undefined || typeof decoded === 'string' || decoded.id === undefined) {
|
||||||
reject('Invalid token');
|
reject('Invalid token');
|
||||||
} else {
|
} else {
|
||||||
|
const prismaToken = await prisma.token.findUnique({
|
||||||
|
where: { token },
|
||||||
|
});
|
||||||
|
if (prismaToken === null) {
|
||||||
|
throw 'Token not found';
|
||||||
|
}
|
||||||
const decodedToken: number = decoded.id;
|
const decodedToken: number = decoded.id;
|
||||||
resolve(decodedToken);
|
resolve(decodedToken);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 });
|
||||||
|
|
@ -37,8 +37,8 @@ const checkExpiredTokenTimer = ms(process.env.CHECK_EXPIRED_TOKEN_EVERY || '60s'
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
app.use(cors());
|
app.use(cors());
|
||||||
|
app.use(json({ limit: '50mb' }));
|
||||||
app.use(urlencoded({ extended: true, limit: '50mb' }));
|
app.use(urlencoded({ extended: true, limit: '50mb' }));
|
||||||
app.use(json());
|
|
||||||
|
|
||||||
app.use('/api', api);
|
app.use('/api', api);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue