You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

315 lines
12 KiB

{% 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>
</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>
</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 %}
<p class="alert alert-info">
<strong>Tip: add a second security key!</strong>
It is a good practice to register at least two security keys
and store them separately.
</p>
{% 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 profile.projects.exists %}
<table id="my-projects" class="table">
<tr>
<th>Project</th>
<th>My role</th>
<th></th>
</tr>
{% for project in request.user.project_set.all %}
<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 request.user.memberships.all %}
<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
id="close-account"
href="{% url 'hc-close' %}"
class="btn btn-default">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">&times;</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/jquery-2.1.4.min.js' %}"></script>
<script src="{% static 'js/bootstrap.min.js' %}"></script>
<script src="{% static 'js/add_project_modal.js' %}"></script>
<script src="{% static 'js/profile.js' %}"></script>
{% endcompress %}
{% endblock %}