mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-01 23:55:58 -05:00
Default permissions added on service creation. All tests working.
This commit is contained in:
@@ -14,9 +14,10 @@ class DAOClass(object):
|
||||
class Meta:
|
||||
model = None
|
||||
|
||||
def create_instance(self, inst):
|
||||
def create_instance(self, inst, _commit=True):
|
||||
db.session.add(inst)
|
||||
db.session.commit()
|
||||
if _commit:
|
||||
db.session.commit()
|
||||
|
||||
def update_instance(self, inst, update_dict):
|
||||
# Make sure the id is not included in the update_dict
|
||||
|
||||
@@ -2,10 +2,23 @@ from app.dao import DAOClass
|
||||
from app.models import Permission
|
||||
|
||||
|
||||
# Service Permissions
|
||||
manage_service = 'manage_service'
|
||||
send_messages = 'send_messages'
|
||||
manage_api_keys = 'manage_api_keys'
|
||||
# Default permissions for a service
|
||||
default_service_permissions = [manage_service, send_messages, manage_api_keys]
|
||||
|
||||
|
||||
class PermissionDAO(DAOClass):
|
||||
|
||||
class Meta:
|
||||
model = Permission
|
||||
|
||||
def add_default_service_permissions_for_user(self, user, service):
|
||||
for name in default_service_permissions:
|
||||
permission = Permission(permission=name, user=user, service=service)
|
||||
self.create_instance(permission, _commit=False)
|
||||
|
||||
|
||||
permission_dao = PermissionDAO()
|
||||
|
||||
@@ -20,7 +20,14 @@ def dao_fetch_service_by_id_and_user(service_id, user_id):
|
||||
|
||||
|
||||
def dao_create_service(service, user):
|
||||
service.users.append(user)
|
||||
try:
|
||||
from app.dao.permissions_dao import permission_dao
|
||||
service.users.append(user)
|
||||
permission_dao.add_default_service_permissions_for_user(user, service)
|
||||
except Exception as e:
|
||||
# Proper clean up
|
||||
db.session.rollback()
|
||||
raise e
|
||||
db.session.add(service)
|
||||
db.session.commit()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user