From b8db2c464bb4fd734c5b2baa6aeac73f4471f82c Mon Sep 17 00:00:00 2001 From: Adarnof Date: Mon, 21 Mar 2016 02:46:23 +0000 Subject: [PATCH] Corrected authenticator group return It works. --- services/admin.py | 3 +++ services/managers/mumble_manager.py | 8 ++++++-- services/models.py | 2 +- thirdparty/Mumble/.gitignore | 1 + .../{authenticator.ini => authenticator.ini.example} | 0 thirdparty/Mumble/authenticator.py | 6 ++++-- 6 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 thirdparty/Mumble/.gitignore rename thirdparty/Mumble/{authenticator.ini => authenticator.ini.example} (100%) diff --git a/services/admin.py b/services/admin.py index 8b736274..bfca9f2c 100644 --- a/services/admin.py +++ b/services/admin.py @@ -1,6 +1,7 @@ from django.contrib import admin from .models import AuthTS from .models import DiscordAuthToken +from .models import MumbleUser class AuthTSgroupAdmin(admin.ModelAdmin): fields = ['auth_group','ts_group'] @@ -9,3 +10,5 @@ class AuthTSgroupAdmin(admin.ModelAdmin): admin.site.register(AuthTS, AuthTSgroupAdmin) admin.site.register(DiscordAuthToken) + +admin.site.register(MumbleUser) diff --git a/services/managers/mumble_manager.py b/services/managers/mumble_manager.py index 059a47c2..e70f56ac 100755 --- a/services/managers/mumble_manager.py +++ b/services/managers/mumble_manager.py @@ -102,11 +102,15 @@ class MumbleManager: @staticmethod def update_groups(username, groups): logger.debug("Updating mumble user %s groups %s" % (username, groups)) - safe_groups = set([g.replace(' ', '-') for g in groups]) + safe_groups = list(set([g.replace(' ', '-') for g in groups])) + groups ='' + for g in safe_groups: + groups = groups + g + ',' + groups = groups.strip(',') if MumbleUser.objects.filter(username=username).exists(): logger.info("Updating mumble user %s groups to %s" % (username, safe_groups)) model = MumbleUser.objects.get(username=username) - model.groups = safe_groups + model.groups = groups model.save() else: logger.error("User %s not found on mumble. Unable to update groups." % username) diff --git a/services/models.py b/services/models.py index 4e6379d9..7a69db70 100644 --- a/services/models.py +++ b/services/models.py @@ -45,4 +45,4 @@ class MumbleUser(models.Model): groups = models.TextField(blank=True, null=True) def __str__(self): - return self.username + ' - ' + str(self.user) + return self.username diff --git a/thirdparty/Mumble/.gitignore b/thirdparty/Mumble/.gitignore new file mode 100644 index 00000000..b3df7f05 --- /dev/null +++ b/thirdparty/Mumble/.gitignore @@ -0,0 +1 @@ +authenticator.ini diff --git a/thirdparty/Mumble/authenticator.ini b/thirdparty/Mumble/authenticator.ini.example similarity index 100% rename from thirdparty/Mumble/authenticator.ini rename to thirdparty/Mumble/authenticator.ini.example diff --git a/thirdparty/Mumble/authenticator.py b/thirdparty/Mumble/authenticator.py index 45091662..298d1655 100644 --- a/thirdparty/Mumble/authenticator.py +++ b/thirdparty/Mumble/authenticator.py @@ -499,11 +499,13 @@ def do_main_program(): return (FALL_THROUGH, None, None) uid, upwhash, ugroups = res + + groups = ugroups.split(',') if allianceauth_check_hash(pw, upwhash): info('User authenticated: "%s" (%d)', name, uid + cfg.user.id_offset) - debug('Group memberships: %s', str(ugroups)) - return (uid + cfg.user.id_offset, entity_decode(name), ugroups) + debug('Group memberships: %s', str(groups)) + return (uid + cfg.user.id_offset, entity_decode(name), groups) info('Failed authentication attempt for user: "%s" (%d)', name, uid + cfg.user.id_offset) return (AUTH_REFUSED, None, None)