Skip to content

Commit a92ad74

Browse files
author
sjohn-atenekom
committed
[FIXES GeoNode#5639] Group membership is ignored for layer permissions
1 parent 7423649 commit a92ad74

File tree

3 files changed

+11
-5
lines changed

3 files changed

+11
-5
lines changed

AUTHORS

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ John Jediny (nepanode)
8686
Guillermo Solano (gsolat)
8787
Jorge Martinez (JorgeMartinezG)
8888
Wayner Barrios (waybarrios)
89+
Steffen Berger (sjohn-atenekom)
8990
@gioscarda
90-
@sjohn-atenekom
9191
@LiliGuimaraes
9292
@kikislater
9393
@mtnorthcott

geonode/groups/models.py

+10-3
Original file line numberDiff line numberDiff line change
@@ -199,9 +199,7 @@ def join(self, user, **kwargs):
199199
if user == user.get_anonymous():
200200
raise ValueError("The invited user cannot be anonymous")
201201
member, created = GroupMember.objects.get_or_create(group=self, user=user, defaults=kwargs)
202-
if created:
203-
user.groups.add(self.group)
204-
else:
202+
if not created:
205203
logger.warning("The invited user \"{0}\" is already a member".format(user.username))
206204

207205
def leave(self, user, **kwargs):
@@ -246,6 +244,15 @@ class GroupMember(models.Model):
246244
])
247245
joined = models.DateTimeField(default=now)
248246

247+
def save(self, *args, **kwargs):
248+
# add django.contrib.auth.group to user
249+
self.user.groups.add(self.group.group)
250+
super(GroupMember, self).save(*args, **kwargs)
251+
252+
def delete(self, *args, **kwargs):
253+
self.user.groups.remove(self.group.group)
254+
super(GroupMember, self).delete(*args, **kwargs)
255+
249256

250257
def group_pre_delete(instance, sender, **kwargs):
251258
"""Make sure that the anonymous group is not deleted"""

geonode/groups/views.py

-1
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,6 @@ def group_member_remove(request, slug, username):
199199
return HttpResponseForbidden()
200200
else:
201201
GroupMember.objects.get(group=group, user=user).delete()
202-
user.groups.remove(group.group)
203202
return redirect("group_detail", slug=group.slug)
204203

205204

0 commit comments

Comments
 (0)