mirror of
https://github.com/simple-login/app.git
synced 2024-09-20 15:05:59 +08:00
user can update directory mailboxes
This commit is contained in:
parent
18b530fe6f
commit
bc01479a72
|
@ -66,6 +66,29 @@
|
||||||
<h6 class="card-subtitle mb-2 text-muted">
|
<h6 class="card-subtitle mb-2 text-muted">
|
||||||
Created {{ dir.created_at | dt }} <br>
|
Created {{ dir.created_at | dt }} <br>
|
||||||
<span class="font-weight-bold">{{ dir.nb_alias() }}</span> aliases.
|
<span class="font-weight-bold">{{ dir.nb_alias() }}</span> aliases.
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<b>Mailboxes:</b> <i class="fe fe-info" data-toggle="tooltip"
|
||||||
|
title="Aliases created with this directory are automatically owned by these mailboxes"></i>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
{% set dir_mailboxes=dir.mailboxes %}
|
||||||
|
<form method="post" class="mt-2">
|
||||||
|
<input type="hidden" name="form-name" value="update">
|
||||||
|
<input type="hidden" name="dir-id" value="{{ dir.id }}">
|
||||||
|
|
||||||
|
<select data-width="100%" required
|
||||||
|
class="mailbox-select" multiple name="mailbox_ids">
|
||||||
|
{% for mailbox in mailboxes %}
|
||||||
|
<option value="{{ mailbox.id }}" {% if mailbox in dir_mailboxes %}
|
||||||
|
selected {% endif %}>
|
||||||
|
{{ mailbox.email }}
|
||||||
|
</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
<button class="mt-2 btn btn-outline-primary btn-sm">Update</button>
|
||||||
|
</form>
|
||||||
</h6>
|
</h6>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,46 @@ def directory():
|
||||||
flash(f"Directory {name} has been deleted", "success")
|
flash(f"Directory {name} has been deleted", "success")
|
||||||
|
|
||||||
return redirect(url_for("dashboard.directory"))
|
return redirect(url_for("dashboard.directory"))
|
||||||
|
elif request.form.get("form-name") == "update":
|
||||||
|
dir_id = request.form.get("dir-id")
|
||||||
|
dir = Directory.get(dir_id)
|
||||||
|
|
||||||
|
if not dir:
|
||||||
|
flash("Unknown error. Refresh the page", "warning")
|
||||||
|
return redirect(url_for("dashboard.directory"))
|
||||||
|
elif dir.user_id != current_user.id:
|
||||||
|
flash("You cannot delete this directory", "warning")
|
||||||
|
return redirect(url_for("dashboard.directory"))
|
||||||
|
|
||||||
|
mailbox_ids = request.form.getlist("mailbox_ids")
|
||||||
|
# check if mailbox is not tempered with
|
||||||
|
mailboxes = []
|
||||||
|
for mailbox_id in mailbox_ids:
|
||||||
|
mailbox = Mailbox.get(mailbox_id)
|
||||||
|
if (
|
||||||
|
not mailbox
|
||||||
|
or mailbox.user_id != current_user.id
|
||||||
|
or not mailbox.verified
|
||||||
|
):
|
||||||
|
flash("Something went wrong, please retry", "warning")
|
||||||
|
return redirect(url_for("dashboard.directory"))
|
||||||
|
mailboxes.append(mailbox)
|
||||||
|
|
||||||
|
if not mailboxes:
|
||||||
|
flash("You must select at least 1 mailbox", "warning")
|
||||||
|
return redirect(url_for("dashboard.directory"))
|
||||||
|
|
||||||
|
# first remove all existing alias-mailboxes links
|
||||||
|
DirectoryMailbox.query.filter_by(directory_id=dir.id).delete()
|
||||||
|
db.session.flush()
|
||||||
|
|
||||||
|
for mailbox in mailboxes:
|
||||||
|
DirectoryMailbox.create(directory_id=dir.id, mailbox_id=mailbox.id)
|
||||||
|
|
||||||
|
db.session.commit()
|
||||||
|
flash(f"Directory {dir.name} has been updated", "success")
|
||||||
|
|
||||||
|
return redirect(url_for("dashboard.directory"))
|
||||||
elif request.form.get("form-name") == "create":
|
elif request.form.get("form-name") == "create":
|
||||||
if not current_user.is_premium():
|
if not current_user.is_premium():
|
||||||
flash("Only premium plan can add directory", "warning")
|
flash("Only premium plan can add directory", "warning")
|
||||||
|
|
Loading…
Reference in a new issue