code: def requires_dynamic_permission(permission_s, logical_operator=all):
          
          def outer_wrap(fn):
              @functools.wraps(fn)
              def inner_wrap(*args, **kwargs):
  
                  params = WebYosai.get_current_webregistry().resource_params
                  newperms = [perm.format(**params) for perm in permission_s]
  
                  subject = WebYosai.get_current_subject()
  
                  try:
                      subject.check_permission(newperms, logical_operator)
  
                  except ValueError:
                      msg = ("Attempting to perform a user-only operation.  The "
                             "current Subject is NOT a user (they haven't been "
                             "authenticated or remembered from a previous login). "
                             "ACCESS DENIED.")
                      raise WebYosai.get_current_webregistry().raise_unauthorized(msg)
  
                  except AuthorizationException:
                      msg = "Access Denied.  Insufficient Permissions."
                      raise WebYosai.get_current_webregistry().raise_forbidden(msg)
  
                  return fn(*args, **kwargs)
              return inner_wrap
          return outer_wrap
docs: This method requires that the calling Subject be authorized to the extent
          that is required to satisfy the dynamic permission_s specified and the logical
          operation upon them.  Unlike ``requires_permission``, which uses statically
          defined permissions, this function derives a permission from arguments
          specified at declaration.
  
          Dynamic permissioning requires that the dynamic arguments be keyword
          arguments of the decorated method.
  
          :param permission_s:   the permission(s) required
          :type permission_s:  a List of Strings or List of Permission instances
  
          :param logical_operator:  indicates whether all or at least one permission
                                    is true (and, any)
          :type: and OR all (from python standard library)
  
          Elaborate Example:
              requires_permission(
                  permission_s=['{kwarg1.domainid}:action1,action2',
                                 '{kwarg2.domainid}:action1'],
                  logical_operator=any)
  
          Basic Example:
              requires_permission(['{kwarg.domainid}:action1,action2'])