Example #1
0
def handleSecuredControllerMethod(args, kwargs, contentType, resourceInstance,
                                  resourceInstanceMethod, contextRequired,
                                  apiKeyRequired, roleRequired,
                                  requestHeaderClass, requestParamClass,
                                  requestClass, logRequest,
                                  muteStacktraceOnBusinessRuleException):
    contextList = SecurityManager.getContext()
    if not any(role in set(contextList) for role in roleRequired):
        raise GlobalException(
            message='Role not allowed',
            logMessage=
            f'''Roles {contextList} trying to access denied resourse. Allowed roles {roleRequired}''',
            status=HttpStatus.FORBIDDEN)
    elif ObjectHelper.isNotEmptyCollection(apiKeyRequired):
        return handleLockedByApiKeyControllerMethod(
            args, kwargs, contentType, resourceInstance,
            resourceInstanceMethod, contextRequired, apiKeyRequired,
            requestHeaderClass, requestParamClass, requestClass, logRequest,
            muteStacktraceOnBusinessRuleException)
    elif ObjectHelper.isNotEmptyCollection(contextRequired):
        return handleSessionedControllerMethod(
            args, kwargs, contentType, resourceInstance,
            resourceInstanceMethod, contextRequired, requestHeaderClass,
            requestParamClass, requestClass, logRequest,
            muteStacktraceOnBusinessRuleException)
    return handleControllerMethod(args, kwargs, contentType, resourceInstance,
                                  resourceInstanceMethod, requestHeaderClass,
                                  requestParamClass, requestClass, logRequest,
                                  muteStacktraceOnBusinessRuleException)
Example #2
0
def handleAnyControllerMethodRequest(
        args, kwargs, contentType, resourceInstance, resourceInstanceMethod,
        contextRequired, apiKeyRequired, roleRequired, requestHeaderClass,
        requestParamClass, requestClass, logRequest,
        muteStacktraceOnBusinessRuleException):
    if ObjectHelper.isNotEmptyCollection(roleRequired):
        return handleSecuredControllerMethod(
            args, kwargs, contentType, resourceInstance,
            resourceInstanceMethod, contextRequired, apiKeyRequired,
            roleRequired, requestHeaderClass, requestParamClass, requestClass,
            logRequest, muteStacktraceOnBusinessRuleException)
    elif ObjectHelper.isNotEmptyCollection(apiKeyRequired):
        return handleLockedByApiKeyControllerMethod(
            args, kwargs, contentType, resourceInstance,
            resourceInstanceMethod, contextRequired, apiKeyRequired,
            requestHeaderClass, requestParamClass, requestClass, logRequest,
            muteStacktraceOnBusinessRuleException)
    elif ObjectHelper.isNotEmptyCollection(contextRequired):
        return handleSessionedControllerMethod(
            args, kwargs, contentType, resourceInstance,
            resourceInstanceMethod, contextRequired, requestHeaderClass,
            requestParamClass, requestClass, logRequest,
            muteStacktraceOnBusinessRuleException)
    return handleControllerMethod(args, kwargs, contentType, resourceInstance,
                                  resourceInstanceMethod, requestHeaderClass,
                                  requestParamClass, requestClass, logRequest,
                                  muteStacktraceOnBusinessRuleException)
 def innerResourceInstanceMethod(*args, **kwargs):
     # r.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
     # r.headers["Pragma"] = "no-cache"
     # r.headers["Expires"] = "0"
     # r.headers['Cache-Control'] = 'public, max-age=0'
     resourceInstance = args[0]
     completeResponse = None
     try:
         if ObjectHelper.isNotEmptyCollection(roleRequired):
             completeResponse = securedControllerMethod(
                 args, kwargs, consumes, resourceInstance,
                 resourceInstanceMethod, roleRequired,
                 requestHeaderClass, requestParamClass, requestClass,
                 logRequest)
         else:
             completeResponse = publicControllerMethod(
                 args, kwargs, consumes, resourceInstance,
                 resourceInstanceMethod, requestHeaderClass,
                 requestParamClass, requestClass, logRequest)
         # print(f'completeResponse: {completeResponse}')
         validateResponseClass(responseClass, completeResponse)
     except Exception as exception:
         # print(exception)
         completeResponse = getCompleteResponseByException(
             exception, resourceInstance, resourceInstanceMethod)
         ###- request.method:              GET
         ###- request.url:                 http://127.0.0.1:5000/alert/dingding/test?x=y
         ###- request.base_url:            http://127.0.0.1:5000/alert/dingding/test
         ###- request.url_charset:         utf-8
         ###- request.url_root:            http://127.0.0.1:5000/
         ###- str(request.url_rule):       /alert/dingding/test
         ###- request.host_url:            http://127.0.0.1:5000/
         ###- request.host:                127.0.0.1:5000
         ###- request.script_root:
         ###- request.path:                /alert/dingding/test
         ###- request.full_path:           /alert/dingding/test?x=y
         ###- request.args:                ImmutableMultiDict([('x', 'y')])
         ###- request.args.get('x'):       y
     controllerResponse = completeResponse[0] if ObjectHelper.isNotNone(
         completeResponse[0]) else {
             'message': completeResponse[1].enumName
         }
     status = completeResponse[1]
     if logResponse:
         log.prettyJson(resourceInstanceMethod,
                        'bodyResponse',
                        json.loads(
                            Serializer.jsonifyIt(controllerResponse)),
                        condition=logResponse,
                        logLevel=log.DEBUG)
     return jsonifyResponse(controllerResponse, produces, status)