mirror of
https://github.com/simple-login/app.git
synced 2024-09-21 01:11:29 +02:00
324 lines
12 KiB
HTML
324 lines
12 KiB
HTML
{% extends 'default.html' %}
|
|
|
|
{% set active_page = "setting" %}
|
|
|
|
{% block title %}
|
|
Settings
|
|
{% endblock %}
|
|
|
|
{% block head %}
|
|
<style>
|
|
.card-title {
|
|
font-size: 22px;
|
|
font-weight: 600;
|
|
margin-bottom: 3px;
|
|
}
|
|
</style>
|
|
{% endblock %}
|
|
|
|
{% block default_content %}
|
|
|
|
<div class="col pb-3">
|
|
<!-- Change email -->
|
|
<div class="card">
|
|
<form method="post" enctype="multipart/form-data">
|
|
<input type="hidden" name="form-name" value="update-email">
|
|
{{ change_email_form.csrf_token }}
|
|
|
|
<div class="card-body">
|
|
<div class="card-title">
|
|
Email Address
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="form-label">Email</label>
|
|
|
|
<!-- Not allow user to change email if there's a pending change -->
|
|
{{ change_email_form.email(class="form-control", value=current_user.email, readonly=pending_email != None) }}
|
|
{{ render_field_errors(change_email_form.email) }}
|
|
|
|
{% if pending_email %}
|
|
<div class="mt-2">
|
|
<span class="text-danger">Pending email change: {{ pending_email }}</span>
|
|
<a href="{{ url_for('dashboard.resend_email_change') }}" class="btn btn-secondary btn-sm">Resend
|
|
confirmation email</a>
|
|
<a href="{{ url_for('dashboard.cancel_email_change') }}" class="btn btn-secondary btn-sm">Cancel email
|
|
change</a>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
<button class="btn btn-primary">Change Email</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<!-- END Change email -->
|
|
|
|
<!-- Change name & profile picture -->
|
|
<div class="card">
|
|
<form method="post" enctype="multipart/form-data">
|
|
{{ form.csrf_token }}
|
|
<input type="hidden" name="form-name" value="update-profile">
|
|
|
|
<div class="card-body">
|
|
<div class="card-title">
|
|
Profile
|
|
</div>
|
|
<div>
|
|
These informations will be filled up automatically when you use "Sign in with SimpleLogin" button
|
|
</div>
|
|
<div class="form-group mt-3">
|
|
<label class="form-label">Name</label>
|
|
{{ form.name(class="form-control", value=current_user.name) }}
|
|
{{ render_field_errors(form.name) }}
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class="form-label">Profile picture</div>
|
|
{{ form.profile_picture(class="form-control-file") }}
|
|
{{ render_field_errors(form.profile_picture) }}
|
|
{% if current_user.profile_picture_id %}
|
|
<img src="{{ current_user.profile_picture_url() }}" class="profile-picture">
|
|
{% endif %}
|
|
</div>
|
|
<button class="btn btn-primary">Update</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<!-- END change name & profile picture -->
|
|
|
|
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<div class="card-title">Multi-Factor Authentication (MFA)</div>
|
|
<div class="mb-3">
|
|
Secure your account with Multi-Factor Authentication. <br>
|
|
This requires having applications like Google Authenticator, Authy, FreeOTP, etc.
|
|
</div>
|
|
{% if not current_user.enable_otp %}
|
|
<a href="{{ url_for('dashboard.mfa_setup') }}" class="btn btn-outline-primary">Enable</a>
|
|
{% else %}
|
|
<a href="{{ url_for('dashboard.mfa_cancel') }}" class="btn btn-outline-danger">Cancel MFA</a>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<div class="card-title">
|
|
Change password
|
|
</div>
|
|
<div class="mb-3">
|
|
You will receive an email containing instructions on how to change password.
|
|
</div>
|
|
<form method="post">
|
|
<input type="hidden" name="form-name" value="change-password">
|
|
<button class="btn btn-outline-primary">Change password</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<div class="card-title">Random Alias</div>
|
|
<div class="mb-3">Choose how to create your email alias by default</div>
|
|
<form method="post" class="form-inline">
|
|
<input type="hidden" name="form-name" value="change-alias-generator">
|
|
<select class="custom-select mr-sm-2" name="alias-generator-scheme">
|
|
<option value="{{ AliasGeneratorEnum.word.value }}"
|
|
{% if current_user.alias_generator == AliasGeneratorEnum.word.value %} selected {% endif %} >Based on
|
|
Random {{ AliasGeneratorEnum.word.name.capitalize() }}</option>
|
|
<option value="{{ AliasGeneratorEnum.uuid.value }}"
|
|
{% if current_user.alias_generator == AliasGeneratorEnum.uuid.value %} selected {% endif %} >Based
|
|
on {{ AliasGeneratorEnum.uuid.name.upper() }}</option>
|
|
</select>
|
|
<button class="btn btn-outline-primary">Update Preference</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card" id="notification">
|
|
<div class="card-body">
|
|
<div class="card-title">Newsletters</div>
|
|
<div class="mb-3">
|
|
Every now and then we can send you an email
|
|
to let you know about a new feature that might be useful to you.
|
|
</div>
|
|
<form method="post">
|
|
<input type="hidden" name="form-name" value="notification-preference">
|
|
<div class="form-check">
|
|
<input type="checkbox" id="notification" name="notification" {% if current_user.notification %}
|
|
checked {% endif %} class="form-check-input">
|
|
<label for="notification">I want to receive your newsletter</label>
|
|
</div>
|
|
<button type="submit" class="btn btn-outline-primary">Submit</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<div class="card-title mb-3">Current Plan</div>
|
|
|
|
{% if current_user.get_subscription() %}
|
|
You are on the {{ current_user.get_subscription().plan_name() }} plan. <br>
|
|
<a href="{{ url_for('dashboard.billing') }}" class="btn btn-outline-primary">
|
|
Manage Subscription
|
|
</a>
|
|
{% elif manual_sub %}
|
|
You are on the Premium plan. The plan ends {{ manual_sub.end_at | dt }}
|
|
({{ manual_sub.end_at.format("YYYY-MM-DD") }}).
|
|
{% if manual_sub.is_giveaway %}
|
|
<br>
|
|
To support SimpleLogin it's possible to change to a paid plan. <br>
|
|
<a href="{{ url_for('dashboard.pricing') }}" class="btn btn-sm btn-outline-primary">Upgrade</a>
|
|
{% endif %}
|
|
{% elif current_user.lifetime %}
|
|
You have the lifetime licence.
|
|
<br>
|
|
To support SimpleLogin it's possible to change to a paid plan. <br>
|
|
<a href="{{ url_for('dashboard.pricing') }}" class="btn btn-sm btn-outline-primary">Upgrade</a>
|
|
{% elif current_user.in_trial() %}
|
|
You are in the trial period. The trial ends {{ current_user.trial_end | dt }}.
|
|
{% else %}
|
|
You are on the Free plan.
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card" id="sender-format">
|
|
<div class="card-body">
|
|
<div class="card-title">Sender address format</div>
|
|
<div class="mt-1 mb-3">
|
|
When your alias receives an email, says from <b>John Wick <john@wick.com></b>,
|
|
SimpleLogin forwards it to your mailbox. <br>
|
|
|
|
Due to some email constraints, SimpleLogin cannot keep the sender email address
|
|
in the original form and needs to <b>transform</b> it to one of the 2 below formats.
|
|
</div>
|
|
|
|
<form method="post" action="#sender-format">
|
|
<input type="hidden" name="form-name" value="change-sender-format">
|
|
|
|
<div class="form-check">
|
|
<input class="form-check-input" type="radio" name="sender-format" id="exampleRadios1" value="1"
|
|
{% if current_user.use_via_format_for_sender %} checked {% endif %}>
|
|
<label class="form-check-label" for="exampleRadios1">
|
|
<b>john@wick.com via SimpleLogin</b>
|
|
</label>
|
|
</div>
|
|
|
|
<div class="form-check">
|
|
<input class="form-check-input" type="radio" name="sender-format" id="exampleRadios2" value="0"
|
|
{% if not current_user.use_via_format_for_sender %} checked {% endif %}>
|
|
<label class="form-check-label" for="exampleRadios2">
|
|
<b>John Wick - john at wick.com</b>
|
|
</label>
|
|
</div>
|
|
|
|
<button class="btn btn-outline-primary mt-3">Update</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card" id="referral">
|
|
<div class="card-body">
|
|
<div class="card-title">Referrals</div>
|
|
<div class="mb-3" style="">
|
|
Creating a different email address for every website/service is good for our privacy and
|
|
help fighting against spammers. <br>
|
|
Here you can invite your friends to join SimpleLogin and help protect their privacy. <br>
|
|
At the beginning of each month, the person who invites most of people joining SimpleLogin
|
|
wins the lifetime licence :). <br>
|
|
</div>
|
|
|
|
<a href="{{ url_for('dashboard.referral_route') }}" class="btn btn-outline-primary">
|
|
Invite Friends
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<div class="card-title">Deleted Aliases</div>
|
|
<div class="mb-3" style="">
|
|
When an alias is deleted, all its activities are deleted and no emails can be sent to it.
|
|
The deleted alias is moved to another location and only used to check when new alias is created. <br>
|
|
This check is necessary to avoid someone else accidentally taking this alias.
|
|
Otherwise the other person might receive inadvertently information that belong to you. <br>
|
|
</div>
|
|
|
|
<a href="{{ url_for('dashboard.deleted_alias_route') }}" class="btn btn-outline-primary">
|
|
See deleted aliases
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<div class="card-title">Quarantine</div>
|
|
<div class="mb-3">
|
|
When an email sent to your alias is classified as spam or refused by your email provider,
|
|
it usually means your alias has been leaked to a spammer. <br>
|
|
In this case SimpleLogin will <b>keep</b> a copy of this email (so it isn't lost)
|
|
and notify you so you can take a look at its content and take appropriate actions. <br>
|
|
|
|
The emails are deleted in 7 days.
|
|
This is an exceptional case where SimpleLogin stores the email.
|
|
</div>
|
|
<a href="{{ url_for('dashboard.refused_email_route') }}" class="btn btn-outline-primary">
|
|
See refused emails
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<div class="card-title">Export Data</div>
|
|
<div class="mb-3">
|
|
You can download all aliases you have created on SimpleLogin along with other data.
|
|
</div>
|
|
<form method="post">
|
|
<input type="hidden" name="form-name" value="export-data">
|
|
<button class="btn btn-outline-info">Export Data</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<div class="card-title">Delete Account</div>
|
|
<div class="mb-3">Please note that this operation is irreversible.
|
|
</div>
|
|
|
|
<form method="post">
|
|
<input type="hidden" name="form-name" value="delete-account">
|
|
<span class="delete-account btn btn-outline-danger">Delete account</span>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{% endblock %}
|
|
|
|
{% block script %}
|
|
<script>
|
|
$(".delete-account").on("click", function (e) {
|
|
notie.confirm({
|
|
text: "All your data including your aliases will be deleted, " +
|
|
"other people might not be able to reach you after, " +
|
|
" please confirm.",
|
|
cancelCallback: () => {
|
|
// nothing to do
|
|
},
|
|
submitCallback: () => {
|
|
$(this).closest("form").submit();
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
{% endblock %}
|
|
|