def validate(self): """ 验证请求信息 """ if not self.grant_type: raise InvalidRequest('未提供参数:grant_type') if self.grant_type not in ["refresh_token", "password"]: raise UnsupportedGrantType('No grant type: %s' % self.grant_type) if not self.client_id: raise InvalidRequest('未提供参数:client_id') self.client = ClientDAO.get_client_by_key(self.client_id) if not self.client: raise InvalidClient("client_id %s doesn't exist" % self.client_id) self._validate_client_credentials() validate_map = { "password": "******", "refresh_token": "self._validate_refresh_token()", "authorization_code": "self._validate_authorization_code()", } eval(validate_map[self.grant_type])
def validate(self, response_type, client_id, redirect_uri): """ Validate the request params. """ if not redirect_uri: raise exceptions.MissingRedirectURI("No redirect_uri provided.") if not response_type: raise exceptions.InvalidRequest("response_type is a required parameter.") if response_type not in ["code"]: raise exceptions.InvalidRequest("No such response type %s" % response_type) if not client_id: raise exceptions.InvalidRequest("client_id is a required parameter.") client = ClientDAO.get_client_by_key(client_id) if not client: raise exceptions.InvalidClient("client_id %s doesn't exist" % client_id) if not client.redirect_uri: raise exceptions.MissingRedirectURI("No redirect_uri registered.") if normalize(redirect_uri) != normalize(client.redirect_uri): raise exceptions.InvalidRequest("Registered redirect_uri doesn't match provided redirect_uri.") if not absolute_http_url_re.match(redirect_uri): raise exceptions.InvalidRequest("Absolute URI required for redirect_uri") return client