Files
test-auth/sso/services/mumble/__init__.py
2010-04-05 22:34:21 +01:00

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'