mirror of
https://github.com/healthchecks/healthchecks.git
synced 2024-11-23 07:57:39 +00:00
333 lines
13 KiB
HTML
333 lines
13 KiB
HTML
{% extends "base.html" %}
|
||
{% load compress static hc_extras %}
|
||
|
||
{% block title %}Account Settings - {{ site_name }}{% endblock %}
|
||
|
||
|
||
{% block content %}
|
||
<div class="row">
|
||
<div class="col-sm-12">
|
||
<h1 class="settings-title">
|
||
Settings
|
||
<small>{{ request.user.email }}</small>
|
||
</h1>
|
||
</div>
|
||
{% if messages %}
|
||
<div class="col-sm-12">
|
||
{% for message in messages %}
|
||
<p class="alert alert-{{ message.tags }}">{{ message }}</p>
|
||
{% endfor %}
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
|
||
<div class="row">
|
||
<div class="col-sm-3">
|
||
<ul class="nav nav-pills nav-stacked">
|
||
<li class="active"><a href="{% url 'hc-profile' %}">Account</a></li>
|
||
<li><a href="{% url 'hc-appearance' %}">Appearance</a></li>
|
||
{% if show_pricing %}
|
||
<li><a href="{% url 'hc-billing' %}">Billing</a></li>
|
||
{% endif %}
|
||
<li><a href="{% url 'hc-notifications' %}">Email Reports</a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="col-sm-9 col-md-6">
|
||
<div class="panel panel-{{ email_password_status|default:'default' }}">
|
||
<div class="panel-body settings-block">
|
||
<form method="post">
|
||
{% csrf_token %}
|
||
<h2>Email and Password</h2>
|
||
<p class="settings-bar">
|
||
Your account's email address is
|
||
<code>{{ request.user.email }}</code>
|
||
|
||
<a
|
||
href="{% url 'hc-change-email' %}"
|
||
class="btn btn-default pull-right">Change Email</a>
|
||
</p>
|
||
<p class="clearfix"></p>
|
||
{% if request.user.has_usable_password %}
|
||
<p class="settings-bar">
|
||
Password authentication is enabled.
|
||
<a
|
||
href="{% url 'hc-set-password' %}"
|
||
class="btn btn-default pull-right">Change Password</a>
|
||
</p>
|
||
{% else %}
|
||
<p class="settings-bar">
|
||
Attach a password to your {{ site_name }} account.
|
||
<a
|
||
href="{% url 'hc-set-password' %}"
|
||
class="btn btn-default pull-right">Set Password</a>
|
||
</p>
|
||
{% endif %}
|
||
</form>
|
||
</div>
|
||
{% if changed_password %}
|
||
<div class="panel-footer">
|
||
Your new password has been set!
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
|
||
<div class="panel panel-{{ 2fa_status }}">
|
||
<div class="panel-body settings-block">
|
||
<form method="post">
|
||
{% csrf_token %}
|
||
<h2>Two-factor Authentication</h2>
|
||
|
||
<table id="my-keys" class="table">
|
||
{% if use_webauthn %}
|
||
<tr>
|
||
<th>Security keys</th>
|
||
<th></th>
|
||
</tr>
|
||
{% for credential in credentials %}
|
||
<tr>
|
||
<td>
|
||
{{ credential.name|default:"unnamed" }}
|
||
<span class="text-muted">
|
||
– registered on {{ credential.created|date:"M j, Y" }}
|
||
</span>
|
||
</td>
|
||
<td class="text-right">
|
||
<a href="{% url 'hc-remove-credential' credential.code %}">Remove</a>
|
||
</td>
|
||
</tr>
|
||
{% empty %}
|
||
<tr>
|
||
<td class="missing" colspan="2">No registered security keys</td>
|
||
</tr>
|
||
{% endfor %}
|
||
{% endif %}
|
||
|
||
<tr>
|
||
<th>Authenticator app</th>
|
||
<th></th>
|
||
</tr>
|
||
{% if profile.totp %}
|
||
<tr>
|
||
<td>
|
||
Enabled
|
||
<span class="text-muted">
|
||
– configured on {{ profile.totp_created|date:"M j, Y" }}
|
||
</span>
|
||
</td>
|
||
<td class="text-right">
|
||
<a href="{% url 'hc-remove-totp' %}">Remove</a>
|
||
</td>
|
||
</tr>
|
||
{% else %}
|
||
<tr>
|
||
<td class="missing" colspan="2">Not configured</td>
|
||
</tr>
|
||
{% endif %}
|
||
</table>
|
||
|
||
{% if credentials|length == 1 and not profile.totp %}
|
||
<div class="alert alert-warning">
|
||
<p>
|
||
<strong>The key "{% for c in credentials%}{{ c.name }}{% endfor %}" is currently your only second factor.</strong>
|
||
If you lose this key, or it stops working, you will lose
|
||
access to your {% site_name %} account.
|
||
</p>
|
||
<p>
|
||
Register a second security key, to be used
|
||
as a backup second factor.
|
||
</p>
|
||
</div>
|
||
{% endif %}
|
||
|
||
{% if not credentials and profile.totp %}
|
||
<div class="alert alert-warning">
|
||
<p>
|
||
<strong>The Authenticator app is currently your only second factor.</strong>
|
||
If you lose access to it, you will lose access to your
|
||
{% site_name %} account.
|
||
</p>
|
||
<p>
|
||
Make sure you have a backup of the Authenticator app's TOTP
|
||
seed{% if use_webauthn %}, or register a Security Key to be used as a backup second factor{% endif %}.
|
||
</p>
|
||
</div>
|
||
{% endif %}
|
||
|
||
{% if not credentials and not profile.totp %}
|
||
<p class="alert alert-info">
|
||
Two-factor authentication is currently <strong>inactive</strong>.
|
||
Your account does not have any configured two-factor authentication
|
||
methods.
|
||
</p>
|
||
{% endif %}
|
||
|
||
<div class="pull-right">
|
||
{% if not profile.totp %}
|
||
<a
|
||
href="{% url 'hc-add-totp' %}"
|
||
class="btn btn-default">
|
||
Set Up Authenticator App
|
||
</a>
|
||
{% endif %}
|
||
{% if use_webauthn %}
|
||
<a
|
||
href="{% url 'hc-add-webauthn' %}"
|
||
class="btn btn-default">
|
||
Add Security Key
|
||
</a>
|
||
{% endif %}
|
||
</div>
|
||
</form>
|
||
</div>
|
||
|
||
{% if added_credential_name %}
|
||
<div class="panel-footer">
|
||
Added security key <strong>{{ added_credential_name }}</strong>.
|
||
</div>
|
||
{% endif %}
|
||
|
||
{% if removed_credential_name %}
|
||
<div class="panel-footer">
|
||
Removed security key <strong>{{ removed_credential_name }}</strong>.
|
||
</div>
|
||
{% endif %}
|
||
|
||
{% if enabled_totp %}
|
||
<div class="panel-footer">
|
||
Successfully set up the Authenticator app.
|
||
</div>
|
||
{% endif %}
|
||
|
||
{% if disabled_totp %}
|
||
<div class="panel-footer">
|
||
Disabled the authenticator app.
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
|
||
<div class="panel panel-{{ my_projects_status }}">
|
||
<div class="panel-body settings-block">
|
||
{% csrf_token %}
|
||
<h2>My Projects</h2>
|
||
|
||
{% if ownerships or memberships %}
|
||
<table id="my-projects" class="table">
|
||
<tr>
|
||
<th>Project</th>
|
||
<th>My role</th>
|
||
<th></th>
|
||
</tr>
|
||
{% for project in ownerships %}
|
||
<tr>
|
||
<td>
|
||
<div class="name">
|
||
<a href="{% url 'hc-checks' project.code %}">
|
||
{{ project }}
|
||
</a>
|
||
</div>
|
||
</td>
|
||
<td>Owner</td>
|
||
<td>
|
||
<a
|
||
href="{% url 'hc-project-settings' project.code %}"
|
||
class="pull-right">Settings</a>
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
|
||
{% for m in memberships %}
|
||
<tr>
|
||
<td>
|
||
<div class="name">
|
||
<a href="{% url 'hc-checks' m.project.code %}">
|
||
{{ m.project }}
|
||
</a>
|
||
</div>
|
||
</td>
|
||
<td>{{ m.get_role_display }}</td>
|
||
<td>
|
||
<a
|
||
href="#"
|
||
data-name="{{ m.project }}"
|
||
data-code="{{ m.project.code }}"
|
||
class="pull-right leave-project">Leave</a>
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</table>
|
||
{% else %}
|
||
<p>You do not have any projects. Create one!</p>
|
||
{% endif %}
|
||
|
||
<a
|
||
id="create-project"
|
||
href="#"
|
||
class="btn btn-default pull-right"
|
||
data-toggle="modal"
|
||
data-target="#add-project-modal">Create a New Project</a>
|
||
</div>
|
||
|
||
{% if left_project %}
|
||
<div class="panel-footer">
|
||
Left project <strong>{{ left_project }}</strong>.
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
|
||
<div class="panel panel-default">
|
||
<div class="panel-body settings-block">
|
||
{% csrf_token %}
|
||
<h2>Close Account</h2>
|
||
<p>This will permanently remove your {{ site_name }} account.</p>
|
||
<div class="text-right">
|
||
<a href="{% url 'hc-close' %}" class="btn btn-remove">Close Account</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="leave-project-modal" class="modal">
|
||
<div class="modal-dialog">
|
||
<form id="leave-project-form" method="post">
|
||
{% csrf_token %}
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal">×</button>
|
||
<h4>Leave This Project?</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
<p>
|
||
You are about to leave the project <strong id="leave-project-name"></strong>.
|
||
You will lose access to its checks and integrations.
|
||
</p>
|
||
<p>Are you sure?</p>
|
||
<input
|
||
type="hidden"
|
||
name="code"
|
||
id="leave-project-code" />
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
||
<button
|
||
type="submit"
|
||
name="leave_project"
|
||
class="btn btn-danger">Leave Project</button>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
|
||
{% include "accounts/add_project_modal.html" %}
|
||
|
||
{% endblock %}
|
||
|
||
{% block scripts %}
|
||
{% compress js %}
|
||
<script src="{% static 'js/add_project_modal.js' %}"></script>
|
||
<script src="{% static 'js/profile.js' %}"></script>
|
||
{% endcompress %}
|
||
{% endblock %}
|