Bilder hinzugefügt

This commit is contained in:
Torsten Schulz
2024-09-11 17:57:56 +02:00
parent 543a2f9259
commit 3b1021f7c8
7 changed files with 250 additions and 56 deletions

View File

@@ -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 };

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

View 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);

View File

@@ -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();