mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-12 22:10:16 +02: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:
parent
ad7ace872f
commit
361e4a6409
@ -130,6 +130,7 @@ urlpatterns = patterns('',
|
|||||||
name='auth_deactivate_teamspeak3'),
|
name='auth_deactivate_teamspeak3'),
|
||||||
url(r'reset_teamspeak3_perm/$', 'services.views.reset_teamspeak3_perm',
|
url(r'reset_teamspeak3_perm/$', 'services.views.reset_teamspeak3_perm',
|
||||||
name='auth_reset_teamspeak3_perm'),
|
name='auth_reset_teamspeak3_perm'),
|
||||||
|
url(r'verify_teamspeak3/$', 'services.views.verify_teamspeak3', name='auth_verify_teamspeak3'),
|
||||||
|
|
||||||
# Discord Service Control
|
# Discord Service Control
|
||||||
url(r'^activate_discord/$', 'services.views.activate_discord', name='auth_activate_discord'),
|
url(r'^activate_discord/$', 'services.views.activate_discord', name='auth_activate_discord'),
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from django import forms
|
from django import forms
|
||||||
|
from services.managers.teamspeak3_manager import Teamspeak3Manager
|
||||||
|
|
||||||
class JabberBroadcastForm(forms.Form):
|
class JabberBroadcastForm(forms.Form):
|
||||||
group = forms.ChoiceField(widget=forms.Select)
|
group = forms.ChoiceField(widget=forms.Select)
|
||||||
@ -30,3 +31,11 @@ class ServicePasswordForm(forms.Form):
|
|||||||
if not len(password) >= 8:
|
if not len(password) >= 8:
|
||||||
raise forms.ValidationError("Password must be at least 8 characters long.")
|
raise forms.ValidationError("Password must be at least 8 characters long.")
|
||||||
return password
|
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:
|
if type(groups) == list:
|
||||||
logger.debug("Recieved multiple groups. Iterating.")
|
logger.debug("Recieved multiple groups. Iterating.")
|
||||||
for group in groups:
|
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']
|
outlist[group['keys']['name']] = group['keys']['sgid']
|
||||||
elif type(groups) == dict:
|
elif type(groups) == dict:
|
||||||
logger.debug("Recieved single group.")
|
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']
|
outlist[groups['keys']['name']] = groups['keys']['sgid']
|
||||||
logger.debug("Returning name/id pairing: %s" % outlist)
|
logger.debug("Returning name/id pairing: %s" % outlist)
|
||||||
return outlist
|
return outlist
|
||||||
|
@ -26,6 +26,7 @@ from forms import JabberBroadcastForm
|
|||||||
from forms import FleetFormatterForm
|
from forms import FleetFormatterForm
|
||||||
from forms import DiscordForm
|
from forms import DiscordForm
|
||||||
from forms import ServicePasswordForm
|
from forms import ServicePasswordForm
|
||||||
|
from forms import TeamspeakJoinForm
|
||||||
from util import check_if_user_has_permission
|
from util import check_if_user_has_permission
|
||||||
|
|
||||||
import threading
|
import threading
|
||||||
@ -339,12 +340,32 @@ def activate_teamspeak3(request):
|
|||||||
if result[0] is not "":
|
if result[0] is not "":
|
||||||
AuthServicesInfoManager.update_user_teamspeak3_info(result[0], result[1], request.user)
|
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)
|
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)
|
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)
|
logger.error("Unsuccessful attempt to activate TS3 for user %s" % request.user)
|
||||||
return HttpResponseRedirect("/dashboard")
|
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
|
@login_required
|
||||||
@user_passes_test(service_blue_alliance_test)
|
@user_passes_test(service_blue_alliance_test)
|
||||||
|
@ -181,6 +181,7 @@
|
|||||||
class="glyphicon glyphicon-ok"></span></button>
|
class="glyphicon glyphicon-ok"></span></button>
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
<a href="{% url 'auth_verify_teamspeak3' %}" class="btn btn-success" title="Verify"><span class="glyphicon glyphicon-user"></a>
|
||||||
<a href="{% url 'auth_reset_teamspeak3_perm' %}">
|
<a href="{% url 'auth_reset_teamspeak3_perm' %}">
|
||||||
<button type="button" class="btn btn-primary"><span
|
<button type="button" class="btn btn-primary"><span
|
||||||
class="glyphicon glyphicon-refresh"></span></button>
|
class="glyphicon glyphicon-refresh"></span></button>
|
||||||
@ -368,6 +369,7 @@
|
|||||||
class="glyphicon glyphicon-ok"></span></button>
|
class="glyphicon glyphicon-ok"></span></button>
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
<a href="{% url 'auth_verify_teamspeak3' %}" class="btn btn-success" title="Verify"><span class="glyphicon glyphicon-user"></a>
|
||||||
<a href="{% url 'auth_reset_teamspeak3_perm' %}">
|
<a href="{% url 'auth_reset_teamspeak3_perm' %}">
|
||||||
<button type="button" class="btn btn-primary"><span
|
<button type="button" class="btn btn-primary"><span
|
||||||
class="glyphicon glyphicon-refresh"></span></button>
|
class="glyphicon glyphicon-refresh"></span></button>
|
||||||
|
26
stock/templates/registered/teamspeakjoin.html
Normal file
26
stock/templates/registered/teamspeakjoin.html
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{% extends "public/base.html" %}
|
||||||
|
{% load bootstrap %}
|
||||||
|
{% load staticfiles %}
|
||||||
|
|
||||||
|
{% block title %}Alliance Auth{% endblock %}
|
||||||
|
|
||||||
|
{% block page_title %}Verify Teamspeak{% endblock page_title %}
|
||||||
|
{% block extra_css %}{% endblock extra_css %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<h1 class="page-header text-center">Verify Teamspeak Identity</h1>
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="col-md-4 col-md-offset-4">
|
||||||
|
<a href="ts3server://{{ TEAMSPEAK3_PUBLIC_URL }}?token={{ authinfo.teamspeak3_perm_key }}&nickname={{ authinfo.teamspeak3_uid }}" class="btn btn-primary btn-block btn-lg" title="Join">Join Server</a>
|
||||||
|
<br/>
|
||||||
|
<form class="form-signin" role="form" action="{% url 'auth_verify_teamspeak3' %}" method="POST">
|
||||||
|
{% csrf_token %}
|
||||||
|
{{ form|bootstrap }}
|
||||||
|
<br/>
|
||||||
|
<button class="btn btn-lg btn-primary btn-block" type="submit">Continue</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
Loading…
x
Reference in New Issue
Block a user