mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-15 14:03:02 +00:00
Merge pull request #1311 from minrk/oauth-token-no-service
handle OAuthAccessTokens with no user
This commit is contained in:
@@ -26,6 +26,11 @@ class TokenAPIHandler(APIHandler):
|
|||||||
model = self.user_model(self.users[orm_token.user])
|
model = self.user_model(self.users[orm_token.user])
|
||||||
elif orm_token.service:
|
elif orm_token.service:
|
||||||
model = self.service_model(orm_token.service)
|
model = self.service_model(orm_token.service)
|
||||||
|
else:
|
||||||
|
self.log.warning("%s has no user or service. Deleting..." % orm_token)
|
||||||
|
self.db.delete(orm_token)
|
||||||
|
self.db.commit()
|
||||||
|
raise web.HTTPError(404)
|
||||||
self.write(json.dumps(model))
|
self.write(json.dumps(model))
|
||||||
|
|
||||||
@gen.coroutine
|
@gen.coroutine
|
||||||
|
@@ -74,7 +74,10 @@ class AccessTokenStore(HubDBMixin, oauth2.store.AccessTokenStore):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
user = self.db.query(orm.User).filter(orm.User.id == access_token.user_id).first()
|
user = self.db.query(orm.User).filter(orm.User.id == access_token.user_id).first()
|
||||||
|
if user is None:
|
||||||
|
raise ValueError("No user for access token: %s" % access_token.user_id)
|
||||||
orm_access_token = orm.OAuthAccessToken(
|
orm_access_token = orm.OAuthAccessToken(
|
||||||
|
generated=True,
|
||||||
client_id=access_token.client_id,
|
client_id=access_token.client_id,
|
||||||
grant_type=access_token.grant_type,
|
grant_type=access_token.grant_type,
|
||||||
expires_at=access_token.expires_at,
|
expires_at=access_token.expires_at,
|
||||||
|
@@ -406,14 +406,14 @@ class OAuthAccessToken(Hashed, Base):
|
|||||||
client_id = Column(Unicode(1023))
|
client_id = Column(Unicode(1023))
|
||||||
grant_type = Column(Enum(GrantType), nullable=False)
|
grant_type = Column(Enum(GrantType), nullable=False)
|
||||||
expires_at = Column(Integer)
|
expires_at = Column(Integer)
|
||||||
refresh_token = Column(Unicode(64))
|
refresh_token = Column(Unicode(1023))
|
||||||
refresh_expires_at = Column(Integer)
|
refresh_expires_at = Column(Integer)
|
||||||
user_id = Column(Integer, ForeignKey('users.id', ondelete='CASCADE'))
|
user_id = Column(Integer, ForeignKey('users.id', ondelete='CASCADE'))
|
||||||
user = relationship(User)
|
user = relationship(User)
|
||||||
session = None # for API-equivalence with APIToken
|
service = None # for API-equivalence with APIToken
|
||||||
|
|
||||||
# from Hashed
|
# from Hashed
|
||||||
hashed = Column(Unicode(64))
|
hashed = Column(Unicode(1023))
|
||||||
prefix = Column(Unicode(16), index=True)
|
prefix = Column(Unicode(16), index=True)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
Reference in New Issue
Block a user