Fixed members handling

This commit is contained in:
Torsten Schulz
2024-09-25 17:23:01 +02:00
parent 3181a6628d
commit edcfd8130a
6 changed files with 56 additions and 37 deletions

View File

@@ -1,10 +1,14 @@
import MemberService from "../services/memberService.js";
const getClubMembers = async(req, res) => {
console.log('----->getClubMembers');
try {
const { authcode: userToken } = req.headers;
const { id: clubId } = req.params;
res.status(200).json(await MemberService.getClubMembers(userToken, clubId));
const { id: clubId, showAll } = req.params;
if (showAll === null) {
showAll = false;
}
res.status(200).json(await MemberService.getClubMembers(userToken, clubId, showAll));
} catch(error) {
console.log('[getClubMembers] - Error: ', error);
res.status(500).json({ error: 'systemerror' });
@@ -12,6 +16,7 @@ const getClubMembers = async(req, res) => {
}
const getWaitingApprovals = async(req, res) => {
console.log('----->setClubMembers');
try {
console.log('[getWaitingApprovals] - Start');
const { id: clubId } = req.params;
@@ -29,11 +34,16 @@ const getWaitingApprovals = async(req, res) => {
}
const setClubMembers = async (req, res) => {
const { id: memberId, firstname: firstName, lastname: lastName, street, city, birthdate, phone, email, active } = req.body;
const { id: clubId } = req.params;
const { authcode: userToken } = req.headers;
const addResult = await MemberService.setClubMember(userToken, clubId, memberId, firstName, lastName, street, city, birthdate, phone, email, active);
res.status(addResult.status || 500).json(addResult.response);
try {
const { id: memberId, firstname: firstName, lastname: lastName, street, city, birthdate, phone, email, active } = req.body;
const { id: clubId } = req.params;
const { authcode: userToken } = req.headers;
const addResult = await MemberService.setClubMember(userToken, clubId, memberId, firstName, lastName, street, city, birthdate, phone, email, active);
res.status(addResult.status || 500).json(addResult.response);
} catch (error) {
console.error('[setClubMembers] - Error:', error);
res.status(500).json({ error: 'Failed to upload image' });
}
}
const uploadMemberImage = async (req, res) => {

View File

@@ -8,10 +8,10 @@ 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.post('/image/:clubId/:memberId', authenticate, upload.single('image'), uploadMemberImage);
router.get('/image/:clubId/:memberId', authenticate, getMemberImage);
router.get('/get/:id/:showAll', authenticate, getClubMembers);
router.post('/set/:id', authenticate, setClubMembers);
router.get('/notapproved/:id', authenticate, getWaitingApprovals);
export default router;

View File

@@ -17,16 +17,22 @@ class MemberService {
where: {
clubId: clubId,
approved: false,
userId: user.id
userId: user.id
}
});
});
}
getClubMembers(userToken, clubId) {
getClubMembers(userToken, clubId, showAll) {
console.log('[getClubMembers] - Check access');
checkAccess(userToken, clubId);
console.log('[getClubMembers] - Find members');
return Member.findAll({ where: { clubId: clubId } })
const where = {
clubId: clubId
};
if (!showAll) {
where.active = true;
}
return Member.findAll({ where })
.then(members => {
return members.map(member => {
const imagePath = path.join('images', 'members', `${member.id}.jpg`);
@@ -66,7 +72,7 @@ class MemberService {
member.birthDate = birthdate;
member.phone = phone;
member.email = email;
member.active = active; // Active status setzen
member.active = active;
await member.save();
} else {
await Member.create({
@@ -78,15 +84,13 @@ class MemberService {
phone: phone,
email: email,
clubId: clubId,
active: active // Active status setzen
active: active
});
}
console.log('[setClubMembers] - load club members');
const members = await this.getClubMembers(userToken, clubId);
console.log('[setClubMembers] - return response');
return {
status: 200,
response: members,
response: { result: "success" },
}
} catch (error) {
console.log(error);

View File

@@ -35,10 +35,15 @@ export const hasUserClubAccess = async(userId, clubId) => {
}
export const checkAccess = async(userToken, clubId) => {
const user = await getUserByToken(userToken);
if (!await hasUserClubAccess(user.id, clubId)) {
console.log('no club access');
const err = new HttpError('noaccess', 403);
throw err;
try {
const user = await getUserByToken(userToken);
if (!await hasUserClubAccess(user.id, clubId)) {
console.log('no club access');
const err = new HttpError('noaccess', 403);
throw err;
}
} catch (error) {
console.log(error);
throw error;
}
}