Esempio n. 1
0
    def on_render_request(self, request):
        """
        Action will return a Deferred that will return the page content
        """
        def cb_action(result):
            request.set_header('content-length', str(len(result)))
            
            def _write(r):
                request.write(result)
                return True
            
            return plugin.run_hook("on_after_render", request
                                  ).add_callback(_write)
            
        #TODO execute a before/after hook if one exists in the controller
        
        """
        #TODO pass in args as *args and **kwargs
        if not self.args:
            self.args = inspect.getargspec(self.rend)

        for index, arg in enumerate(self.args.args):
            if arg in self.request.args:
                kw[arg] = self.request.args[arg]
            else:
                #If it doesn't have a default, pass in None
                if self.args.defaults and len(self.args.defaults) + index < len(self.args):
                    kw[arg] = None
        """
        
        print 'request.action', request.action
        return core.maybe_deferred(request.action, request).add_callback(cb_action)
Esempio n. 2
0
 def on_new_session(self, request):
     """
     We are about to create a new session for this user. Should we
     automagically authenticate him based on an authentication token and then
     use this information to generate the session
     """
     
     cookie_name = request.get_action_parameter("auth_token_cookie_name",
                                               "gyro-auth-token")
     token = request.get_cookie(cookie_name)
     
     if token:
         uid = yield core.maybe_deferred(self.storage.use_token, token)
         
         if uid:
             engine = request.get_action_parameter("auth_provider")
             
             if engine:
                 session = yield core.maybe_deferred(engine.get_user_session,
                                                     uid)
             
                 if session:
                     self.on_remember_me(request, uid, token, cookie_name)
                     defer.returnValue(session)
Esempio n. 3
0
 def on_remember_me(self, request, uid, token=None, cookie_name=None):
     """
     Remember a user's authentication information so that they don't have
     to log in every time their session expires
     """
     token = token or util.uuid()
     cookie_name = cookie_name or request.get_action_parameter(
         "auth_token_cookie_name", "gyro-auth-token")
     
     yield core.maybe_deferred(self.storage.add_token,
                                token, uid)
     
     request.add_cookie(cookie_name, token,
                        expires=datetime.datetime.now() +
                        self.token_valid_time, path="/")
Esempio n. 4
0
 def on_render_basic(self, request):
     """
     Just call action and let it do what it needs to do
     """
     return core.maybe_deferred(request.action, request)