mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-11 17:46:20 +01:00
Added blue support to the auth
This commit is contained in:
@@ -2,6 +2,8 @@ import evelink.api
|
||||
import evelink.char
|
||||
import evelink.eve
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
class EveApiManager():
|
||||
def __init__(self):
|
||||
@@ -105,7 +107,7 @@ class EveApiManager():
|
||||
try:
|
||||
api = evelink.api.API(api_key=(api_id, api_key))
|
||||
account = evelink.account.Account(api=api)
|
||||
info = account.status()
|
||||
info = account.key_info()
|
||||
return True
|
||||
except evelink.api.APIError as error:
|
||||
return False
|
||||
@@ -122,4 +124,58 @@ class EveApiManager():
|
||||
except evelink.api.APIError as error:
|
||||
return False
|
||||
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def check_if_id_is_corp(corp_id):
|
||||
try:
|
||||
api = evelink.api.API()
|
||||
corp = evelink.corp.Corp(api=api)
|
||||
corpinfo = corp.corporation_sheet(corp_id=int(corp_id))
|
||||
results = corpinfo[0]
|
||||
return True
|
||||
except evelink.api.APIError as error:
|
||||
return False
|
||||
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def get_alliance_standings():
|
||||
if settings.ALLIANCE_EXEC_CORP_ID != "":
|
||||
try:
|
||||
api = evelink.api.API(api_key=(settings.ALLIANCE_EXEC_CORP_ID, settings.ALLIANCE_EXEC_CORP_VCODE))
|
||||
corp = evelink.corp.Corp(api=api)
|
||||
corpinfo = corp.contacts()
|
||||
results = corpinfo[0]
|
||||
return results
|
||||
except evelink.api.APIError as error:
|
||||
pass
|
||||
|
||||
return {}
|
||||
|
||||
@staticmethod
|
||||
def check_if_id_is_alliance(alliance_id):
|
||||
try:
|
||||
api = evelink.api.API()
|
||||
eve = evelink.eve.EVE(api=api)
|
||||
alliance = eve.alliances()
|
||||
results = alliance[0][int(alliance_id)]
|
||||
if results:
|
||||
return True
|
||||
except evelink.api.APIError as error:
|
||||
return False
|
||||
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def check_if_id_is_character(character_id):
|
||||
try:
|
||||
api = evelink.api.API()
|
||||
eve = evelink.eve.EVE(api=api)
|
||||
results = eve.character_info_from_id(character_id)
|
||||
if results:
|
||||
return True
|
||||
except evelink.api.APIError as error:
|
||||
return False
|
||||
|
||||
return False
|
||||
@@ -56,6 +56,10 @@ class MumbleManager:
|
||||
def __generate_username(username, corp_ticker):
|
||||
return "[" + corp_ticker + "]" + username
|
||||
|
||||
@staticmethod
|
||||
def __generate_username_blue(username, corp_ticker):
|
||||
return "[BLUE][" + corp_ticker + "]" + username
|
||||
|
||||
@staticmethod
|
||||
def _gen_pwhash(password):
|
||||
return hashlib.sha1(password).hexdigest()
|
||||
@@ -133,6 +137,26 @@ class MumbleManager:
|
||||
|
||||
return "", ""
|
||||
|
||||
@staticmethod
|
||||
def create_blue_user(corp_ticker, username):
|
||||
dbcursor = connections['mumble'].cursor()
|
||||
username_clean = MumbleManager.__generate_username_blue(MumbleManager.__santatize_username(username),
|
||||
corp_ticker)
|
||||
password = MumbleManager.__generate_random_pass()
|
||||
pwhash = MumbleManager._gen_pwhash(password)
|
||||
|
||||
try:
|
||||
dbcursor.execute(MumbleManager.SQL_SELECT_USER_MAX_ID)
|
||||
user_id = dbcursor.fetchone()[0]
|
||||
|
||||
dbcursor.execute(MumbleManager.SQL_CREATE_USER,
|
||||
[settings.MUMBLE_SERVER_ID, user_id, username_clean, pwhash])
|
||||
|
||||
return username_clean, password
|
||||
except:
|
||||
|
||||
return "", ""
|
||||
|
||||
@staticmethod
|
||||
def check_user_exist(username):
|
||||
dbcursor = connections['mumble'].cursor()
|
||||
|
||||
@@ -157,6 +157,20 @@ def activate_mumble(request):
|
||||
return HttpResponseRedirect("/dashboard")
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.blue_member')
|
||||
def activate_blue_mumble(request):
|
||||
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
|
||||
character = EveManager.get_character_by_id(authinfo.main_char_id)
|
||||
result = MumbleManager.create_blue_user(character.corporation_ticker, character.character_name)
|
||||
# if its empty we failed
|
||||
if result[0] is not "":
|
||||
AuthServicesInfoManager.update_user_mumble_info(result[0], result[1], request.user)
|
||||
update_mumble_groups(request.user)
|
||||
return HttpResponseRedirect("/services/")
|
||||
return HttpResponseRedirect("/dashboard")
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.alliance_member')
|
||||
def deactivate_mumble(request):
|
||||
@@ -169,6 +183,18 @@ def deactivate_mumble(request):
|
||||
return HttpResponseRedirect("/")
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.blue_member')
|
||||
def deactivate_blue_mumble(request):
|
||||
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
|
||||
result = MumbleManager.delete_user(authinfo.mumble_username)
|
||||
# if false we failed
|
||||
if result:
|
||||
AuthServicesInfoManager.update_user_mumble_info("", "", request.user)
|
||||
return HttpResponseRedirect("/services/")
|
||||
return HttpResponseRedirect("/")
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.alliance_member')
|
||||
def reset_mumble_password(request):
|
||||
@@ -178,4 +204,16 @@ def reset_mumble_password(request):
|
||||
if result != "":
|
||||
AuthServicesInfoManager.update_user_mumble_info(authinfo.mumble_username, result, request.user)
|
||||
return HttpResponseRedirect("/services/")
|
||||
return HttpResponseRedirect("/")
|
||||
return HttpResponseRedirect("/")
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.blue_member')
|
||||
def reset_mumble_password(request):
|
||||
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
|
||||
result = MumbleManager.update_user_password(authinfo.mumble_username)
|
||||
# if blank we failed
|
||||
if result != "":
|
||||
AuthServicesInfoManager.update_user_mumble_info(authinfo.mumble_username, result, request.user)
|
||||
return HttpResponseRedirect("/services/")
|
||||
return HttpResponseRedirect("/")
|
||||
|
||||
Reference in New Issue
Block a user