mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-14 06:42:16 +00:00
92 lines
2.7 KiB
Python
92 lines
2.7 KiB
Python
from mumble.models import Mumble, MumbleUser
|
|
from sso.services import BaseService
|
|
|
|
import settings
|
|
|
|
class MumbleService(BaseService):
|
|
|
|
settings = { 'require_user': True,
|
|
'require_password': True,
|
|
'provide_login': False,
|
|
'use_corptag': True }
|
|
|
|
def _get_server(self):
|
|
return Mumble.objects.get(id=settings.MUMBLE_SERVER_ID)
|
|
|
|
def add_user(self, username, password, **kwargs):
|
|
""" Add a user, returns a UID for that user """
|
|
|
|
if 'character' in kwargs and self.settings['use_corptag']:
|
|
if kwargs['character'].corporation:
|
|
if kwargs['character'].corporation.alliance:
|
|
tag = kwargs['character'].corporation.alliance.ticker
|
|
else:
|
|
tag = kwargs['character'].corporation.ticker
|
|
|
|
if tag:
|
|
username = "[%s]%s" % (tag, username)
|
|
|
|
mumbleuser = MumbleUser()
|
|
mumbleuser.name = username
|
|
mumbleuser.password = password
|
|
mumbleuser.server = self._get_server()
|
|
|
|
if 'user' in kwargs:
|
|
mumbleuser.user = kwargs['user']
|
|
|
|
mumbleuser.save()
|
|
return mumbleuser.name
|
|
|
|
def check_user(self, username):
|
|
""" Check if the username exists """
|
|
try:
|
|
mumbleuser = MumbleUser.objects.get(name=username, server=self._get_server())
|
|
except MumbleUser.DoesNotExist:
|
|
return False
|
|
else:
|
|
return True
|
|
|
|
def delete_user(self, uid):
|
|
""" Delete a user by uid """
|
|
mumbleuser = MumbleUser.objects.get(name=uid, server=self._get_server())
|
|
mumbleuser.delete()
|
|
return True
|
|
|
|
def disable_user(self, uid):
|
|
""" Disable a user by uid """
|
|
|
|
srv = self._get_server()
|
|
try:
|
|
mumbleuser = MumbleUser.objects.get(name=uid, server=srv)
|
|
except MumbleUser.DoesNotExist:
|
|
return False
|
|
mumbleuser.password = ""
|
|
mumbleuser.save()
|
|
|
|
for session in srv.players:
|
|
userdtl = srv.players[session]
|
|
if userdtl.name == uid:
|
|
srv.kickUser(session, "Account Disabled")
|
|
return True
|
|
|
|
def enable_user(self, uid, password):
|
|
""" Enable a user by uid """
|
|
try:
|
|
mumbleuser = MumbleUser.objects.get(name=uid, server=self._get_server())
|
|
except MumbleUser.DoesNotExist:
|
|
return False
|
|
mumbleuser.password = password
|
|
mumbleuser.save()
|
|
return True
|
|
|
|
def reset_password(self, uid, password):
|
|
""" Reset the user's password """
|
|
return self.enable_user(uid, password)
|
|
|
|
def login(uid):
|
|
""" Login the user and provide cookies back """
|
|
pass
|
|
|
|
|
|
ServiceClass = 'MumbleService'
|