mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-08 08:06:20 +01:00
Prompt users to join TS when creating account
- will allow groups to sync - add button to get back to this prompt - do not sync groups until joined server Closes #331
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from django import forms
|
||||
from services.managers.teamspeak3_manager import Teamspeak3Manager
|
||||
|
||||
class JabberBroadcastForm(forms.Form):
|
||||
group = forms.ChoiceField(widget=forms.Select)
|
||||
@@ -30,3 +31,11 @@ class ServicePasswordForm(forms.Form):
|
||||
if not len(password) >= 8:
|
||||
raise forms.ValidationError("Password must be at least 8 characters long.")
|
||||
return password
|
||||
|
||||
class TeamspeakJoinForm(forms.Form):
|
||||
username = forms.CharField(widget=forms.HiddenInput())
|
||||
|
||||
def clean(self):
|
||||
if Teamspeak3Manager._get_userid(self.cleaned_data['username']):
|
||||
return self.cleaned_data
|
||||
raise forms.ValidationError("Unable to locate user %s on server" % self.cleaned_data['username'])
|
||||
|
||||
@@ -88,11 +88,9 @@ class Teamspeak3Manager:
|
||||
if type(groups) == list:
|
||||
logger.debug("Recieved multiple groups. Iterating.")
|
||||
for group in groups:
|
||||
logger.debug("Assigning name/id dict: %s = %s" % (group['keys']['name'], group['keys']['sgid']))
|
||||
outlist[group['keys']['name']] = group['keys']['sgid']
|
||||
elif type(groups) == dict:
|
||||
logger.debug("Recieved single group.")
|
||||
logger.debug("Assigning name/id dict: %s = %s" % (groups['keys']['name'], groups['keys']['sgid']))
|
||||
outlist[groups['keys']['name']] = groups['keys']['sgid']
|
||||
logger.debug("Returning name/id pairing: %s" % outlist)
|
||||
return outlist
|
||||
|
||||
@@ -26,6 +26,7 @@ from forms import JabberBroadcastForm
|
||||
from forms import FleetFormatterForm
|
||||
from forms import DiscordForm
|
||||
from forms import ServicePasswordForm
|
||||
from forms import TeamspeakJoinForm
|
||||
from util import check_if_user_has_permission
|
||||
|
||||
import threading
|
||||
@@ -339,12 +340,32 @@ def activate_teamspeak3(request):
|
||||
if result[0] is not "":
|
||||
AuthServicesInfoManager.update_user_teamspeak3_info(result[0], result[1], request.user)
|
||||
logger.debug("Updated authserviceinfo for user %s with TS3 credentials. Updating groups." % request.user)
|
||||
update_teamspeak3_groups.delay(request.user.pk)
|
||||
logger.info("Succesfully activated TS3 for user %s" % request.user)
|
||||
return HttpResponseRedirect("/services/")
|
||||
return HttpResponseRedirect("/verify_teamspeak3/")
|
||||
logger.error("Unsuccessful attempt to activate TS3 for user %s" % request.user)
|
||||
return HttpResponseRedirect("/dashboard")
|
||||
|
||||
@login_required
|
||||
@user_passes_test(service_blue_alliance_test)
|
||||
def verify_teamspeak3(request):
|
||||
logger.debug("verify_teamspeak3 called by user %s" % request.user)
|
||||
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
|
||||
if not authinfo.teamspeak3_uid:
|
||||
logger.warn("Unable to validate user %s teamspeak: no teamspeak data" % request.user)
|
||||
return HttpResponseRedirect("/services")
|
||||
if request.method == "POST":
|
||||
form = TeamspeakJoinForm(request.POST)
|
||||
if form.is_valid():
|
||||
update_teamspeak3_groups.delay(request.user.pk)
|
||||
logger.debug("Validated user %s joined TS server")
|
||||
return HttpResponseRedirect("/services/")
|
||||
else:
|
||||
form = TeamspeakJoinForm({'username':authinfo.teamspeak3_uid})
|
||||
context = {
|
||||
'form': form,
|
||||
'authinfo': authinfo,
|
||||
}
|
||||
return render_to_response('registered/teamspeakjoin.html', context, context_instance=RequestContext(request))
|
||||
|
||||
@login_required
|
||||
@user_passes_test(service_blue_alliance_test)
|
||||
|
||||
Reference in New Issue
Block a user