Add authentication from upstream providers (#107)
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
Let BasicOIDC delegate authentication to upstream providers (Google, GitHub, GitLab, Keycloak...) Reviewed-on: #107
This commit is contained in:
@ -112,28 +112,61 @@
|
||||
</div>
|
||||
|
||||
<ul>
|
||||
{% for e in u.get_formatted_2fa_successful_logins() %}
|
||||
{% if e.can_bypass_2fa %}<li style="font-weight: bold;">{{ e.ip }} - {{ e.fmt_time() }} - BYPASS 2FA</li>
|
||||
{% else %}<li>{{ e.ip }} - {{ e.fmt_time() }}</li>{% endif %}
|
||||
{% endfor %}
|
||||
{% for e in u.get_formatted_2fa_successful_logins() %}
|
||||
{% if e.can_bypass_2fa %}
|
||||
<li style="font-weight: bold;">{{ e.ip }} - {{ e.fmt_time() }} - BYPASS 2FA</li>
|
||||
{% else %}
|
||||
<li>{{ e.ip }} - {{ e.fmt_time() }}</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</fieldset>
|
||||
{% endif %}
|
||||
|
||||
<!-- Authorized authentication sources -->
|
||||
<fieldset class="form-group">
|
||||
<legend class="mt-4">Authorized authentication sources</legend>
|
||||
|
||||
<!-- Local login -->
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" name="allow_local_login" id="allow_local_login"
|
||||
{% if u.allow_local_login %} checked="" {% endif %}>
|
||||
<label class="form-check-label" for="allow_local_login">
|
||||
Allow local login
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<!-- Upstream providers -->
|
||||
<input type="hidden" name="authorized_sources" id="authorized_sources"/>
|
||||
{% for prov in providers %}
|
||||
<div class="form-check">
|
||||
<input class="form-check-input authorized_provider" type="checkbox" name="prov-{{ prov.id.0 }}"
|
||||
id="prov-{{ prov.id.0 }}"
|
||||
data-id="{{ prov.id.0 }}"
|
||||
{% if u.can_login_from_provider(prov) %} checked="" {% endif %}>
|
||||
<label class="form-check-label" for="prov-{{ prov.id.0 }}">
|
||||
Allow login from {{ prov.name }}
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</fieldset>
|
||||
|
||||
<!-- Granted clients -->
|
||||
<fieldset class="form-group">
|
||||
<legend class="mt-4">Granted clients</legend>
|
||||
<div class="form-check">
|
||||
<label class="form-check-label">
|
||||
<input type="radio" class="form-check-input" name="grant_type"
|
||||
value="all_clients" {% if u.granted_clients() == GrantedClients::AllClients %} checked="" {% endif %}>
|
||||
value="all_clients" {% if u.granted_clients()== GrantedClients::AllClients %} checked="" {% endif
|
||||
%}>
|
||||
Grant all clients
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<label class="form-check-label">
|
||||
<input type="radio" class="form-check-input" name="grant_type"
|
||||
value="custom_clients" {% if matches!(self.u.granted_clients(), GrantedClients::SomeClients(_)) %} checked="checked" {% endif %}>
|
||||
value="custom_clients" {% if matches!(self.u.granted_clients(), GrantedClients::SomeClients(_))
|
||||
%} checked="checked" {% endif %}>
|
||||
Manually specify allowed clients
|
||||
</label>
|
||||
</div>
|
||||
@ -155,7 +188,8 @@
|
||||
<div class="form-check">
|
||||
<label class="form-check-label">
|
||||
<input type="radio" class="form-check-input" name="grant_type"
|
||||
value="no_client" {% if u.granted_clients() == GrantedClients::NoClient %} checked="checked" {% endif %}>
|
||||
value="no_client" {% if u.granted_clients()== GrantedClients::NoClient %} checked="checked" {%
|
||||
endif %}>
|
||||
Do not grant any client
|
||||
</label>
|
||||
</div>
|
||||
@ -215,6 +249,13 @@
|
||||
form.addEventListener("submit", (ev) => {
|
||||
ev.preventDefault();
|
||||
|
||||
const authorized_sources = [...document.querySelectorAll(".authorized_provider")]
|
||||
.filter(e => e.checked)
|
||||
.map(e => e.getAttribute("data-id")).join(",")
|
||||
|
||||
document.querySelector("input[name=authorized_sources]").value = authorized_sources;
|
||||
|
||||
|
||||
const authorized_clients = [...document.querySelectorAll(".authorize_client_checkbox")]
|
||||
.filter(e => e.checked)
|
||||
.map(e => e.getAttribute("data-id")).join(",")
|
||||
@ -231,6 +272,9 @@
|
||||
form.submit();
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
{% endblock content %}
|
Reference in New Issue
Block a user