From 12d1b605fdf691e1a28596d48789c25378830f94 Mon Sep 17 00:00:00 2001 From: Roland Bernard <rolbernard@unibz.it> Date: Mon, 17 May 2021 17:01:55 +0200 Subject: [PATCH] Added a API request to update roles --- server/src/v1/team.ts | 159 +++++++++++++++++++++++++++++------------- 1 file changed, 111 insertions(+), 48 deletions(-) diff --git a/server/src/v1/team.ts b/server/src/v1/team.ts index a12609e..f2af7c9 100644 --- a/server/src/v1/team.ts +++ b/server/src/v1/team.ts @@ -233,54 +233,6 @@ team.get('/:uuid/members', async (req, res) => { } }); -team.delete('/:teamid/members/:userid', async (req, res) => { - try { - const team_id = req.params.teamid; - const user_id = req.params.userid; - if (validate(team_id) && validate(user_id)) { - const team = await database('team_members') - .select({ id: 'team_members.team_id' }) - .where({ - 'team_members.user_id': req.body.token.id, - 'team_members.team_id': team_id, - }); - if (team.length >= 1) { - const deleted = await database('team_members') - .delete() - .where({ - 'team_members.user_id': user_id, - 'team_members.team_id': team_id, - }); - if (deleted >= 1) { - res.status(200).json({ - status: 'success', - }); - } else { - res.status(404).json({ - status: 'error', - message: 'role not found', - }); - } - } else { - res.status(404).json({ - status: 'error', - message: 'team not found', - }); - } - } else { - res.status(400).json({ - status: 'error', - message: 'malformed uuid', - }); - } - } catch (e) { - res.status(400).json({ - status: 'error', - message: 'failed remove members', - }); - } -}); - team.get('/:uuid/roles', async (req, res) => { try { const id = req.params.uuid; @@ -454,6 +406,69 @@ team.post('/:uuid/roles', async (req, res) => { } }); +interface UpdateRoleBody { + name: string; + token: Token; +} + +team.put('/:teamid/roles/:roleid', async (req, res) => { + if (isOfType<UpdateRoleBody>(req.body, [['name', 'string']])) { + try { + const team_id = req.params.teamid; + const role_id = req.params.roleid; + if (validate(team_id) && validate(role_id)) { + const team = await database('team_members') + .select({ id: 'team_members.team_id' }) + .where({ + 'team_members.user_id': req.body.token.id, + 'team_members.team_id': team_id, + }); + if (team.length >= 1) { + const role_name = req.body.name; + const updated = await database('roles') + .update({ + name: role_name, + }) + .where({ + id: role_id, + team_id: team_id, + }); + if (updated >= 1) { + res.status(200).json({ + status: 'success', + }); + } else { + res.status(404).json({ + status: 'error', + message: 'role not found', + }); + } + } else { + res.status(404).json({ + status: 'error', + message: 'team not found', + }); + } + } else { + res.status(400).json({ + status: 'error', + message: 'malformed uuid', + }); + } + } catch (e) { + res.status(400).json({ + status: 'error', + message: 'failed to update role', + }); + } + } else { + res.status(400).json({ + status: 'error', + message: 'missing request fields', + }); + } +}); + team.delete('/:teamid/roles/:roleid', async (req, res) => { try { const team_id = req.params.teamid; @@ -615,6 +630,54 @@ team.put('/:uuid/members', async (req, res) => { } }); +team.delete('/:teamid/members/:userid', async (req, res) => { + try { + const team_id = req.params.teamid; + const user_id = req.params.userid; + if (validate(team_id) && validate(user_id)) { + const team = await database('team_members') + .select({ id: 'team_members.team_id' }) + .where({ + 'team_members.user_id': req.body.token.id, + 'team_members.team_id': team_id, + }); + if (team.length >= 1) { + const deleted = await database('team_members') + .delete() + .where({ + 'team_members.user_id': user_id, + 'team_members.team_id': team_id, + }); + if (deleted >= 1) { + res.status(200).json({ + status: 'success', + }); + } else { + res.status(404).json({ + status: 'error', + message: 'role not found', + }); + } + } else { + res.status(404).json({ + status: 'error', + message: 'team not found', + }); + } + } else { + res.status(400).json({ + status: 'error', + message: 'malformed uuid', + }); + } + } catch (e) { + res.status(400).json({ + status: 'error', + message: 'failed remove members', + }); + } +}); + team.delete('/:uuid/', async (req, res) => { try { const id = req.params.uuid; -- GitLab