- You ({{ user.name }}) have been invited to access {{ owner.name }}'s server
- {%- if spawner.name %} ({{ spawner.name }}){%- endif %} at {{ spawner_url }}
-
-
- {% if not spawner_ready %}
-
- The server at {{ spawner_url }} is not currently running.
- After accepting permission, you may need to ask {{ owner.name }}
- to start the server before you can access it.
-
+
+ {% block login_terms_text %}
+ {# allow overriding the text #}
+ By logging into the platform you accept the terms and conditions.
+ {% endblock login_terms_text %}
+
-
- {% block login_terms_text %} {# allow overriding the text #}
- By logging into the platform you accept the terms and conditions.
- {% endblock login_terms_text %}
-
- {% if failed %}
- Spawn failed
- {% else %}
- Server not running
- {% endif %}
-
- {% endblock %}
- {% block message %}
-
- {% if failed %}
- The latest attempt to start your server {{ server_name }} has failed.
- {% if failed_html_message %}
-
{{ failed_html_message | safe }}
- {% elif failed_message %}
-
{{ failed_message }}
- {% endif %}
- Would you like to retry starting it?
- {% else %}
- Your server {{ server_name }} is not running.
- {% if implicit_spawn_seconds %}
- It will be restarted automatically.
- If you are not redirected in a few seconds,
- click below to launch your server.
- {% else %}
- Would you like to start it?
- {% endif %}
- {% endif %}
-
+ {% if failed %}
+ Spawn failed
+ {% else %}
+ Server not running
+ {% endif %}
+
+ {% endblock %}
+ {% block message %}
+
+ {% if failed %}
+ The latest attempt to start your server {{ server_name }} has failed.
+ {% if failed_html_message %}
+
+
{{ failed_html_message | safe }}
+
{% elif failed_message %}
+
{{ failed_message }}
+
+ {% endif %}
+ Would you like to retry starting it?
+ {% else %}
+ Your server {{ server_name }} is not running.
+ {% if implicit_spawn_seconds %}
+ It will be restarted automatically.
+ If you are not redirected in a few seconds,
+ click below to launch your server.
+ {% else %}
+ Would you like to start it?
+ {% endif %}
+ {% endif %}
+
- An application is requesting authorization to access data associated with your JupyterHub account
-
-
- {{ oauth_client.description }} (oauth URL: {{ oauth_client.redirect_uri }})
- would like permission to identify you.
- {% if scope_descriptions | length == 1 and not scope_descriptions[0].scope %}
- It will not be able to take actions on
- your behalf.
- {% endif %}
-
-
-
-
-
-
This will grant the application permission to:
-
-
-
-
- {# these are the 'real' inputs to the form -#}
- {% for scope in allowed_scopes %}
-
- {% endfor %}
-
- {% for scope_info in scope_descriptions %}
-
-
+
+
+
+
Authorize access
+
An application is requesting authorization to access data associated with your JupyterHub account
+
+ {{ oauth_client.description }} (oauth URL: {{ oauth_client.redirect_uri }})
+ would like permission to identify you.
+ {% if scope_descriptions | length == 1 and not scope_descriptions[0].scope %}
+ It will not be able to take actions on
+ your behalf.
+ {% endif %}
+
+
+
+
+
This will grant the application permission to:
- {% endfor %}
-
-
+
-
-
-
-
-{% endblock %}
+ {% endblock %}
diff --git a/share/jupyterhub/templates/page.html b/share/jupyterhub/templates/page.html
index 43888fcb..533e8311 100644
--- a/share/jupyterhub/templates/page.html
+++ b/share/jupyterhub/templates/page.html
@@ -1,51 +1,55 @@
{% macro modal(title, btn_label=None, btn_class="btn-primary") %}
-{% set key = title.replace(' ', '-').lower() %}
-{% set btn_label = btn_label or title %}
-
-
-
-
- This note will help you keep track of what your tokens are for.
-
-
-
- {% block expiration_options %}
-
- {% endblock expiration_options %}
-
- You can configure when your token will expire.
-
-
-
-
-
- You can limit the permissions of the token so it can only do what you want it to.
- If none are specified, the token will have permission to do everything you can do.
- See the JupyterHub documentation for a list of available scopes.
-
-
-
-
-
-
-
-
-
+
+
Manage JupyterHub Tokens
+
+
+
+
+
+ This note will help you keep track of what your tokens are for.
+
+
+ {% block expiration_options %}
+
+ {% endblock expiration_options %}
+ You can configure when your token will expire.
+
+
+
+
+ You can limit the permissions of the token so it can only do what you want it to.
+ If none are specified, the token will have permission to do everything you can do.
+ See the JupyterHub documentation for a list of available scopes.
+
+
+
+
+
+
+
+
-
- Your new API Token
-
+
Your new API Token
@@ -64,138 +53,129 @@
-
-
- {% if api_tokens %}
-
-
-
API Tokens
-
- These are tokens with access to the JupyterHub API.
- Permissions for each token may be viewed via the JupyterHub tokens API.
- Revoking the API token for a running server will require restarting that server.
-
- These are applications that use OAuth with JupyterHub
- to identify users (mostly notebook servers).
-
- OAuth tokens can generally only be used to identify you,
- not take actions on your behalf.
-
-
-
-
-
Application
-
Permissions
-
Last used
-
First authorized
-
-
-
- {% for client in oauth_clients %}
-
- {% block client_row scoped %}
-
{{ client['description'] }}
-
-
- scopes
- {# create set of scopes on all tokens -#}
- {# sum concatenates all token.scopes into a single list -#}
- {# then filter to unique set and sort -#}
- {% for scope in client.tokens | sum(attribute="scopes", start=[]) | unique | sort %}
-
+ These are tokens with access to the JupyterHub API.
+ Permissions for each token may be viewed via the JupyterHub tokens API.
+ Revoking the API token for a running server will require restarting that server.
+
+ These are applications that use OAuth with JupyterHub
+ to identify users (mostly notebook servers).
+ OAuth tokens can generally only be used to identify you,
+ not take actions on your behalf.
+
+
+
+
+
Application
+
Permissions
+
Last used
+
First authorized
+
+
+
+ {% for client in oauth_clients %}
+
+ {% block client_row scoped %}
+
{{ client['description'] }}
+
+
+ scopes
+ {# create set of scopes on all tokens -#}
+ {# sum concatenates all token.scopes into a single list -#}
+ {# then filter to unique set and sort -#}
+ {% for scope in client.tokens | sum(attribute="scopes", start=[]) | unique | sort %}
+