@@ -98,9 +98,11 @@ def oauth_manager(self, oauth_manager):
9898 @self .app .before_request
9999 def before_request ():
100100 endpoint = request .endpoint
101- resource = self .app .view_functions [endpoint ].view_class
101+ resource = None
102+ if endpoint :
103+ resource = getattr (self .app .view_functions [endpoint ], 'view_class' , None )
102104
103- if not getattr (resource , 'disable_oauth' ):
105+ if resource and not getattr (resource , 'disable_oauth' , None ):
104106 scopes = request .args .get ('scopes' )
105107
106108 if getattr (resource , 'schema' ):
@@ -145,19 +147,20 @@ def build_scope(resource, method):
145147
146148 return '_' .join ([prefix , resource .schema .opts .type_ ])
147149
148- def permission_manager (self , permission_manager ):
150+ def permission_manager (self , permission_manager , with_decorators = True ):
149151 """Use permission manager to enable permission for API
150152
151153 :param callable permission_manager: the permission manager
152154 """
153155 self .check_permissions = permission_manager
154156
155- for resource in self .resource_registry :
156- if getattr (resource , 'disable_permission' , None ) is not True :
157- for method in getattr (resource , 'methods' , ('GET' , 'POST' , 'PATCH' , 'DELETE' )):
158- setattr (resource ,
159- method .lower (),
160- self .has_permission ()(getattr (resource , method .lower ())))
157+ if with_decorators :
158+ for resource in self .resource_registry :
159+ if getattr (resource , 'disable_permission' , None ) is not True :
160+ for method in getattr (resource , 'methods' , ('GET' , 'POST' , 'PATCH' , 'DELETE' )):
161+ setattr (resource ,
162+ method .lower (),
163+ self .has_permission ()(getattr (resource , method .lower ())))
161164
162165 def has_permission (self , * args , ** kwargs ):
163166 """Decorator used to check permissions before to call resource manager method"""
0 commit comments