mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-17 15:03:02 +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)))
|
||||
|
||||
@admin_only
|
||||
@gen.coroutine
|
||||
def post(self, name):
|
||||
data = self.get_json_body()
|
||||
user = self.find_user(name)
|
||||
@@ -82,7 +83,7 @@ class UserAPIHandler(BaseUserHandler):
|
||||
self.db.commit()
|
||||
|
||||
try:
|
||||
self.authenticator.add_user(user)
|
||||
yield gen.maybe_future(self.authenticator.add_user(user))
|
||||
except Exception:
|
||||
self.log.error("Failed to create user: %s" % name, exc_info=True)
|
||||
self.db.delete(user)
|
||||
@@ -103,7 +104,7 @@ class UserAPIHandler(BaseUserHandler):
|
||||
if user.spawner is not None:
|
||||
yield self.stop_single_user(user)
|
||||
|
||||
self.authenticator.delete_user(user)
|
||||
yield gen.maybe_future(self.authenticator.delete_user(user))
|
||||
|
||||
# remove from the db
|
||||
self.db.delete(user)
|
||||
|
@@ -84,6 +84,7 @@ class LocalAuthenticator(Authenticator):
|
||||
"""
|
||||
)
|
||||
|
||||
@gen.coroutine
|
||||
def add_user(self, user):
|
||||
"""Add a new user
|
||||
|
||||
@@ -92,13 +93,14 @@ class LocalAuthenticator(Authenticator):
|
||||
Subclasses may do more extensive things,
|
||||
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:
|
||||
self.add_system_user(user)
|
||||
yield gen.maybe_future(self.add_system_user(user))
|
||||
else:
|
||||
raise KeyError("User %s does not exist." % user.name)
|
||||
|
||||
super(LocalAuthenticator, self).add_user(user)
|
||||
yield gen.maybe_future(super().add_user(user))
|
||||
|
||||
@staticmethod
|
||||
def system_user_exists(user):
|
||||
|
Reference in New Issue
Block a user