mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-19 07:53:00 +00:00
allow some auth methods to be async
- add_user - add_system_user - system_user_exists - delete_user
This commit is contained in:
@@ -68,6 +68,7 @@ class UserAPIHandler(BaseUserHandler):
|
|||||||
self.write(json.dumps(self.user_model(user)))
|
self.write(json.dumps(self.user_model(user)))
|
||||||
|
|
||||||
@admin_only
|
@admin_only
|
||||||
|
@gen.coroutine
|
||||||
def post(self, name):
|
def post(self, name):
|
||||||
data = self.get_json_body()
|
data = self.get_json_body()
|
||||||
user = self.find_user(name)
|
user = self.find_user(name)
|
||||||
@@ -82,7 +83,7 @@ class UserAPIHandler(BaseUserHandler):
|
|||||||
self.db.commit()
|
self.db.commit()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.authenticator.add_user(user)
|
yield gen.maybe_future(self.authenticator.add_user(user))
|
||||||
except Exception:
|
except Exception:
|
||||||
self.log.error("Failed to create user: %s" % name, exc_info=True)
|
self.log.error("Failed to create user: %s" % name, exc_info=True)
|
||||||
self.db.delete(user)
|
self.db.delete(user)
|
||||||
@@ -103,7 +104,7 @@ class UserAPIHandler(BaseUserHandler):
|
|||||||
if user.spawner is not None:
|
if user.spawner is not None:
|
||||||
yield self.stop_single_user(user)
|
yield self.stop_single_user(user)
|
||||||
|
|
||||||
self.authenticator.delete_user(user)
|
yield gen.maybe_future(self.authenticator.delete_user(user))
|
||||||
|
|
||||||
# remove from the db
|
# remove from the db
|
||||||
self.db.delete(user)
|
self.db.delete(user)
|
||||||
|
@@ -84,6 +84,7 @@ class LocalAuthenticator(Authenticator):
|
|||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@gen.coroutine
|
||||||
def add_user(self, user):
|
def add_user(self, user):
|
||||||
"""Add a new user
|
"""Add a new user
|
||||||
|
|
||||||
@@ -92,13 +93,14 @@ class LocalAuthenticator(Authenticator):
|
|||||||
Subclasses may do more extensive things,
|
Subclasses may do more extensive things,
|
||||||
such as adding actual unix users.
|
such as adding actual unix users.
|
||||||
"""
|
"""
|
||||||
if not self.system_user_exists(user):
|
user_exists = yield gen.maybe_future(self.system_user_exists(user))
|
||||||
|
if not user_exists:
|
||||||
if self.create_system_users:
|
if self.create_system_users:
|
||||||
self.add_system_user(user)
|
yield gen.maybe_future(self.add_system_user(user))
|
||||||
else:
|
else:
|
||||||
raise KeyError("User %s does not exist." % user.name)
|
raise KeyError("User %s does not exist." % user.name)
|
||||||
|
|
||||||
super(LocalAuthenticator, self).add_user(user)
|
yield gen.maybe_future(super().add_user(user))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def system_user_exists(user):
|
def system_user_exists(user):
|
||||||
|
Reference in New Issue
Block a user