oidc-fastapi-test/src/oidc_test/templates/home.html

92 lines
3 KiB
HTML
Raw Normal View History

2025-01-09 23:41:32 +01:00
{% extends "base.html" %}
{% block content %}
2025-01-10 19:03:09 +01:00
<p class="center">
2025-01-11 03:54:53 +01:00
Test the authentication and authorization,
2025-01-10 19:03:09 +01:00
with OpenID Connect and OAuth2 with different providers.
</p>
2025-01-09 23:41:32 +01:00
{% if not user %}
<div class="login-box">
2025-01-13 17:01:11 +01:00
<p class="description">Log in with:</p>
2025-01-10 23:40:24 +01:00
<table class="providers">
2025-01-10 19:03:09 +01:00
{% for provider in settings.oidc.providers %}
2025-01-10 23:40:24 +01:00
<tr class="provider">
2025-01-11 03:54:53 +01:00
<td>
<a class="link" href="login/{{ provider.id }}"><div>{{ provider.name }}</div></a>
2025-01-10 23:40:24 +01:00
</td>
<td class="hint">{{ provider.hint }}</div>
</td>
</tr>
2025-01-10 19:03:09 +01:00
{% else %}
2025-01-10 23:40:24 +01:00
<div class="error">There is no authentication provider defined.
Hint: check the settings.yaml file.</div>
2025-01-10 19:03:09 +01:00
{% endfor %}
2025-01-10 23:40:24 +01:00
</table>
2025-01-09 23:41:32 +01:00
</div>
{% endif %}
{% if user %}
<div class="user-info">
<p>Hey, {{ user.name }}</p>
{% if user.picture %}
<img src="{{ user.picture }}" class="picture"></img>
{% endif %}
<div>{{ user.email }}</div>
{% if user.roles %}
<div>
<span>Roles:</span>
{% for role in user.roles %}
<span class="role">{{ role.name }}</span>
{% endfor %}
</div>
{% endif %}
<div>
<span>Provider:</span>
{{ oidc_provider_settings.name }}
2025-01-09 23:41:32 +01:00
</div>
{% if oidc_provider_settings.account_url_template %}
<button onclick="location.href='{{ oidc_provider_settings.get_account_url(request, user) }}'" class="account">Account management</button>
{% endif %}
<button onclick="location.href='{{ request.url_for("logout") }}'" class="logout">Logout</button>
2025-01-09 23:41:32 +01:00
</div>
{% endif %}
2025-01-10 19:03:09 +01:00
<hr>
2025-01-09 23:41:32 +01:00
<div class="content">
<p>
These links should get different response codes depending on the authorization:
</p>
2025-01-19 14:26:54 +01:00
<div class="links-to-check">
2025-01-09 23:41:32 +01:00
<a href="public">Public</a>
<a href="protected">Auth protected content</a>
<a href="protected-by-foorole">Auth + foorole protected content</a>
<a href="protected-by-foorole-or-barrole">Auth + foorole or barrole protected content</a>
<a href="protected-by-barrole">Auth + barrole protected content</a>
<a href="protected-by-foorole-and-barrole">Auth + foorole and barrole protected content</a>
<a href="fast_api_depends" class="hidden">Using FastAPI Depends</a>
<a href="introspect">Introspect token (401 expected)</a>
2025-01-09 23:41:32 +01:00
</div>
2025-01-19 14:26:54 +01:00
{% if resources %}
<p>
Resources for this provider:
</p>
<div class="links-to-check">
{% for resource in resources %}
<a href="{{ request.url_for('get_resource', id=resource.id) }}">{{ resource.name }}</a>
2025-01-19 14:26:54 +01:00
{% endfor %}
</div>
{% endif %}
2025-01-09 23:41:32 +01:00
{% if user_info_details %}
2025-01-18 14:24:28 +01:00
<hr>
2025-01-09 23:41:32 +01:00
<div class="debug-auth">
<p>User info</p>
<ul>
{% for key, value in user_info_details.items() %}
<li>
<span class="key">{{ key }}</span>: {{ value }}
</li>
{% endfor %}
</ul>
</div>
2025-01-19 14:26:54 +01:00
<div>Now is: {{ now.strftime("%T, %D") }} </div>
2025-01-09 23:41:32 +01:00
</div>
{% endif %}
{% endblock %}