mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-14 14:52:15 +00:00
69 lines
2.2 KiB
Python
69 lines
2.2 KiB
Python
import re
|
|
|
|
from piston.handler import BaseHandler
|
|
from piston.utils import rc, throttle
|
|
|
|
from django.contrib.auth import login, logout, authenticate
|
|
from django.contrib.auth.models import User
|
|
from eve_api.models import EVEAccount
|
|
from sso.models import ServiceAccount, Service
|
|
|
|
class UserHandler(BaseHandler):
|
|
allowed_methods = ('GET')
|
|
|
|
def read(self, request, id=None):
|
|
if id:
|
|
try:
|
|
u = User.objects.filter(id=id)
|
|
except (User.DoesNotExist, ValueError):
|
|
return rc.NOT_HERE
|
|
|
|
if 'user' in request.GET:
|
|
try:
|
|
u = User.objects.filter(username=request.GET['user'])
|
|
except User.DoesNotExist:
|
|
return rc.NOT_HERE
|
|
|
|
if 'serviceuid' in request.GET:
|
|
try:
|
|
sa = ServiceAccount.objects.filter(service_uid=request.get['serviceuid'])
|
|
except ServiceAccount.DoesNotExist:
|
|
return rc.NOT_HERE
|
|
u = sa.user
|
|
|
|
|
|
d = { 'id': u.id, 'username': u.username, 'password': u.password, 'serviceaccounts': u.serviceaccount_set.all(),
|
|
'eveapi': u.eveaccount_set.all(), 'email': u.email }
|
|
return d
|
|
|
|
|
|
class ServiceLoginHandler(BaseHandler):
|
|
allowed_methods = ('GET')
|
|
|
|
def read(self, request):
|
|
if not 'user' in request.GET or not 'pass' in request.GET:
|
|
return rc.BAD_REQUEST
|
|
|
|
userobj = authenticate(username=request.GET['user'], password=request.GET['pass'])
|
|
if userobj and userobj.is_active:
|
|
|
|
if 'service' in request.GET:
|
|
try:
|
|
serv = Service.objects.get(id=request.GET['service'])
|
|
except:
|
|
return rc.BAD_REQUEST
|
|
|
|
srvacct = userobj.serviceaccount_set.filter(service=serv)
|
|
if len(srvacct):
|
|
displayname = srvacct[0].service_uid
|
|
else:
|
|
displayname = userobj.username
|
|
else:
|
|
displayname = userobj.username
|
|
|
|
|
|
return { 'auth': 'ok', 'id': userobj.id, 'username': userobj.username, 'email': userobj.email,
|
|
'display-username': displayname, 'eveapi': userobj.eveaccount_set.all() }
|
|
|
|
return { 'auth': 'fail' }
|