mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-14 14:52:15 +00:00
Merge branch 'master' into forced-username
Conflicts: sso/forms.py
This commit is contained in:
@@ -28,6 +28,17 @@ def import_eve_account(api_key, user_id):
|
|||||||
#print account_doc.body
|
#print account_doc.body
|
||||||
|
|
||||||
dom = minidom.parseString(account_doc.body)
|
dom = minidom.parseString(account_doc.body)
|
||||||
|
|
||||||
|
if dom.getElementsByTagName('error'):
|
||||||
|
try:
|
||||||
|
account = EVEAccount.objects.get(id=user_id)
|
||||||
|
except EVEAccount.DoesNotExist:
|
||||||
|
return
|
||||||
|
|
||||||
|
account.api_status = API_STATUS_OTHER_ERROR
|
||||||
|
account.save()
|
||||||
|
return
|
||||||
|
|
||||||
characters_node_children = dom.getElementsByTagName('rowset')[0].childNodes
|
characters_node_children = dom.getElementsByTagName('rowset')[0].childNodes
|
||||||
|
|
||||||
# Create or retrieve the account last to make sure everything
|
# Create or retrieve the account last to make sure everything
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import logging
|
|||||||
from django_cron import cronScheduler, Job
|
from django_cron import cronScheduler, Job
|
||||||
from eve_api.models.api_player import EVEAccount, EVEPlayerCorporation
|
from eve_api.models.api_player import EVEAccount, EVEPlayerCorporation
|
||||||
import eve_api.api_puller.accounts
|
import eve_api.api_puller.accounts
|
||||||
|
from eve_api.api_exceptions import APIAuthException, APINoUserIDException
|
||||||
|
|
||||||
class UpdateAPIs(Job):
|
class UpdateAPIs(Job):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -2,14 +2,35 @@ from django.contrib import admin
|
|||||||
from reddit.models import RedditAccount
|
from reddit.models import RedditAccount
|
||||||
from reddit.forms import RedditAccountForm
|
from reddit.forms import RedditAccountForm
|
||||||
|
|
||||||
|
from datetime import date
|
||||||
|
|
||||||
class RedditAccountAdmin(admin.ModelAdmin):
|
class RedditAccountAdmin(admin.ModelAdmin):
|
||||||
list_display = ('username', 'user', 'date_created', 'link_karma', 'comment_karma', 'last_update')
|
list_display = ('username', 'user', 'date_created', 'link_karma', 'comment_karma', 'last_update', 'is_valid')
|
||||||
search_fields = ['username', 'user']
|
search_fields = ['username', 'user']
|
||||||
|
|
||||||
fields = ('user', 'username')
|
fields = ('user', 'username')
|
||||||
|
|
||||||
form = RedditAccountForm
|
form = RedditAccountForm
|
||||||
|
|
||||||
|
def is_valid(self, obj):
|
||||||
|
if not obj.date_created:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Account 3 months old?
|
||||||
|
if (date.today() - obj.date_created.date()).days >= 90:
|
||||||
|
return True
|
||||||
|
|
||||||
|
# Account created after 9/2/10 and before 13/2/10
|
||||||
|
if obj.date_created.date() >= date(2010, 2, 9) and obj.date_created.date() <= date(2010, 2, 13):
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
is_valid.short_description = 'Dreddit Eligible'
|
||||||
|
is_valid.boolean = True
|
||||||
|
|
||||||
|
|
||||||
def save_model(self, request, obj, form, change):
|
def save_model(self, request, obj, form, change):
|
||||||
obj.api_update()
|
obj.api_update()
|
||||||
obj.save()
|
obj.save()
|
||||||
|
|||||||
13
sso/cron.py
13
sso/cron.py
@@ -26,23 +26,16 @@ class RemoveInvalidUsers(Job):
|
|||||||
|
|
||||||
# Check each service account and delete access if they're not allowed
|
# Check each service account and delete access if they're not allowed
|
||||||
for servacc in ServiceAccount.objects.filter(user=user):
|
for servacc in ServiceAccount.objects.filter(user=user):
|
||||||
|
if not (set(user.groups.all()) & set(servacc.service.groups.all())):
|
||||||
print servacc.service.groups.all()
|
|
||||||
print user.groups.all()
|
|
||||||
allowedgroups = servacc.service.groups.all()
|
|
||||||
|
|
||||||
print set(servacc.service.groups.all()) & set(servacc.service.groups.all())
|
|
||||||
|
|
||||||
if not (set(servacc.service.groups.all()) & set(servacc.service.groups.all())):
|
|
||||||
print "User %s is not in allowed group for %s, deleting account" % (user.username, servacc.service)
|
print "User %s is not in allowed group for %s, deleting account" % (user.username, servacc.service)
|
||||||
#servacc.delete()
|
servacc.delete()
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# For users set to not active, delete all accounts
|
# For users set to not active, delete all accounts
|
||||||
if not user.is_active:
|
if not user.is_active:
|
||||||
print "User %s is inactive, deleting related service accounts" % user.username
|
print "User %s is inactive, deleting related service accounts" % user.username
|
||||||
for servacc in ServiceAccount.objects.filter(user=user):
|
for servacc in ServiceAccount.objects.filter(user=user):
|
||||||
#servacc.delete()
|
servacc.delete()
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
10
sso/forms.py
10
sso/forms.py
@@ -37,6 +37,16 @@ def UserServiceAccountForm(user):
|
|||||||
character = forms.ChoiceField(chars)
|
character = forms.ChoiceField(chars)
|
||||||
service = forms.ChoiceField(services)
|
service = forms.ChoiceField(services)
|
||||||
|
|
||||||
|
def clean_username(self):
|
||||||
|
field = self.cleaned_data.get('username', '')
|
||||||
|
|
||||||
|
# Checks that usernames consist of letters and numbers only
|
||||||
|
if not re.match("^[A-Za-z0-9_-]*$", field):
|
||||||
|
raise forms.ValidationError("Invalid character in username, use letters and numbers only")
|
||||||
|
|
||||||
|
return field
|
||||||
|
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
if not self.cleaned_data['character'].corporation.group in self.cleaned_data['service'].groups.all():
|
if not self.cleaned_data['character'].corporation.group in self.cleaned_data['service'].groups.all():
|
||||||
raise form.ValidationError("%s is not in a corporation allowed to access %s" % (self.cleaned_data['character'].name, self.cleaned_data['service'])
|
raise form.ValidationError("%s is not in a corporation allowed to access %s" % (self.cleaned_data['character'].name, self.cleaned_data['service'])
|
||||||
|
|||||||
@@ -44,22 +44,23 @@ class SSOUser(models.Model):
|
|||||||
# Create a list of Char groups
|
# Create a list of Char groups
|
||||||
chargroups = []
|
chargroups = []
|
||||||
for eacc in EVEAccount.objects.filter(user=self.user):
|
for eacc in EVEAccount.objects.filter(user=self.user):
|
||||||
for char in eacc.characters.all():
|
if eacc.api_status == 1:
|
||||||
if char.corporation.group:
|
for char in eacc.characters.all():
|
||||||
chargroups.append(char.corporation.group)
|
if char.corporation.group:
|
||||||
|
chargroups.append(char.corporation.group)
|
||||||
|
|
||||||
# Generate the list of groups to add/remove
|
# Generate the list of groups to add/remove
|
||||||
delgroups = set(set(self.user.groups.all()) & set(corpgroups)) - set(chargroups)
|
delgroups = set(set(self.user.groups.all()) & set(corpgroups)) - set(chargroups)
|
||||||
addgroups = set(chargroups) - set(set(self.user.groups.all()) & set(corpgroups))
|
addgroups = set(chargroups) - set(set(self.user.groups.all()) & set(corpgroups))
|
||||||
|
|
||||||
print "Del:", delgroups
|
|
||||||
for g in delgroups:
|
for g in delgroups:
|
||||||
self.user.groups.remove(g)
|
self.user.groups.remove(g)
|
||||||
|
|
||||||
print "Add:", addgroups
|
|
||||||
for g in addgroups:
|
for g in addgroups:
|
||||||
self.user.groups.add(g)
|
self.user.groups.add(g)
|
||||||
|
|
||||||
|
print "%s, Add: %s, Del: %s, Current: %s" % (self.user, addgroups, delgroups, self.user.groups.all())
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.user.__str__()
|
return self.user.__str__()
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class BaseService():
|
|||||||
|
|
||||||
def add_user(self, username, password):
|
def add_user(self, username, password):
|
||||||
""" Add a user, returns a UID for that user """
|
""" Add a user, returns a UID for that user """
|
||||||
pass
|
return username
|
||||||
|
|
||||||
def check_user(self, username):
|
def check_user(self, username):
|
||||||
""" Check if the username exists """
|
""" Check if the username exists """
|
||||||
|
|||||||
20
sso/views.py
20
sso/views.py
@@ -67,9 +67,7 @@ def eveapi_add(request):
|
|||||||
else:
|
else:
|
||||||
form = EveAPIForm() # An unbound form
|
form = EveAPIForm() # An unbound form
|
||||||
|
|
||||||
return render_to_response('sso/eveapi.html', {
|
return render_to_response('sso/eveapi.html', locals())
|
||||||
'form': form,
|
|
||||||
})
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def eveapi_del(request, userid=0):
|
def eveapi_del(request, userid=0):
|
||||||
@@ -113,9 +111,7 @@ def service_add(request):
|
|||||||
#defaults = { 'username': request.user.username, 'password': request.user.get_profile().default_service_passwd }
|
#defaults = { 'username': request.user.username, 'password': request.user.get_profile().default_service_passwd }
|
||||||
form = clsform() # An unbound form
|
form = clsform() # An unbound form
|
||||||
|
|
||||||
return render_to_response('sso/serviceaccount.html', {
|
return render_to_response('sso/serviceaccount.html', locals())
|
||||||
'form': form,
|
|
||||||
})
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def service_del(request, serviceid=0):
|
def service_del(request, serviceid=0):
|
||||||
@@ -150,9 +146,7 @@ def reddit_add(request):
|
|||||||
defaults = { 'username': request.user.username, }
|
defaults = { 'username': request.user.username, }
|
||||||
form = RedditAccountForm(defaults) # An unbound form
|
form = RedditAccountForm(defaults) # An unbound form
|
||||||
|
|
||||||
return render_to_response('sso/redditaccount.html', {
|
return render_to_response('sso/redditaccount.html', locals())
|
||||||
'form': form,
|
|
||||||
})
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def reddit_del(request, redditid=0):
|
def reddit_del(request, redditid=0):
|
||||||
@@ -180,13 +174,9 @@ def user_view(request, user=None):
|
|||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
user = form.cleaned_data['username']
|
user = form.cleaned_data['username']
|
||||||
else:
|
else:
|
||||||
return render_to_response('sso/userlookup.html', {
|
return render_to_response('sso/userlookup.html', locals())
|
||||||
'form': form,
|
|
||||||
})
|
|
||||||
else:
|
else:
|
||||||
return render_to_response('sso/userlookup.html', {
|
return render_to_response('sso/userlookup.html', locals())
|
||||||
'form': form,
|
|
||||||
})
|
|
||||||
|
|
||||||
is_admin = request.user.is_staff
|
is_admin = request.user.is_staff
|
||||||
|
|
||||||
|
|||||||
11
test.py
11
test.py
@@ -1,9 +1,12 @@
|
|||||||
import os
|
import os
|
||||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
|
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
|
||||||
|
|
||||||
from sso.models import Service
|
from eve_api.cron import UpdateAPIs
|
||||||
from sso.services.jabber import JabberService
|
|
||||||
|
|
||||||
b = JabberService()
|
b = UpdateAPIs()
|
||||||
|
b.job()
|
||||||
|
|
||||||
print b.check_user('matalok')
|
from sso.cron import RemoveInvalidUsers
|
||||||
|
|
||||||
|
b = RemoveInvalidUsers()
|
||||||
|
b.job()
|
||||||
|
|||||||
Reference in New Issue
Block a user