Add account page to settings
This commit is contained in:
parent
778a602aa6
commit
ac7714b997
|
@ -17,6 +17,11 @@ def get_setting_tabs(user):
|
|||
"title": "Edit Profile",
|
||||
"url": url_for("users.profile_edit", username=user.username)
|
||||
},
|
||||
{
|
||||
"id": "account",
|
||||
"title": "Account and Security",
|
||||
"url": url_for("users.account", username=user.username)
|
||||
},
|
||||
{
|
||||
"id": "notifications",
|
||||
"title": "Email and Notifications",
|
||||
|
@ -188,6 +193,20 @@ def email_notifications(username=None):
|
|||
tabs=get_setting_tabs(user), current_tab="notifications")
|
||||
|
||||
|
||||
@bp.route("/users/<username>/settings/account/")
|
||||
@login_required
|
||||
def account(username):
|
||||
user : User = User.query.filter_by(username=username).first()
|
||||
if not user:
|
||||
abort(404)
|
||||
|
||||
if not user.can_see_edit_profile(current_user):
|
||||
flash("Permission denied", "danger")
|
||||
return redirect(url_for("users.profile", username=username))
|
||||
|
||||
return render_template("users/account.html", user=user, form=form, tabs=get_setting_tabs(user), current_tab="account")
|
||||
|
||||
|
||||
@bp.route("/users/<username>/delete/", methods=["GET", "POST"])
|
||||
@rank_required(UserRank.ADMIN)
|
||||
def delete(username):
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
{% extends "users/settings_base.html" %}
|
||||
|
||||
{% block title %}
|
||||
{{ _("Account and Security | %(username)s", username=user.username) }}
|
||||
{% endblock %}
|
||||
|
||||
{% block pane %}
|
||||
<h2 class="mt-0">{{ _("Account and Security") }}</h2>
|
||||
|
||||
<h3>{{ _("Password") }}</h3>
|
||||
{% if user == current_user %}
|
||||
{% if user.password %}
|
||||
<a class="btn btn-primary" href="{{ url_for('users.change_password') }}">Change Password</a>
|
||||
{% else %}
|
||||
<a class="btn btn-primary" href="{{ url_for('users.set_password') }}">Set Password</a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if user.password %}
|
||||
<p>{{ _("Has password") }}</p>
|
||||
{% else %}
|
||||
<p class="text-danger">{{ _("Doesn't have password") }}</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<h3>{{ _("Linked Accounts") }}</h3>
|
||||
<table class="table">
|
||||
<tr>
|
||||
<td>Forums</td>
|
||||
<td>
|
||||
{% if user.forums_username %}
|
||||
<a href="https://forum.minetest.net/memberlist.php?mode=viewprofile&un={{ user.forums_username }}">
|
||||
Connected
|
||||
</a>
|
||||
{% else %}
|
||||
Please <a href="https://forum.minetest.net/ucp.php?i=pm&mode=compose&u=2051">PM rubenwardy</a>
|
||||
on the forums to link your account.
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>GitHub</td>
|
||||
<td>
|
||||
{% if user.github_username %}
|
||||
<p>
|
||||
<a href="https://github.com/{{ user.github_username }}">Connected</a>
|
||||
</p>
|
||||
|
||||
{% if user == current_user %}
|
||||
<p class="mb-0">
|
||||
<a href="{{ url_for('github.view_permissions') }}">View ContentDB's GitHub Permissions</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
{% elif user == current_user %}
|
||||
<a href="{{ url_for('github.start') }}">Link Github</a>
|
||||
{% else %}
|
||||
None
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h3>{{ _("Account Deletion and Deactivation") }}</h3>
|
||||
|
||||
{% if current_user.rank.atLeast(current_user.rank.ADMIN) %}
|
||||
<a class="btn btn-danger" href="{{ url_for('users.delete', username=user.username) }}">Delete or Deactivate</a>
|
||||
{% else %}
|
||||
<p>
|
||||
{{ _("Account Deletion and Deactivation isn't available to users yet.") }}
|
||||
{{ _("Please contact the admin.") }}
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
|
@ -25,7 +25,7 @@
|
|||
</p>
|
||||
{% endif %}
|
||||
|
||||
<a class="btn btn-secondary mr-3" href="{{ url_for('users.profile_edit', username=user.username) }}">Cancel</a>
|
||||
<a class="btn btn-secondary mr-3" href="{{ url_for('users.account', username=user.username) }}">Cancel</a>
|
||||
<input type="submit" value="{% if can_delete %}Delete{% else %}Deactivate{% endif %}" class="btn btn-danger" />
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -7,147 +7,65 @@
|
|||
{% block pane %}
|
||||
<h2 class="mt-0">{{ _("Edit Profile") }}</h2>
|
||||
|
||||
<div class="card">
|
||||
<h2 class="card-header">{{ _("Profile Picture") }}</h2>
|
||||
<div class="card-body row">
|
||||
<div class="col-md-2">
|
||||
{% if user.forums_username %}
|
||||
<a href="https://forum.minetest.net/ucp.php?i=profile&mode=avatar">
|
||||
{% elif user.email %}
|
||||
<a href="https://en.gravatar.com/">
|
||||
{% endif %}
|
||||
<img class="img-fluid user-photo img-thumbnail img-thumbnail-1" src="{{ user.getProfilePicURL() }}">
|
||||
{% if user.forums_username or user.email %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col">
|
||||
{% if user.forums_username %}
|
||||
<form method="post" action="{{ url_for('users.user_check', username=user.username) }}" class="" style="display:inline-block;">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||
<input type="submit" class="btn btn-primary" value="Sync with Forums" />
|
||||
</form>
|
||||
{% endif %}
|
||||
{% if user.email %}
|
||||
<a class="btn btn-primary" href="https://en.gravatar.com/">
|
||||
Gravatar
|
||||
</a>
|
||||
{% else %}
|
||||
<a class="btn btn-primary disabled"
|
||||
data-toggle="tooltip" data-placement="bottom"
|
||||
title="Please add an email address to use Gravatar"
|
||||
style="pointer-events: all;">
|
||||
Gravatar
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<h3>{{ _("Profile Picture") }}</h3>
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
{% if user.forums_username %}
|
||||
<a href="https://forum.minetest.net/ucp.php?i=profile&mode=avatar">
|
||||
{% elif user.email %}
|
||||
<a href="https://en.gravatar.com/">
|
||||
{% endif %}
|
||||
<img class="img-fluid user-photo img-thumbnail img-thumbnail-1" src="{{ user.getProfilePicURL() }}">
|
||||
{% if user.forums_username or user.email %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col">
|
||||
{% if user.forums_username %}
|
||||
<form method="post" action="{{ url_for('users.user_check', username=user.username) }}" class="" style="display:inline-block;">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||
<input type="submit" class="btn btn-primary" value="{{ _('Sync with Forums') }}" />
|
||||
</form>
|
||||
{% endif %}
|
||||
{% if user.email %}
|
||||
<a class="btn btn-primary" href="https://en.gravatar.com/">
|
||||
Gravatar
|
||||
</a>
|
||||
{% else %}
|
||||
<a class="btn btn-primary disabled"
|
||||
data-toggle="tooltip" data-placement="bottom"
|
||||
title="Please add an email address to use Gravatar"
|
||||
style="pointer-events: all;">
|
||||
Gravatar
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card my-4">
|
||||
<h2 class="card-header">{{ _("Passwords and Security") }}</h2>
|
||||
<table class="table">
|
||||
{% if user == current_user %}
|
||||
<tr>
|
||||
<td>Password:</td>
|
||||
<td>
|
||||
{% if user.password %}
|
||||
Set | <a href="{{ url_for('users.change_password') }}">Change</a>
|
||||
{% else %}
|
||||
Not set | <a href="{{ url_for('users.set_password') }}">Set</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="card my-4">
|
||||
<h2 class="card-header">{{ _("Linked Accounts") }}</h2>
|
||||
<table class="table">
|
||||
<tr>
|
||||
<td>Forums</td>
|
||||
<td>
|
||||
{% if user.forums_username %}
|
||||
<a href="https://forum.minetest.net/memberlist.php?mode=viewprofile&un={{ user.forums_username }}">
|
||||
Connected
|
||||
</a>
|
||||
{% elif user == current_user %}
|
||||
None
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>GitHub</td>
|
||||
<td>
|
||||
{% if user.github_username %}
|
||||
<p>
|
||||
<a href="https://github.com/{{ user.github_username }}">Connected</a>
|
||||
</p>
|
||||
|
||||
{% if user == current_user %}
|
||||
<p class="mb-0">
|
||||
<a href="{{ url_for('github.view_permissions') }}">View ContentDB's GitHub Permissions</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
{% elif user == current_user %}
|
||||
<a href="{{ url_for('github.start') }}">Link Github</a>
|
||||
{% else %}
|
||||
None
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
{% if current_user.is_authenticated and current_user.rank.atLeast(current_user.rank.MODERATOR) %}
|
||||
<tr>
|
||||
<td>Admin</td>
|
||||
<td>
|
||||
{% if user.email %}
|
||||
<a class="btn btn-primary" href="{{ url_for('admin.send_single_email', username=user.username) }}">
|
||||
Email
|
||||
</a>
|
||||
{% else %}
|
||||
<a class="btn btn-primary disabled"
|
||||
data-toggle="tooltip" data-placement="bottom"
|
||||
title="No email address for user"
|
||||
style="pointer-events: all;">
|
||||
Email
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</table>
|
||||
</div>
|
||||
<h3>{{ _("Profile Information") }}</h3>
|
||||
|
||||
{% from "macros/forms.html" import render_field, render_submit_field %}
|
||||
<div class="card">
|
||||
<div class="card-header">Edit Details</div>
|
||||
<div class="card-body">
|
||||
<form action="" method="POST" class="form box-body" role="form">
|
||||
{{ form.hidden_tag() }}
|
||||
<form action="" method="POST" class="form" role="form">
|
||||
{{ form.hidden_tag() }}
|
||||
|
||||
{% if user.checkPerm(current_user, "CHANGE_USERNAMES") %}
|
||||
{{ render_field(form.display_name, tabindex=230) }}
|
||||
{{ render_field(form.forums_username, tabindex=230) }}
|
||||
{{ render_field(form.github_username, tabindex=230) }}
|
||||
{% endif %}
|
||||
{% if user.checkPerm(current_user, "CHANGE_USERNAMES") %}
|
||||
{{ render_field(form.display_name, tabindex=230) }}
|
||||
{{ render_field(form.forums_username, tabindex=230) }}
|
||||
{{ render_field(form.github_username, tabindex=230) }}
|
||||
{% endif %}
|
||||
|
||||
{% if user.checkPerm(current_user, "CHANGE_PROFILE_URLS") %}
|
||||
{{ render_field(form.website_url, tabindex=232) }}
|
||||
{{ render_field(form.donate_url, tabindex=233) }}
|
||||
{% endif %}
|
||||
{% if user.checkPerm(current_user, "CHANGE_PROFILE_URLS") %}
|
||||
{{ render_field(form.website_url, tabindex=232) }}
|
||||
{{ render_field(form.donate_url, tabindex=233) }}
|
||||
{% endif %}
|
||||
|
||||
{% if user.checkPerm(current_user, "CHANGE_RANK") %}
|
||||
{{ render_field(form.rank, tabindex=250) }}
|
||||
{% endif %}
|
||||
{% if user.checkPerm(current_user, "CHANGE_RANK") %}
|
||||
{{ render_field(form.rank, tabindex=250) }}
|
||||
{% endif %}
|
||||
|
||||
<p>
|
||||
{{ render_submit_field(form.submit, tabindex=280) }}
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<p>
|
||||
{{ render_submit_field(form.submit, tabindex=280) }}
|
||||
</p>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
Loading…
Reference in New Issue