new_contents: import asyncio
  import functools
  
  from aiohttp import web
  
  
  from aiohttp_security import remember, forbid, authorized_user_id, permits
  
  
  def require(permission):
      def wrapper(f):
          @asyncio.coroutine
          @functools.wraps(f)
          def wrapped(self, request):
              has_perm = yield from permits(request)
              if not has_perm:
                  raise web.HTTPForbidden()
              return (yield from f(self, request))
          return wrapped
      return wrapper
  
  
  class Web:
      @require('public')
      @asyncio.coroutine
      def index(self, request):
          pass
  
      @require('public')
      @asyncio.coroutine
      def login(self, request):
          pass
  
      @require('protected')
      @asyncio.coroutine
      def logout(self, request):
          pass
  
      @require('public')
      @asyncio.coroutine
      def public(self, request):
          pass
  
      @require('protected')
      @asyncio.coroutine
      def protected(self, request):
          pass
  
subject: Add handlers