diff --git a/chalicelib/api/members.py b/chalicelib/api/members.py index 1d6e3fd..bc0b37a 100644 --- a/chalicelib/api/members.py +++ b/chalicelib/api/members.py @@ -1,6 +1,7 @@ from chalice import Blueprint from chalicelib.services.MemberService import member_service from chalicelib.decorators import auth +from chalicelib.models.roles import Roles members_api = Blueprint(__name__) @@ -25,3 +26,9 @@ def onboard_member(user_id): } else: { "status": False} + +@members_api.route("/members/{user_id}/roles", methods=["PATCH"], cors=True) +@auth(members_api, roles=[Roles.ADMIN]) +def update_member_roles(user_id): + data = members_api.current_request.json_body + return member_service.update_roles(user_id, data["roles"]) \ No newline at end of file diff --git a/chalicelib/models/roles.py b/chalicelib/models/roles.py index 0dd3cb8..4b5c825 100644 --- a/chalicelib/models/roles.py +++ b/chalicelib/models/roles.py @@ -5,4 +5,5 @@ class Roles(Enum): ADMIN = "admin" MEMBER = "member" EBOARD = "eboard" + RECRUITMENT = "recruitment" # Add more roles as needed diff --git a/chalicelib/services/MemberService.py b/chalicelib/services/MemberService.py index 2a21120..a2b7fd4 100644 --- a/chalicelib/services/MemberService.py +++ b/chalicelib/services/MemberService.py @@ -17,9 +17,16 @@ def __init__(self): def get_all(self): data = mongo_module.get_all_data_from_collection(self.collection) return json.dumps(data, cls=self.BSONEncoder) - + def onboard(self, document_id=str, data=dict) -> bool: return mongo_module.update_document_by_id(self.collection, document_id, data) + def update_roles(self, document_id=str, roles=list) -> bool: + return mongo_module.update_document( + self.collection, + document_id, + [{"$set": {"roles": roles}}], + ) + member_service = MemberService()