code: def requires_authentication(fn):
          
  
          @functools.wraps(fn)
          def wrap(*args, **kwargs):
              subject = Yosai.get_current_subject()
  
              if not subject.authenticated:
                  msg = "The current Subject is not authenticated.  ACCESS DENIED."
                  raise UnauthenticatedException(msg)
  
              return fn(*args, **kwargs)
          return wrap
docs: Requires that the calling Subject be authenticated before allowing access.
  
          :raises UnauthenticatedException: indicating that the decorated method is
                                            not allowed to be executed because the
                                            Subject failed to authenticate