mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-13 14:30:17 +02:00
Fixed issue where syncgroups were preventing other groups from being created if a service is added after.
This commit is contained in:
parent
551cf01b44
commit
de34d35add
@ -4,7 +4,9 @@ from django.contrib.auth.models import User
|
||||
|
||||
class SyncGroupCache(models.Model):
|
||||
groupname = models.CharField(max_length=254)
|
||||
servicename = models.CharField(max_length=254, default="")
|
||||
|
||||
user = models.ForeignKey(User)
|
||||
|
||||
def __str__(self):
|
||||
return self.user.username + ' - ' + self.groupname + ' - SyncGroupCache'
|
||||
return self.user.username + ' - ' + self.groupname + ' - ' + self.servicename + ' - SyncGroupCache'
|
||||
|
@ -83,6 +83,14 @@ def update_teamspeak3_groups(user):
|
||||
Teamspeak3Manager.update_groups(authserviceinfo.teamspeak3_uid, groups)
|
||||
|
||||
|
||||
def create_syncgroup_for_user(user, groupname, servicename):
|
||||
synccache = SyncGroupCache()
|
||||
synccache.groupname = groupname
|
||||
synccache.user = user
|
||||
synccache.servicename = servicename
|
||||
synccache.save()
|
||||
|
||||
|
||||
def add_to_databases(user, groups, syncgroups):
|
||||
authserviceinfo = None
|
||||
try:
|
||||
@ -95,25 +103,27 @@ def add_to_databases(user, groups, syncgroups):
|
||||
|
||||
update = False
|
||||
for group in groups:
|
||||
syncgroup = syncgroups.filter(groupname=group.name)
|
||||
if not syncgroup:
|
||||
synccache = SyncGroupCache()
|
||||
synccache.groupname = group.name
|
||||
synccache.user = user
|
||||
synccache.save()
|
||||
update = True
|
||||
|
||||
if update:
|
||||
if authserviceinfo.jabber_username and authserviceinfo.jabber_username != "":
|
||||
update_jabber_groups(user)
|
||||
if syncgroups.filter(groupname=group.name).filter(servicename="openfire").exists() is not True:
|
||||
create_syncgroup_for_user(user, group.name, "openfire")
|
||||
update_jabber_groups(user)
|
||||
if authserviceinfo.mumble_username and authserviceinfo.mumble_username != "":
|
||||
update_mumble_groups(user)
|
||||
if syncgroups.filter(groupname=group.name).filter(servicename="mumble").exists() is not True:
|
||||
create_syncgroup_for_user(user, group.name, "mumble")
|
||||
update_mumble_groups(user)
|
||||
if authserviceinfo.forum_username and authserviceinfo.forum_username != "":
|
||||
update_forum_groups(user)
|
||||
if syncgroups.filter(groupname=group.name).filter(servicename="phpbb3").exists() is not True:
|
||||
create_syncgroup_for_user(user, group.name, "phpbb3")
|
||||
update_forum_groups(user)
|
||||
if authserviceinfo.ipboard_username and authserviceinfo.ipboard_username != "":
|
||||
update_ipboard_groups(user)
|
||||
if syncgroups.filter(groupname=group.name).filter(servicename="ipboard").exists() is not True:
|
||||
create_syncgroup_for_user(user, group.name, "ipboard")
|
||||
update_ipboard_groups(user)
|
||||
if authserviceinfo.teamspeak3_uid and authserviceinfo.teamspeak3_uid != "":
|
||||
update_teamspeak3_groups(user)
|
||||
if syncgroups.filter(groupname=group.name).filter(servicename="teamspeak3").exists() is not True:
|
||||
create_syncgroup_for_user(user, group.name, "teamspeak3")
|
||||
update_teamspeak3_groups(user)
|
||||
|
||||
|
||||
def remove_from_databases(user, groups, syncgroups):
|
||||
|
@ -6,7 +6,6 @@ from django.conf import settings
|
||||
|
||||
|
||||
class IPBoardManager:
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@ -23,15 +22,18 @@ class IPBoardManager:
|
||||
@staticmethod
|
||||
def exec_xmlrpc(func, **kwargs):
|
||||
""" Send a XMLRPC request """
|
||||
try:
|
||||
server = xmlrpclib.Server(settings.IPBOARD_ENDPOINT, verbose=False)
|
||||
params = {}
|
||||
for i in kwargs:
|
||||
params[i] = kwargs[i]
|
||||
params['api_key'] = settings.IPBOARD_APIKEY
|
||||
params['api_module'] = settings.IPBOARD_APIMODULE
|
||||
print params
|
||||
|
||||
server = xmlrpclib.Server(settings.IPBOARD_ENDPOINT, verbose=False)
|
||||
params = {}
|
||||
for i in kwargs:
|
||||
params[i] = kwargs[i]
|
||||
params['api_key'] = settings.IPBOARD_APIKEY
|
||||
params['api_module'] = settings.IPBOARD_APIMODULE
|
||||
print params
|
||||
return getattr(server, func)(params)
|
||||
return getattr(server, func)(params)
|
||||
except:
|
||||
return {}
|
||||
|
||||
@staticmethod
|
||||
def add_user(username, email):
|
||||
@ -39,7 +41,8 @@ class IPBoardManager:
|
||||
sanatized = str(IPBoardManager.__santatize_username(username))
|
||||
plain_password = IPBoardManager.__generate_random_pass()
|
||||
password = md5(plain_password).hexdigest()
|
||||
ret = IPBoardManager.exec_xmlrpc('createUser', username=sanatized, email=str(email), display_name=sanatized, md5_passwordHash=password)
|
||||
ret = IPBoardManager.exec_xmlrpc('createUser', username=sanatized, email=str(email), display_name=sanatized,
|
||||
md5_passwordHash=password)
|
||||
return sanatized, plain_password
|
||||
|
||||
@staticmethod
|
||||
|
@ -218,7 +218,13 @@ class MumbleManager:
|
||||
for g in addgroups:
|
||||
if not g in mumble_groups:
|
||||
mumble_groups[g] = MumbleManager._add_group(g)
|
||||
MumbleManager._add_user_to_group(userid, mumble_groups[g])
|
||||
try:
|
||||
MumbleManager._add_user_to_group(userid, mumble_groups[g])
|
||||
except:
|
||||
print "Error occurred while adding a mumble to a group"
|
||||
|
||||
for g in remgroups:
|
||||
MumbleManager._del_user_from_group(userid, mumble_groups[g])
|
||||
try:
|
||||
MumbleManager._del_user_from_group(userid, mumble_groups[g])
|
||||
except:
|
||||
print "Error occurred while removing a mumble user from group"
|
||||
|
@ -95,13 +95,19 @@ class Phpbb3Manager:
|
||||
|
||||
@staticmethod
|
||||
def __add_user_to_group(userid, groupid):
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
cursor.execute(Phpbb3Manager.SQL_ADD_USER_GROUP, [groupid, userid, 0])
|
||||
try:
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
cursor.execute(Phpbb3Manager.SQL_ADD_USER_GROUP, [groupid, userid, 0])
|
||||
except:
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def __remove_user_from_group(userid, groupid):
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
cursor.execute(Phpbb3Manager.SQL_REMOVE_USER_GROUP, [userid, groupid])
|
||||
try:
|
||||
cursor.execute(Phpbb3Manager.SQL_REMOVE_USER_GROUP, [userid, groupid])
|
||||
except:
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def add_user(username, email, groups):
|
||||
@ -118,8 +124,8 @@ class Phpbb3Manager:
|
||||
try:
|
||||
|
||||
cursor.execute(Phpbb3Manager.SQL_ADD_USER, [username_clean, username_clean, pwhash,
|
||||
email, 2, Phpbb3Manager.__get_current_utc_date(),
|
||||
"", ""])
|
||||
email, 2, Phpbb3Manager.__get_current_utc_date(),
|
||||
"", ""])
|
||||
Phpbb3Manager.update_groups(username_clean, groups)
|
||||
except:
|
||||
pass
|
||||
@ -176,8 +182,10 @@ class Phpbb3Manager:
|
||||
|
||||
if userid:
|
||||
if groupid:
|
||||
cursor.execute(Phpbb3Manager.SQL_REMOVE_USER_GROUP, [userid, groupid])
|
||||
|
||||
try:
|
||||
cursor.execute(Phpbb3Manager.SQL_REMOVE_USER_GROUP, [userid, groupid])
|
||||
except:
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def check_user(username):
|
||||
|
@ -18,7 +18,7 @@ class Teamspeak3Manager:
|
||||
def __santatize_username(username):
|
||||
sanatized = username.replace(" ", "_")
|
||||
sanatized = sanatized.replace("'", "")
|
||||
return sanatized.lower()
|
||||
return sanatized
|
||||
|
||||
@staticmethod
|
||||
def __generate_username(username, corp_ticker):
|
||||
@ -207,8 +207,10 @@ class Teamspeak3Manager:
|
||||
|
||||
@staticmethod
|
||||
def update_groups(uid, l_groups):
|
||||
print uid
|
||||
print l_groups
|
||||
userid = Teamspeak3Manager._get_userid(uid)
|
||||
if userid:
|
||||
if userid is not None:
|
||||
server_groups = Teamspeak3Manager._group_list()
|
||||
user_groups = set(Teamspeak3Manager._user_group_list(userid))
|
||||
groups = []
|
||||
|
Loading…
x
Reference in New Issue
Block a user