@staticmethod<EOL><INDENT>def requires_role(role_s, logical_operator=all):<DEDENT>
def outer_wrap(fn):<EOL><INDENT>@functools.wraps(fn)<EOL>def inner_wrap(*args, **kwargs):<EOL><INDENT>subject = Yosai.get_current_subject()<EOL>subject.check_role(role_s, logical_operator)<EOL>return fn(*args, **kwargs)<EOL><DEDENT>return inner_wrap<EOL><DEDENT>return outer_wrap<EOL>
Requires that the calling Subject be authorized to the extent that is
required to satisfy the role_s specified and the logical operation
upon them.

:param role_s:   a collection of the role(s) required, specified by
                   identifiers (such as a role name)
:type role_s:  a List of Strings

:param logical_operator:  indicates whether all or at least one permission
                          is true (and, any)
:type: and OR all (from python standard library)

:raises  AuthorizationException:  if the user does not have sufficient
                                  role membership

Elaborate Example:
    requires_role(role_s=['sysadmin', 'developer'], logical_operator=any)

Basic Example:
    requires_role('physician')