From 5f252a9e935f65358070a213436eb20fbe00b32d Mon Sep 17 00:00:00 2001 From: George Hunt Date: Mon, 30 Aug 2021 05:11:14 +0100 Subject: [PATCH] readme pngs --- roles/jupyterhub/README.md | 29 +++++++++++++++++---- roles/jupyterhub/admin-access-button1.png | Bin 0 -> 6488 bytes roles/jupyterhub/control-panel-button1.png | Bin 0 -> 3730 bytes roles/jupyterhub/delete-user.png | Bin 0 -> 5646 bytes 4 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 roles/jupyterhub/admin-access-button1.png create mode 100644 roles/jupyterhub/control-panel-button1.png create mode 100644 roles/jupyterhub/delete-user.png diff --git a/roles/jupyterhub/README.md b/roles/jupyterhub/README.md index 047f9ef0a..f881a6924 100644 --- a/roles/jupyterhub/README.md +++ b/roles/jupyterhub/README.md @@ -30,9 +30,28 @@ While PAWS is a little bit off topic, if you have an interest in Wikipedia, plea He explains PAWS as a "powerful Python execution environment http://paws.wmcloud.org [allowing] ordinary folks to write interactive scripts to work with Wikimedia content." -### Known Issues +### Users changing their own password +Users can change their password by first logging into their account and then visiting the url /hub/auth/change-password. + +### Resetting user password +The admin can reset user passwords by deleting the user from the JupyterHub admin page. This logs the user out, but does not remove any of their data or home directories. The user can then set a new password by logging in again with their new password. + +1. As an admin user, open the Control Panel by clicking the control panel button on the top right of your JupyterHub. + +![Control panel button in notebook, top right](control-panel-button1.png) +2. In the control panel, open the Admin link in the top left. + +![Admin button in control panel, top left](admin-access-button1.png) +This opens up the JupyterHub admin page, where you can add / delete users, start / stop peoples’ servers and see who is online. + +3. Delete the user whose password needs resetting. Remember this does not delete their data or home directory. + +![Delete user button for each user](delete_user.png) +If there is a confirmation dialog, confirm the deletion. This will also log the user out if they were currently running. + +4. Re-create the user whose password needs resetting within that same dialog. + +5. Ask the user to log in again with their new password as usual. This will be their new password going forward.Users changing their own password +Users can change their password by first logging into their account and then visiting the url /hub/auth/change-password. + -* 2021-08-07: The page that allows you to reset/change your own password is not accessible. Likewise Admin users cannot reset/change the password of any _individual_ user at this time. [#2918](https://github.com/iiab/iiab/pull/2918) - * If necessary, a Linux administrator can delete the `/passwords.dbm.db` file at the very top of your Linux filesystem, allowing all JupyterHub users to (re)create new passwords. This does work, but is very heavy-handed. [PR #2892](https://github.com/iiab/iiab/pull/2892#issuecomment-890551682) -* 2021-08-07: Teachers (i.e. Admin users) cannot currently access the very helpful "administrator's page" discussed at [JupyterHub FAQ >> "How do I manage users?"](https://jupyterhub.readthedocs.io/en/stable/getting-started/institutional-faq.html#how-do-i-manage-users) and [roles/jupyterhub/templates/jupyterhub_config.py#L1049-L1054 >> "Admin users have extra privileges"](https://github.com/iiab/iiab/blob/d0e8e048347bf46c02a2cdb0da9c5cd0c489fe40/roles/jupyterhub/templates/jupyterhub_config.py#L1049-L1054). [#2919](https://github.com/iiab/iiab/pull/2919) -* 2021-08-08: Password [dbm file](https://github.com/jupyterhub/firstuseauthenticator#firstuseauthenticatordbm_path) `/passwords.dbm.db` should be moved from the top of the filesystem to a better place — e.g. to `/opt/iiab/jupyterhub/etc/` ? [PR #2892](https://github.com/iiab/iiab/pull/2892#issuecomment-890579789) diff --git a/roles/jupyterhub/admin-access-button1.png b/roles/jupyterhub/admin-access-button1.png new file mode 100644 index 0000000000000000000000000000000000000000..505496819347e33d636196fed66c6f6f7287c30c GIT binary patch literal 6488 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 I-kE*=AIHb=IRF3v literal 0 HcmV?d00001 diff --git a/roles/jupyterhub/control-panel-button1.png b/roles/jupyterhub/control-panel-button1.png new file mode 100644 index 0000000000000000000000000000000000000000..5fd54ecbd797927b7ecf1bfe067ed66f819801a0 GIT binary patch literal 3730 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 PNHDA|Z7oP<7nA-AU=Zzk literal 0 HcmV?d00001 diff --git a/roles/jupyterhub/delete-user.png b/roles/jupyterhub/delete-user.png new file mode 100644 index 0000000000000000000000000000000000000000..db26478e743596415328b8bd1e2961be69ed2f5c GIT binary patch literal 5646 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 literal 0 HcmV?d00001