aboutsummaryrefslogtreecommitdiff
path: root/server/szurubooru/middleware/authenticator.py
diff options
context:
space:
mode:
authorrr-2016-04-03 22:03:58 +0200
committerrr-2016-04-03 23:21:22 +0200
commit219ab7c2c350c4893cea57ba2fa81438680a5cdf (patch)
tree2a7abd0f9434f3b77841deba6f3f06fd08b70ebd /server/szurubooru/middleware/authenticator.py
parent7f4708c6969a48a2ff533a77f2aed02dd83dbb3f (diff)
server/general: be more pythonic
Diffstat (limited to 'server/szurubooru/middleware/authenticator.py')
-rw-r--r--server/szurubooru/middleware/authenticator.py25
1 files changed, 9 insertions, 16 deletions
diff --git a/server/szurubooru/middleware/authenticator.py b/server/szurubooru/middleware/authenticator.py
index 58ed357..0f85027 100644
--- a/server/szurubooru/middleware/authenticator.py
+++ b/server/szurubooru/middleware/authenticator.py
@@ -1,24 +1,20 @@
import base64
import falcon
-from szurubooru import errors
-from szurubooru import model
+from szurubooru import db, errors
+from szurubooru.util import auth, users
class Authenticator(object):
'''
- Authenticates every request and puts information on active user in the
+ Authenticates every request and put information on active user in the
request context.
'''
- def __init__(self, auth_service, user_service):
- self._auth_service = auth_service
- self._user_service = user_service
-
def process_request(self, request, _response):
- ''' Executed before passing the request to the API. '''
+ ''' Bind the user to request. Update last login time if needed. '''
request.context.user = self._get_user(request)
if request.get_param_as_bool('bump-login') \
and request.context.user.user_id:
- self._user_service.bump_login_time(request.context.user)
+ users.bump_login_time(request.context.user)
request.context.session.commit()
def _get_user(self, request):
@@ -27,15 +23,12 @@ class Authenticator(object):
try:
auth_type, user_and_password = request.auth.split(' ', 1)
-
if auth_type.lower() != 'basic':
raise falcon.HTTPBadRequest(
'Invalid authentication type',
'Only basic authorization is supported.')
-
username, password = base64.decodebytes(
user_and_password.encode('ascii')).decode('utf8').split(':')
-
return self._authenticate(
request.context.session, username, password)
except ValueError as err:
@@ -46,16 +39,16 @@ class Authenticator(object):
msg.format(request.auth, str(err)))
def _authenticate(self, session, username, password):
- ''' Tries to authenticate user. Throws AuthError for invalid users. '''
- user = self._user_service.get_by_name(session, username)
+ ''' Try to authenticate user. Throw AuthError for invalid users. '''
+ user = users.get_by_name(session, username)
if not user:
raise errors.AuthError('No such user.')
- if not self._auth_service.is_valid_password(user, password):
+ if not auth.is_valid_password(user, password):
raise errors.AuthError('Invalid password.')
return user
def _create_anonymous_user(self):
- user = model.User()
+ user = db.User()
user.name = None
user.access_rank = 'anonymous'
user.password = None

© 2015 - 2026 Jakob L. Kreuze