summaryrefslogtreecommitdiff
path: root/opendc-web/opendc-web-api/opendc/models/project.py
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-05-14 16:50:23 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-05-17 17:06:51 +0200
commit05d2318538eba71ac0555dc5ec146499d9cb0592 (patch)
tree6163e6429879109e322a4c0883fab168031aa109 /opendc-web/opendc-web-api/opendc/models/project.py
parent0c6ccca5fac44ab40671627fd3181e9b138672fa (diff)
api: Remove user handling from OpenDC API server
This change removes any of the user handling and endpoints from the OpenDC API server. The API server does not need to store user information other than an identifier in the database.
Diffstat (limited to 'opendc-web/opendc-web-api/opendc/models/project.py')
-rw-r--r--opendc-web/opendc-web-api/opendc/models/project.py29
1 files changed, 13 insertions, 16 deletions
diff --git a/opendc-web/opendc-web-api/opendc/models/project.py b/opendc-web/opendc-web-api/opendc/models/project.py
index b57e9f77..2b3fd5f4 100644
--- a/opendc-web/opendc-web-api/opendc/models/project.py
+++ b/opendc-web/opendc-web-api/opendc/models/project.py
@@ -1,5 +1,4 @@
from opendc.models.model import Model
-from opendc.models.user import User
from opendc.util.database import DB
from opendc.util.exceptions import ClientError
from opendc.util.rest import Response
@@ -10,22 +9,20 @@ class Project(Model):
collection_name = 'projects'
- def check_user_access(self, google_id, edit_access):
- """Raises an error if the user with given [google_id] has insufficient access.
+ def check_user_access(self, user_id, edit_access):
+ """Raises an error if the user with given [user_id] has insufficient access.
- :param google_id: The Google ID of the user.
+ :param user_id: The User ID of the user.
:param edit_access: True when edit access should be checked, otherwise view access.
"""
- user = User.from_google_id(google_id)
- authorizations = list(filter(lambda x: str(x['projectId']) == str(self.get_id()),
- user.obj['authorizations']))
- if len(authorizations) == 0 or (edit_access and authorizations[0]['authorizationLevel'] == 'VIEW'):
- raise ClientError(Response(403, "Forbidden from retrieving project."))
+ for authorization in self.obj['authorizations']:
+ if user_id == authorization['userId'] and authorization['authorizationLevel'] != 'VIEW' or not edit_access:
+ return
+ raise ClientError(Response(403, "Forbidden from retrieving project."))
- def get_all_authorizations(self):
- """Get all user IDs having access to this project."""
- return [
- str(user['_id']) for user in DB.fetch_all({'authorizations': {
- 'projectId': self.obj['_id']
- }}, User.collection_name)
- ]
+ @classmethod
+ def get_for_user(cls, user_id):
+ """Get all projects for the specified user id."""
+ return DB.fetch_all({'authorizations': {
+ 'userId': user_id
+ }}, Project.collection_name)