diff options
Diffstat (limited to 'paste')
-rw-r--r-- | paste/__init__.py | 4 | ||||
-rw-r--r-- | paste/store.py | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/paste/__init__.py b/paste/__init__.py index 155e927..ddd1054 100644 --- a/paste/__init__.py +++ b/paste/__init__.py @@ -9,7 +9,7 @@ from typing import Optional from wsgiref.util import application_uri, request_uri from . import db -from .store import Store +from .store import Auth, Store from .types import ( App, Closable, @@ -155,7 +155,7 @@ def authenticate(app: App, environ: Env, start_response: StartResponse) -> Respo value = b64decode(value.encode(), validate=True) except (binascii.Error, UnicodeEncodeError): return False - return Store(environ["paste.db_conn"]).check_token(value) + return Auth(environ["paste.db_conn"]).check_token(value) if environ["REQUEST_METHOD"] in {"GET", "HEAD"} or check_auth(): return app(environ, start_response) diff --git a/paste/store.py b/paste/store.py index f69c03d..427345b 100644 --- a/paste/store.py +++ b/paste/store.py @@ -89,6 +89,11 @@ class Store: ) return cur.rowcount == 1 + +class Auth: + def __init__(self, conn: Connection): + self.conn = conn + def generate_token(self): token = token_bytes(TOKEN_BYTES) with self.conn: |