Skip to content
Snippets Groups Projects
Commit 32d42a05 authored by sveseli's avatar sveseli
Browse files

added administrator check for exposed methods

parent 5f7371d1
No related branches found
No related tags found
No related merge requests found
...@@ -4,14 +4,11 @@ ...@@ -4,14 +4,11 @@
# Base DM session controller class. # Base DM session controller class.
# #
#######################################################################
import cherrypy import cherrypy
from dm.common.constants import dmRole
from dm.common.service.dmController import DmController from dm.common.service.dmController import DmController
from dm.common.service.loginController import LoginController from dm.common.service.loginController import LoginController
#######################################################################
class DmSessionController(DmController): class DmSessionController(DmController):
""" Base session controller class. """ """ Base session controller class. """
...@@ -65,10 +62,17 @@ class DmSessionController(DmController): ...@@ -65,10 +62,17 @@ class DmSessionController(DmController):
@classmethod @classmethod
def isLoggedIn(cls): def isLoggedIn(cls):
""" Returns True if session has been established. """ """ Returns True if session has been established. """
def check(): def userIsLoggedIn():
role = cherrypy.session.get(LoginController.SESSION_ROLE_KEY, None) role = cherrypy.session.get(LoginController.SESSION_ROLE_KEY, None)
if role is not None: if role is not None:
return True return True
return False return False
return check return userIsLoggedIn
@classmethod
def isAdministrator(cls):
def userIsAdministrator():
result = (cherrypy.session.get(LoginController.SESSION_ROLE_KEY, None) == dmRole.DM_ADMIN_ROLE)
return result
return userIsAdministrator
...@@ -144,8 +144,8 @@ class LoginController(DmController): ...@@ -144,8 +144,8 @@ class LoginController(DmController):
for condition in conditions: for condition in conditions:
# A condition is just a callable that returns true or false # A condition is just a callable that returns true or false
if not condition(): if not condition():
logger.debug('Authorization check %s failed for username %s' % (condition.func_name, username)) logger.debug('Authorization check %s() failed for username %s' % (condition.func_name, username))
errorMsg = 'Authorization check %s failed for user %s.' % (condition.func_name, username) errorMsg = 'Authorization check %s() failed for user %s.' % (condition.func_name, username)
raise DmHttpError(dmHttpStatus.DM_HTTP_UNAUTHORIZED, 'User Not Authorized', AuthorizationError(errorMsg)) raise DmHttpError(dmHttpStatus.DM_HTTP_UNAUTHORIZED, 'User Not Authorized', AuthorizationError(errorMsg))
else: else:
logger.debug('Username is not supplied') logger.debug('Username is not supplied')
......
...@@ -16,7 +16,7 @@ class ExperimentSessionController(DmSessionController): ...@@ -16,7 +16,7 @@ class ExperimentSessionController(DmSessionController):
self.experimentSessionControllerImpl = ExperimentSessionControllerImpl() self.experimentSessionControllerImpl = ExperimentSessionControllerImpl()
@cherrypy.expose @cherrypy.expose
@DmSessionController.require(DmSessionController.isLoggedIn()) @DmSessionController.require(DmSessionController.isAdministrator())
@DmSessionController.execute @DmSessionController.execute
def startDaq(self, **kwargs): def startDaq(self, **kwargs):
name = kwargs.get('name') name = kwargs.get('name')
...@@ -32,7 +32,7 @@ class ExperimentSessionController(DmSessionController): ...@@ -32,7 +32,7 @@ class ExperimentSessionController(DmSessionController):
return response return response
@cherrypy.expose @cherrypy.expose
@DmSessionController.require(DmSessionController.isLoggedIn()) @DmSessionController.require(DmSessionController.isAdministrator())
@DmSessionController.execute @DmSessionController.execute
def stopDaq(self, **kwargs): def stopDaq(self, **kwargs):
name = kwargs.get('name') name = kwargs.get('name')
...@@ -44,7 +44,7 @@ class ExperimentSessionController(DmSessionController): ...@@ -44,7 +44,7 @@ class ExperimentSessionController(DmSessionController):
return response return response
@cherrypy.expose @cherrypy.expose
@DmSessionController.require(DmSessionController.isLoggedIn()) @DmSessionController.require(DmSessionController.isAdministrator())
@DmSessionController.execute @DmSessionController.execute
def startUpload(self, **kwargs): def startUpload(self, **kwargs):
name = kwargs.get('name') name = kwargs.get('name')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment