mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-13 22:40:16 +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):
|
class SyncGroupCache(models.Model):
|
||||||
groupname = models.CharField(max_length=254)
|
groupname = models.CharField(max_length=254)
|
||||||
|
servicename = models.CharField(max_length=254, default="")
|
||||||
|
|
||||||
user = models.ForeignKey(User)
|
user = models.ForeignKey(User)
|
||||||
|
|
||||||
def __str__(self):
|
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)
|
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):
|
def add_to_databases(user, groups, syncgroups):
|
||||||
authserviceinfo = None
|
authserviceinfo = None
|
||||||
try:
|
try:
|
||||||
@ -95,25 +103,27 @@ def add_to_databases(user, groups, syncgroups):
|
|||||||
|
|
||||||
update = False
|
update = False
|
||||||
for group in groups:
|
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 != "":
|
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 != "":
|
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 != "":
|
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 != "":
|
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 != "":
|
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):
|
def remove_from_databases(user, groups, syncgroups):
|
||||||
|
@ -6,7 +6,6 @@ from django.conf import settings
|
|||||||
|
|
||||||
|
|
||||||
class IPBoardManager:
|
class IPBoardManager:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@ -23,15 +22,18 @@ class IPBoardManager:
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def exec_xmlrpc(func, **kwargs):
|
def exec_xmlrpc(func, **kwargs):
|
||||||
""" Send a XMLRPC request """
|
""" 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)
|
return getattr(server, func)(params)
|
||||||
params = {}
|
except:
|
||||||
for i in kwargs:
|
return {}
|
||||||
params[i] = kwargs[i]
|
|
||||||
params['api_key'] = settings.IPBOARD_APIKEY
|
|
||||||
params['api_module'] = settings.IPBOARD_APIMODULE
|
|
||||||
print params
|
|
||||||
return getattr(server, func)(params)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def add_user(username, email):
|
def add_user(username, email):
|
||||||
@ -39,7 +41,8 @@ class IPBoardManager:
|
|||||||
sanatized = str(IPBoardManager.__santatize_username(username))
|
sanatized = str(IPBoardManager.__santatize_username(username))
|
||||||
plain_password = IPBoardManager.__generate_random_pass()
|
plain_password = IPBoardManager.__generate_random_pass()
|
||||||
password = md5(plain_password).hexdigest()
|
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
|
return sanatized, plain_password
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -218,7 +218,13 @@ class MumbleManager:
|
|||||||
for g in addgroups:
|
for g in addgroups:
|
||||||
if not g in mumble_groups:
|
if not g in mumble_groups:
|
||||||
mumble_groups[g] = MumbleManager._add_group(g)
|
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:
|
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
|
@staticmethod
|
||||||
def __add_user_to_group(userid, groupid):
|
def __add_user_to_group(userid, groupid):
|
||||||
cursor = connections['phpbb3'].cursor()
|
try:
|
||||||
cursor.execute(Phpbb3Manager.SQL_ADD_USER_GROUP, [groupid, userid, 0])
|
cursor = connections['phpbb3'].cursor()
|
||||||
|
cursor.execute(Phpbb3Manager.SQL_ADD_USER_GROUP, [groupid, userid, 0])
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def __remove_user_from_group(userid, groupid):
|
def __remove_user_from_group(userid, groupid):
|
||||||
cursor = connections['phpbb3'].cursor()
|
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
|
@staticmethod
|
||||||
def add_user(username, email, groups):
|
def add_user(username, email, groups):
|
||||||
@ -118,8 +124,8 @@ class Phpbb3Manager:
|
|||||||
try:
|
try:
|
||||||
|
|
||||||
cursor.execute(Phpbb3Manager.SQL_ADD_USER, [username_clean, username_clean, pwhash,
|
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)
|
Phpbb3Manager.update_groups(username_clean, groups)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
@ -176,8 +182,10 @@ class Phpbb3Manager:
|
|||||||
|
|
||||||
if userid:
|
if userid:
|
||||||
if groupid:
|
if groupid:
|
||||||
cursor.execute(Phpbb3Manager.SQL_REMOVE_USER_GROUP, [userid, groupid])
|
try:
|
||||||
|
cursor.execute(Phpbb3Manager.SQL_REMOVE_USER_GROUP, [userid, groupid])
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def check_user(username):
|
def check_user(username):
|
||||||
|
@ -18,7 +18,7 @@ class Teamspeak3Manager:
|
|||||||
def __santatize_username(username):
|
def __santatize_username(username):
|
||||||
sanatized = username.replace(" ", "_")
|
sanatized = username.replace(" ", "_")
|
||||||
sanatized = sanatized.replace("'", "")
|
sanatized = sanatized.replace("'", "")
|
||||||
return sanatized.lower()
|
return sanatized
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def __generate_username(username, corp_ticker):
|
def __generate_username(username, corp_ticker):
|
||||||
@ -207,8 +207,10 @@ class Teamspeak3Manager:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def update_groups(uid, l_groups):
|
def update_groups(uid, l_groups):
|
||||||
|
print uid
|
||||||
|
print l_groups
|
||||||
userid = Teamspeak3Manager._get_userid(uid)
|
userid = Teamspeak3Manager._get_userid(uid)
|
||||||
if userid:
|
if userid is not None:
|
||||||
server_groups = Teamspeak3Manager._group_list()
|
server_groups = Teamspeak3Manager._group_list()
|
||||||
user_groups = set(Teamspeak3Manager._user_group_list(userid))
|
user_groups = set(Teamspeak3Manager._user_group_list(userid))
|
||||||
groups = []
|
groups = []
|
||||||
|
Loading…
x
Reference in New Issue
Block a user