mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-22 14:19:28 +00:00
Allow services to specify to use the charnames or auth username, also add IPB and SMF framework
This commit is contained in:
87
sso/services/ipb/__init__.py
Normal file
87
sso/services/ipb/__init__.py
Normal file
@@ -0,0 +1,87 @@
|
||||
import xmlrpclib
|
||||
from sso.services import BaseService
|
||||
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://testboard.aevumdecessus.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'
|
||||
Reference in New Issue
Block a user