Explorar o código

Only premium user can add PGP key

Son NK %!s(int64=5) %!d(string=hai) anos
pai
achega
a529943dc4

+ 19 - 4
app/dashboard/templates/dashboard/mailbox_detail.html

@@ -72,18 +72,33 @@
           <div class="card-title">
             Pretty Good Privacy (PGP)
             <div class="small-text">
-              By importing your PGP Public Key into SimpleLogin, all emails sent to {{mailbox.email}} are <b>encrypted</b> with your key.
+              By importing your PGP Public Key into SimpleLogin, all emails sent to {{ mailbox.email }} are
+              <b>encrypted</b> with your key.
             </div>
           </div>
 
+          {% if not current_user.is_premium() %}
+            <div class="alert alert-danger" role="alert">
+              This feature is only available in premium plan.
+            </div>
+          {% endif %}
+
           <div class="form-group">
             <label class="form-label">PGP Public Key</label>
 
-            <textarea name="pgp" class="form-control" rows=10 placeholder="-----BEGIN PGP PUBLIC KEY BLOCK-----">{{mailbox.pgp_public_key or ""}}</textarea>
+            <textarea name="pgp"
+                {% if not current_user.is_premium() %} disabled {% endif %}
+                      class="form-control" rows=10
+                      placeholder="-----BEGIN PGP PUBLIC KEY BLOCK-----">{{ mailbox.pgp_public_key or "" }}</textarea>
           </div>
 
-          <button class="btn btn-primary" name="action" value="save">Save</button>
-          <button class="btn btn-danger float-right" name="action" value="remove">Remove</button>
+          <button class="btn btn-primary" name="action"
+              {% if not current_user.is_premium() %} disabled {% endif %}
+                  value="save">Save
+          </button>
+          {% if mailbox.pgp_finger_print %}
+            <button class="btn btn-danger float-right" name="action" value="remove">Remove</button>
+          {% endif %}
 
         </div>
       </form>

+ 7 - 0
app/dashboard/views/mailbox_detail.py

@@ -101,6 +101,12 @@ def mailbox_detail_route(mailbox_id):
                     )
         elif request.form.get("form-name") == "pgp":
             if request.form.get("action") == "save":
+                if not current_user.is_premium():
+                    flash("Only premium plan can add PGP Key", "warning")
+                    return redirect(
+                        url_for("dashboard.mailbox_detail_route", mailbox_id=mailbox_id)
+                    )
+
                 mailbox.pgp_public_key = request.form.get("pgp")
                 try:
                     mailbox.pgp_finger_print = load_public_key(mailbox.pgp_public_key)
@@ -113,6 +119,7 @@ def mailbox_detail_route(mailbox_id):
                         url_for("dashboard.mailbox_detail_route", mailbox_id=mailbox_id)
                     )
             elif request.form.get("action") == "remove":
+                # Free user can decide to remove their added PGP key
                 mailbox.pgp_public_key = None
                 mailbox.pgp_finger_print = None
                 db.session.commit()