diff --git a/app/sso/tasks.py b/app/sso/tasks.py
index afb027a..7af87ab 100644
--- a/app/sso/tasks.py
+++ b/app/sso/tasks.py
@@ -91,7 +91,6 @@ def update_user_access(user, **kwargs):
for servacc in ServiceAccount.objects.filter(user=user):
servacc.active = 0
servacc.save()
- pass
else:
# For each of the user's services, check they're in a valid group for it and enable/disable as needed.
for servacc in ServiceAccount.objects.filter(user=user):
@@ -99,12 +98,10 @@ def update_user_access(user, **kwargs):
if servacc.active:
servacc.active = 0
servacc.save()
- pass
else:
if not servacc.active:
servacc.active = 1
servacc.save()
- pass
notifyurls = AuthAPIKey.objects.filter(active=True).exclude(callback='')
if notifyurls.count():
diff --git a/app/sso/templates/sso/lookup/user.html b/app/sso/templates/sso/lookup/user.html
index 0f4678c..6bb66fe 100644
--- a/app/sso/templates/sso/lookup/user.html
+++ b/app/sso/templates/sso/lookup/user.html
@@ -19,6 +19,9 @@
{% if "hr"|installed %}
Blacklist Status: {% if blacklisted %}BLACKLISTED ({{ blacklisted }} items){% else %}OK{% endif %}
{% endif %}
+{% if user.ip_addresses.count %}
+IP Address Lookup ({{ user.ip_addresses.count }} associated addresses)
+{% endif %}
diff --git a/app/sso/templates/sso/ssouseripaddress_list.html b/app/sso/templates/sso/ssouseripaddress_list.html
new file mode 100644
index 0000000..9b825a4
--- /dev/null
+++ b/app/sso/templates/sso/ssouseripaddress_list.html
@@ -0,0 +1,25 @@
+{% extends "base.html" %}
+
+{% block title %}IP Search: {% if kuser %}{{ kuser }}{% else %}{{ ip }}{% endif %}{% endblock %}
+
+{% block content %}
+
IP Search: {% if kuser %}{{ kuser }}{% else %}{{ ip }}{% endif %}
+
+{% if object_list %}
+
+{% endif %}
+
+{% endblock %}
diff --git a/app/sso/urls.py b/app/sso/urls.py
index ca131ef..bdacf9d 100644
--- a/app/sso/urls.py
+++ b/app/sso/urls.py
@@ -7,7 +7,7 @@ from sso import views
urlpatterns = patterns('',
('^$', views.profile),
- (r'^profile/$', views.profile),
+ url(r'^profile/$', views.profile, name='sso-profile'),
(r'^profile/add/service', views.service_add),
(r'^profile/del/service/$', views.service_del),
(r'^profile/del/service/(?P\d+)/$', views.service_del),
@@ -23,6 +23,8 @@ urlpatterns = patterns('',
(r'^users/$', views.user_lookup),
url(r'^users/(?P.*)/addnote/$', login_required(views.AddUserNote.as_view()), name='sso-addusernote'),
url(r'^users/(?P.*)/$', views.user_view, name='sso-viewuser'),
+
+ url(r'^address/$', login_required(views.UserIPAddressView.as_view()), name='sso-ipaddress'),
)
urlpatterns += patterns('django.views.generic.simple',
diff --git a/app/sso/views.py b/app/sso/views.py
index 07e6ab5..df43a43 100644
--- a/app/sso/views.py
+++ b/app/sso/views.py
@@ -13,7 +13,7 @@ from django.contrib.auth.decorators import login_required
from django.template import RequestContext
from django.core import serializers
from django.conf import settings
-from django.views.generic import FormView
+from django.views.generic import FormView, ListView
from gargoyle import gargoyle
from gargoyle.decorators import switch_is_active
@@ -23,7 +23,7 @@ from eve_api.models import EVEAccount, EVEPlayerCharacter
from eve_api.tasks import import_apikey, import_apikey_result, update_user_access
from eve_proxy.models import ApiAccessLog
from reddit.tasks import update_user_flair
-from sso.models import ServiceAccount, Service, SSOUser, ExistingUser, ServiceError
+from sso.models import ServiceAccount, Service, SSOUser, ExistingUser, ServiceError, SSOUserIPAddress
from sso.forms import UserServiceAccountForm, ServiceAccountResetForm, UserLookupForm, APIPasswordForm, EmailChangeForm, PrimaryCharacterForm, UserNoteForm
@login_required
@@ -258,13 +258,13 @@ def refresh_access(request, userid=0, corpid=0, allianceid=0):
for u in users:
update_user_access.delay(u.id)
messages.add_message(request, messages.INFO, "%s accounts queued for update." % users.count())
- return redirect('eveapi-corporation', corporationid=corpid)
+ return redirect('eveapi-corporation', pk=corpid)
if allianceid > 0 and request.user.has_perm('sso.can_refresh_users'):
users = User.objects.filter(eveaccount__characters__corporation__alliance__id=allianceid).distinct()
for u in users:
update_user_access.delay(u.id)
messages.add_message(request, messages.INFO, "%s accounts queued for update." % users.count())
- return redirect('eveapi-alliance', allianceid=allianceid)
+ return redirect('eveapi-alliance', pk=allianceid)
else:
update_user_access(request.user.id)
messages.add_message(request, messages.INFO, "User access updated.")
@@ -366,3 +366,28 @@ class AddUserNote(FormView):
obj.save()
return super(AddUserNote, self).form_valid(form)
+
+
+class UserIPAddressView(ListView):
+
+ model = SSOUserIPAddress
+
+ def dispatch(self, request, *args, **kwargs):
+ if not request.user.has_perm('sso.can_view_users_restricted'):
+ return HttpResponseForbidden()
+ return super(AddUserNote, self).dispatch(request, *args, **kwargs)
+
+ def get_queryset(self):
+ if self.request.GET.has_key('user'):
+ qs = self.model.objects.filter(user__username__exact=self.request.GET.get('user'))
+ else:
+ qs = self.model.objects.filter(ip_address__contains=self.request.GET.get('ip', ''))
+ return qs.order_by('-last_seen')
+
+ def get_context_data(self, **kwargs):
+ ctx = super(UserIPAddressView, self).get_context_data(**kwargs)
+ ctx.update({
+ 'ip': self.request.GET.get('ip', None),
+ 'kuser': self.request.GET.get('user', None),
+ })
+ return ctx