Bilder hinzugefügt
This commit is contained in:
@@ -4,7 +4,6 @@ const getClubMembers = async(req, res) => {
|
||||
try {
|
||||
const { authcode: userToken } = req.headers;
|
||||
const { id: clubId } = req.params;
|
||||
console.log('[getClubMembers]', userToken, clubId);
|
||||
res.status(200).json(await MemberService.getClubMembers(userToken, clubId));
|
||||
} catch(error) {
|
||||
console.log('[getClubMembers] - Error: ', error);
|
||||
@@ -37,4 +36,34 @@ const setClubMembers = async (req, res) => {
|
||||
res.status(addResult.status || 500).json(addResult.response);
|
||||
}
|
||||
|
||||
export { getClubMembers, getWaitingApprovals, setClubMembers };
|
||||
const uploadMemberImage = async (req, res) => {
|
||||
try {
|
||||
const { clubId, memberId } = req.params;
|
||||
const { authcode: userToken } = req.headers;
|
||||
const result = await MemberService.uploadMemberImage(userToken, clubId, memberId, req.file.buffer);
|
||||
res.status(result.status).json(result.message ? { message: result.message } : { error: result.error });
|
||||
} catch (error) {
|
||||
console.error('[uploadMemberImage] - Error:', error);
|
||||
res.status(500).json({ error: 'Failed to upload image' });
|
||||
}
|
||||
};
|
||||
|
||||
const getMemberImage = async (req, res) => {
|
||||
console.log('[getMemberImage]');
|
||||
try {
|
||||
const { clubId, memberId } = req.params;
|
||||
const { authcode: userToken } = req.headers;
|
||||
console.log('-------------------->', clubId, memberId, userToken);
|
||||
const result = await MemberService.getMemberImage(userToken, clubId, memberId);
|
||||
if (result.status === 200) {
|
||||
res.sendFile(result.imagePath);
|
||||
} else {
|
||||
res.status(result.status).json({ error: result.error });
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('[getMemberImage] - Error:', error);
|
||||
res.status(500).json({ error: 'Failed to retrieve image' });
|
||||
}
|
||||
};
|
||||
|
||||
export { getClubMembers, getWaitingApprovals, setClubMembers, uploadMemberImage, getMemberImage };
|
||||
BIN
backend/images/members/9.jpg
Normal file
BIN
backend/images/members/9.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 80 KiB |
0
backend/images/members/dummy
Normal file
0
backend/images/members/dummy
Normal file
@@ -1,9 +1,15 @@
|
||||
import { getClubMembers, getWaitingApprovals, setClubMembers } from '../controllers/memberController.js';
|
||||
import { getClubMembers, getWaitingApprovals, setClubMembers, uploadMemberImage, getMemberImage } from '../controllers/memberController.js';
|
||||
import express from 'express';
|
||||
import { authenticate } from '../middleware/authMiddleware.js';
|
||||
import multer from 'multer';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const storage = multer.memoryStorage();
|
||||
const upload = multer({ storage: storage });
|
||||
|
||||
router.post('/:clubId/image/:memberId', authenticate, upload.single('image'), uploadMemberImage);
|
||||
router.get('/:clubId/image/:memberId', authenticate, getMemberImage);
|
||||
router.get('/:id', authenticate, getClubMembers);
|
||||
router.post('/:id', authenticate, setClubMembers);
|
||||
router.get('/notapproved/:id', authenticate, getWaitingApprovals);
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import UserClub from "../models/UserClub.js";
|
||||
import { checkAccess } from "../utils/userUtils.js";
|
||||
import { getUserByToken } from "../utils/userUtils.js";
|
||||
import HttpError from "../exceptions/HttpError.js";
|
||||
import Member from "../models/Member.js";
|
||||
import { response } from "express";
|
||||
import path from 'path';
|
||||
import fs from 'fs';
|
||||
import sharp from 'sharp';
|
||||
|
||||
class MemberService {
|
||||
async getApprovalRequests(userToken, clubId) {
|
||||
@@ -79,6 +80,45 @@ class MemberService {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async uploadMemberImage(userToken, clubId, memberId, imageBuffer) {
|
||||
try {
|
||||
console.log('------>', userToken, clubId, memberId, imageBuffer);
|
||||
await checkAccess(userToken, clubId);
|
||||
const member = await Member.findOne({ where: { id: memberId, clubId: clubId } });
|
||||
if (!member) {
|
||||
return { status: 404, error: 'Member not found in this club' };
|
||||
}
|
||||
const imagePath = path.join('images', 'members', `${memberId}.jpg`);
|
||||
await sharp(imageBuffer)
|
||||
.resize(600, 600)
|
||||
.jpeg({ quality: 80 })
|
||||
.toFile(imagePath);
|
||||
|
||||
return { status: 200, message: 'Image uploaded successfully' };
|
||||
} catch (error) {
|
||||
console.error('[uploadMemberImage] - Error:', error);
|
||||
return { status: 500, error: 'Failed to upload image' };
|
||||
}
|
||||
}
|
||||
|
||||
async getMemberImage(userToken, clubId, memberId) {
|
||||
try {
|
||||
await checkAccess(userToken, clubId);
|
||||
const member = await Member.findOne({ where: { id: memberId, clubId: clubId } });
|
||||
if (!member) {
|
||||
return { status: 404, error: 'Member not found in this club' };
|
||||
}
|
||||
const imagePath = path.join('images', 'members', `${memberId}.jpg`);
|
||||
if (!fs.existsSync(imagePath)) {
|
||||
return { status: 404, error: 'Image not found' };
|
||||
}
|
||||
return { status: 200, imagePath: path.resolve(imagePath) };
|
||||
} catch (error) {
|
||||
console.error('[getMemberImage] - Error:', error);
|
||||
return { status: 500, error: 'Failed to retrieve image' };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default new MemberService();
|
||||
Reference in New Issue
Block a user