diff --git a/issue/middleware.py b/issue/middleware.py index bbc6d9a..fa04f94 100644 --- a/issue/middleware.py +++ b/issue/middleware.py @@ -26,30 +26,28 @@ class ProjectMiddleware: " 'django.contrib.auth.middleware.AuthenticationMiddleware'" " before the ProjectMiddleware class.") - user = None - if request.user.is_authenticated(): - user = User.objects.get(username=request.user) - - if user and user.is_staff: + if request.user.is_authenticated() and request.user.is_staff: projects = Project.objects.all() else: query = Q(public=True) - if user: + if request.user.is_authenticated(): # access granted through a team - teams = user.teams.values_list('name') + teams = request.user.teams.values_list('name') query |= Q(permissions__grantee_type=PermModel.GRANTEE_TEAM, - permissions__grantee_name__in=teams) + permissions__grantee_name__in=teams) # access granted through a group - groups = user.groups.values_list('name') + groups = request.user.groups.values_list('name') query |= Q(permissions__grantee_type=PermModel.GRANTEE_GROUP, - permissions__grantee_name__in=groups) + permissions__grantee_name__in=groups) # access granted by specific permission query |= Q(permissions__grantee_type=PermModel.GRANTEE_USER, - permissions__grantee_name=user.username) + permissions__grantee_name=request.user.username) projects = Project.objects.filter(query).distinct() + request.projects = projects project = view_kwargs.get('project') + if not project: return try: @@ -59,5 +57,6 @@ class ProjectMiddleware: raise PermissionDenied() else: return login_required(view)(request, *view_args, **view_kwargs) + view_kwargs['project'] = project request.project = project