mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-08 16:16:18 +01:00
Custom service passwords now available.
- mumble, phpbb, ipboard, jabber Addresses an evemail request.
This commit is contained in:
@@ -35,3 +35,11 @@ class FleetFormatterForm(forms.Form):
|
||||
class DiscordForm(forms.Form):
|
||||
email = forms.CharField(label="Email Address", required=True)
|
||||
password = forms.CharField(label="Password", required=True, widget=forms.PasswordInput)
|
||||
|
||||
class ServicePasswordForm(forms.Form):
|
||||
password = forms.CharField(label="Password", required=True)
|
||||
def clean_password(self):
|
||||
password = self.cleaned_data['password']
|
||||
if not len(password) >= 8:
|
||||
raise forms.ValidationError("Password must be at least 8 characters long.")
|
||||
return password
|
||||
|
||||
@@ -137,8 +137,9 @@ class IPBoardManager:
|
||||
IPBoardManager.remove_user_from_group(username, g)
|
||||
|
||||
@staticmethod
|
||||
def update_user_password(username, email):
|
||||
def update_user_password(username, email, plain_password=None):
|
||||
logger.debug("Settings new IPBoard password for user %s" % username)
|
||||
plain_password = IPBoardManager.__generate_random_pass()
|
||||
if not plain_password:
|
||||
plain_password = IPBoardManager.__generate_random_pass()
|
||||
IPBoardManager.update_user(username, email, plain_password)
|
||||
return plain_password
|
||||
|
||||
@@ -213,10 +213,11 @@ class MumbleManager:
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def update_user_password(username):
|
||||
def update_user_password(username, password=None):
|
||||
logger.debug("Updating mumble user %s password." % username)
|
||||
dbcursor = connections['mumble'].cursor()
|
||||
password = MumbleManager.__generate_random_pass()
|
||||
if not password:
|
||||
password = MumbleManager.__generate_random_pass()
|
||||
pwhash = MumbleManager._gen_pwhash(password)
|
||||
logger.debug("Proceeding with mumble user %s password update - pwhash starts with %s" % (username, pwhash[0:5]))
|
||||
if MumbleManager.check_user_exist(username):
|
||||
|
||||
@@ -82,10 +82,11 @@ class OpenfireManager:
|
||||
logger.info("Unlocked openfire user %s" % username)
|
||||
|
||||
@staticmethod
|
||||
def update_user_pass(username):
|
||||
def update_user_pass(username, password=None):
|
||||
logger.debug("Updating openfire user %s password." % username)
|
||||
try:
|
||||
password = OpenfireManager.__generate_random_pass()
|
||||
if not password:
|
||||
password = OpenfireManager.__generate_random_pass()
|
||||
api = ofUsers(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY)
|
||||
api.update_user(username, password=password)
|
||||
logger.info("Updated openfire user %s password." % username)
|
||||
|
||||
@@ -248,10 +248,11 @@ class Phpbb3Manager:
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def update_user_password(username, characterid):
|
||||
def update_user_password(username, characterid, password=None):
|
||||
logger.debug("Updating phpbb user %s password" % username)
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
password = Phpbb3Manager.__generate_random_pass()
|
||||
if not password:
|
||||
password = Phpbb3Manager.__generate_random_pass()
|
||||
if Phpbb3Manager.check_user(username):
|
||||
pwhash = Phpbb3Manager.__gen_hash(password)
|
||||
logger.debug("Proceeding to update phpbb user %s password with pwhash starting with %s" % (username, pwhash[0:5]))
|
||||
|
||||
@@ -26,6 +26,7 @@ from celerytask.tasks import update_discord_groups
|
||||
from forms import JabberBroadcastForm
|
||||
from forms import FleetFormatterForm
|
||||
from forms import DiscordForm
|
||||
from forms import ServicePasswordForm
|
||||
from util import check_if_user_has_permission
|
||||
|
||||
import threading
|
||||
@@ -457,3 +458,128 @@ def activate_discord(request):
|
||||
logger.debug("Rendering form for user %s with success %s" % (request.user, success))
|
||||
context = {'form': form, 'success': success}
|
||||
return render_to_response('registered/discord.html', context, context_instance=RequestContext(request))
|
||||
|
||||
@login_required
|
||||
@user_passes_test(service_blue_alliance_test)
|
||||
def set_forum_password(request):
|
||||
logger.debug("set_forum_password called by user %s" % request.user)
|
||||
error = None
|
||||
if request.method == 'POST':
|
||||
logger.debug("Received POST request with form.")
|
||||
form = ServicePasswordForm(request.POST)
|
||||
logger.debug("Form is valid: %s" % form.is_valid())
|
||||
if form.is_valid():
|
||||
password = form.cleaned_data['password']
|
||||
logger.debug("Form contains password of length %s" % len(password))
|
||||
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
|
||||
result = Phpbb3Manager.update_user_password(authinfo.forum_username, authinfo.main_char_id, password=password)
|
||||
if result != "":
|
||||
AuthServicesInfoManager.update_user_forum_info(authinfo.forum_username, result, request.user)
|
||||
logger.info("Succesfully reset forum password for user %s" % request.user)
|
||||
return HttpResponseRedirect("/services/")
|
||||
else:
|
||||
logger.error("Failed to install custom forum password for user %s" % request.user)
|
||||
error = "Failed to install custom password."
|
||||
else:
|
||||
error = "Invalid password provided"
|
||||
else:
|
||||
logger.debug("Request is not type POST - providing empty form.")
|
||||
form = ServicePasswordForm()
|
||||
|
||||
logger.debug("Rendering form for user %s" % request.user)
|
||||
context = {'form': form, 'service': 'Forum'}
|
||||
return render_to_response('registered/service_password.html', context, context_instance=RequestContext(request))
|
||||
|
||||
@login_required
|
||||
@user_passes_test(service_blue_alliance_test)
|
||||
def set_mumble_password(request):
|
||||
logger.debug("set_mumble_password called by user %s" % request.user)
|
||||
error = None
|
||||
if request.method == 'POST':
|
||||
logger.debug("Received POST request with form.")
|
||||
form = ServicePasswordForm(request.POST)
|
||||
logger.debug("Form is valid: %s" % form.is_valid())
|
||||
if form.is_valid():
|
||||
password = form.cleaned_data['password']
|
||||
logger.debug("Form contains password of length %s" % len(password))
|
||||
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
|
||||
result = MumbleManager.update_user_password(authinfo.mumble_username, password=password)
|
||||
if result != "":
|
||||
AuthServicesInfoManager.update_user_mumble_info(authinfo.mumble_username, result, request.user)
|
||||
logger.info("Succesfully reset forum password for user %s" % request.user)
|
||||
return HttpResponseRedirect("/services/")
|
||||
else:
|
||||
logger.error("Failed to install custom mumble password for user %s" % request.user)
|
||||
error = "Failed to install custom password."
|
||||
else:
|
||||
error = "Invalid password provided"
|
||||
else:
|
||||
logger.debug("Request is not type POST - providing empty form.")
|
||||
form = ServicePasswordForm()
|
||||
|
||||
logger.debug("Rendering form for user %s" % request.user)
|
||||
context = {'form': form, 'service': 'Mumble', 'error': error}
|
||||
return render_to_response('registered/service_password.html', context, context_instance=RequestContext(request))
|
||||
|
||||
@login_required
|
||||
@user_passes_test(service_blue_alliance_test)
|
||||
def set_jabber_password(request):
|
||||
logger.debug("set_jabber_password called by user %s" % request.user)
|
||||
error = None
|
||||
if request.method == 'POST':
|
||||
logger.debug("Received POST request with form.")
|
||||
form = ServicePasswordForm(request.POST)
|
||||
logger.debug("Form is valid: %s" % form.is_valid())
|
||||
if form.is_valid():
|
||||
password = form.cleaned_data['password']
|
||||
logger.debug("Form contains password of length %s" % len(password))
|
||||
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
|
||||
result = OpenfireManager.update_user_pass(authinfo.jabber_username, password=password)
|
||||
if result != "":
|
||||
AuthServicesInfoManager.update_user_jabber_info(authinfo.jabber_username, result, request.user)
|
||||
logger.info("Succesfully reset forum password for user %s" % request.user)
|
||||
return HttpResponseRedirect("/services/")
|
||||
else:
|
||||
logger.error("Failed to install custom jabber password for user %s" % request.user)
|
||||
error = "Failed to install custom password."
|
||||
else:
|
||||
error = "Invalid password provided"
|
||||
else:
|
||||
logger.debug("Request is not type POST - providing empty form.")
|
||||
form = ServicePasswordForm()
|
||||
|
||||
logger.debug("Rendering form for user %s" % request.user)
|
||||
context = {'form': form, 'service': 'Jabber', 'error': error}
|
||||
return render_to_response('registered/service_password.html', context, context_instance=RequestContext(request))
|
||||
|
||||
@login_required
|
||||
@user_passes_test(service_blue_alliance_test)
|
||||
def set_ipboard_password(request):
|
||||
logger.debug("set_forum_password called by user %s" % request.user)
|
||||
error = None
|
||||
if request.method == 'POST':
|
||||
logger.debug("Received POST request with form.")
|
||||
form = ServicePasswordForm(request.POST)
|
||||
logger.debug("Form is valid: %s" % form.is_valid())
|
||||
if form.is_valid():
|
||||
password = form.cleaned_data['password']
|
||||
logger.debug("Form contains password of length %s" % len(password))
|
||||
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
|
||||
result = IPBoardManager.update_user_password(authinfo.ipboard_username, request.user.email, plain_password=password)
|
||||
if result != "":
|
||||
AuthServicesInfoManager.update_user_ipboard_info(authinfo.ipboard_username, result, request.user)
|
||||
logger.info("Succesfully reset forum password for user %s" % request.user)
|
||||
return HttpResponseRedirect("/services/")
|
||||
else:
|
||||
logger.error("Failed to install custom ipboard password for user %s" % request.user)
|
||||
error = "Failed to install custom password."
|
||||
else:
|
||||
error = "Invalid password provided"
|
||||
else:
|
||||
logger.debug("Request is not type POST - providing empty form.")
|
||||
form = ServicePasswordForm()
|
||||
|
||||
logger.debug("Rendering form for user %s" % request.user)
|
||||
context = {'form': form, 'service': 'IPBoard', 'error': error}
|
||||
return render_to_response('registered/service_password.html', context, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user