mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-14 14:52:15 +00:00
87 lines
2.9 KiB
Python
87 lines
2.9 KiB
Python
import xmlrpclib
|
|
from sso.services import BaseService
|
|
from django.conf import settings
|
|
from hashlib import md5
|
|
|
|
class IPBService(BaseService):
|
|
|
|
settings = { 'require_user': True,
|
|
'require_password': True,
|
|
'provide_login': False,
|
|
'use_auth_username': True,
|
|
'ipb_display_name': "[%(corp)s] - %(name)s",
|
|
'ipb_endpoint': 'http://ipb.pleaseignore.com/interface/board/index.php',
|
|
'ipb_api_key': '51242ecca069b986106f04db1047cfc4',
|
|
'ipb_api_module': 'ipb' }
|
|
|
|
def exec_xmlrpc(self, func, **kwargs):
|
|
""" Send a XMLRPC request """
|
|
if not hasattr(self, '_server'):
|
|
self._server = xmlrpclib.Server(self.settings['ipb_endpoint'], verbose=True)
|
|
params = {}
|
|
for i in kwargs:
|
|
params[i] = kwargs[i]
|
|
params['api_key'] = self.settings['ipb_api_key']
|
|
params['api_module'] = self.settings['ipb_api_module']
|
|
|
|
return getattr(self._server, func)(params)
|
|
|
|
def _create_group(self, name):
|
|
""" Creates a IPB membergroup """
|
|
ret = self.exec_xmlrpc('createGroup', group_name=name)
|
|
if ret:
|
|
return {'name': name, 'id': ret['changeSuccessful']}
|
|
|
|
def add_user(self, username, password, **kwargs):
|
|
""" Add user to service """
|
|
|
|
password = md5(password).hexdigest()
|
|
details = { 'name': kwargs['character'].name,
|
|
'alli': kwargs['character'].corporation.alliance.ticker,
|
|
'corp': kwargs['character'].corporation.ticker }
|
|
display = self.settings['ipb_display_name'] % details
|
|
ret = self.exec_xmlrpc('createUser', username=username, email=kwargs['user'].email, display_name=display, password=password)
|
|
|
|
return username
|
|
|
|
def delete_user(self, uid):
|
|
""" Delete a user """
|
|
pass
|
|
|
|
def check_user(self, username):
|
|
""" Check if the username exists """
|
|
ret = self.exec_xmlrpc('fetchMember', search_type='email', search_string=username)
|
|
return ret
|
|
|
|
def disable_user(self, uid):
|
|
""" Disable a user """
|
|
pass
|
|
|
|
def enable_user(self, uid, password):
|
|
""" Enable a user """
|
|
pass
|
|
|
|
def reset_password(self, uid, password):
|
|
""" Reset the user's password """
|
|
pass
|
|
|
|
def update_groups(self, uid, groups, character=None):
|
|
|
|
user_id = self.check_user(uid)
|
|
|
|
# Get all IPB groups
|
|
|
|
# Iterate through the provided group list and create any missing ones
|
|
grplist = []
|
|
for g in groups:
|
|
if not g.name in grplist:
|
|
ret = self._create_group(g.name)
|
|
if ret:
|
|
grplist[ret['name']] = ret['id']
|
|
|
|
# Assign each group to the user id
|
|
for gk in grplist:
|
|
self.exec_xmlrpc('updateUserGroup', user_id=user_id, group_name=gk, action='ADD')
|
|
|
|
ServiceClass = 'IPBService'
|