mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-14 21:43:01 +00:00
add notes on API tokens when they are allocated
This commit is contained in:
@@ -155,12 +155,12 @@ class User(Base):
|
||||
running=sum(bool(s.server) for s in self._orm_spawners),
|
||||
)
|
||||
|
||||
def new_api_token(self, token=None, generated=True):
|
||||
def new_api_token(self, token=None, generated=True, note=''):
|
||||
"""Create a new API token
|
||||
|
||||
If `token` is given, load that token.
|
||||
"""
|
||||
return APIToken.new(token=token, user=self, generated=generated)
|
||||
return APIToken.new(token=token, user=self, note='', generated=generated)
|
||||
|
||||
@classmethod
|
||||
def find(cls, db, name):
|
||||
@@ -216,11 +216,11 @@ class Service(Base):
|
||||
server = relationship(Server, primaryjoin=_server_id == Server.id)
|
||||
pid = Column(Integer)
|
||||
|
||||
def new_api_token(self, token=None, generated=True):
|
||||
def new_api_token(self, token=None, generated=True, note=''):
|
||||
"""Create a new API token
|
||||
If `token` is given, load that token.
|
||||
"""
|
||||
return APIToken.new(token=token, service=self, generated=generated)
|
||||
return APIToken.new(token=token, service=self, note=note, generated=generated)
|
||||
|
||||
@classmethod
|
||||
def find(cls, db, name):
|
||||
@@ -230,6 +230,7 @@ class Service(Base):
|
||||
"""
|
||||
return db.query(cls).filter(cls.name == name).first()
|
||||
|
||||
|
||||
class Hashed(object):
|
||||
"""Mixin for tables with hashed tokens"""
|
||||
prefix_length = 4
|
||||
@@ -266,7 +267,7 @@ class Hashed(object):
|
||||
def match(self, token):
|
||||
"""Is this my token?"""
|
||||
return compare_token(self.hashed, token)
|
||||
|
||||
|
||||
@classmethod
|
||||
def check_token(cls, db, token):
|
||||
"""Check if a token is acceptable"""
|
||||
@@ -281,7 +282,7 @@ class Hashed(object):
|
||||
@classmethod
|
||||
def find_prefix(cls, db, token):
|
||||
"""Start the query for matching token.
|
||||
|
||||
|
||||
Returns an SQLAlchemy query already filtered by prefix-matches.
|
||||
"""
|
||||
prefix = token[:cls.prefix_length]
|
||||
@@ -303,6 +304,7 @@ class Hashed(object):
|
||||
if orm_token.match(token):
|
||||
return orm_token
|
||||
|
||||
|
||||
class APIToken(Hashed, Base):
|
||||
"""An API token"""
|
||||
__tablename__ = 'api_tokens'
|
||||
@@ -363,7 +365,7 @@ class APIToken(Hashed, Base):
|
||||
return orm_token
|
||||
|
||||
@classmethod
|
||||
def new(cls, token=None, user=None, service=None, generated=True):
|
||||
def new(cls, token=None, user=None, service=None, note='', generated=True):
|
||||
"""Generate a new API token for a user or service"""
|
||||
assert user or service
|
||||
assert not (user and service)
|
||||
@@ -377,7 +379,7 @@ class APIToken(Hashed, Base):
|
||||
cls.check_token(db, token)
|
||||
# two stages to ensure orm_token.generated has been set
|
||||
# before token setter is called
|
||||
orm_token = cls(generated=generated)
|
||||
orm_token = cls(generated=generated, note=note or '')
|
||||
orm_token.token = token
|
||||
if user:
|
||||
assert user.id is not None
|
||||
|
Reference in New Issue
Block a user