Browse Source

Support cancelled premium users in custom domain & directory

- Freemium user can see custom domain and directory but could not add new.
- user who has added custom domain or directory before could delete them
Son NK 5 years ago
parent
commit
13283b6327

+ 6 - 0
app/dashboard/templates/dashboard/custom_domain.html

@@ -13,6 +13,12 @@
     <div class="col-md-8 offset-md-2">
       <h1 class="h3"> Custom Domains </h1>
 
+      {% if not current_user.is_premium() %}
+        <div class="alert alert-danger" role="alert">
+          This feature is only available in premium plan.
+        </div>
+      {% endif %}
+
       {% for custom_domain in custom_domains %}
         <div class="card" style="max-width: 50rem">
           <div class="card-body">

+ 6 - 0
app/dashboard/templates/dashboard/directory.html

@@ -10,6 +10,12 @@
     <div class="col-md-8 offset-md-2">
       <h1 class="h3"> Directories </h1>
 
+      {% 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="alert alert-primary" role="alert">
         Directory allows you to create aliases <b>on the fly</b>. <br>
         Simply use <em>directory/<b>anything</b>@{{ EMAIL_DOMAIN }}</em>

+ 4 - 5
app/dashboard/views/custom_domain.py

@@ -17,11 +17,6 @@ class NewCustomDomainForm(FlaskForm):
 @dashboard_bp.route("/custom_domain", methods=["GET", "POST"])
 @login_required
 def custom_domain():
-    # only premium user can add custom domain
-    if not current_user.is_premium():
-        flash("Only premium user can add custom domains", "warning")
-        return redirect(url_for("dashboard.index"))
-
     custom_domains = CustomDomain.query.filter_by(user_id=current_user.id).all()
 
     new_custom_domain_form = NewCustomDomainForm()
@@ -30,6 +25,10 @@ def custom_domain():
 
     if request.method == "POST":
         if request.form.get("form-name") == "create":
+            if not current_user.is_premium():
+                flash("Only premium plan can add custom domain", "warning")
+                return redirect(url_for("dashboard.custom_domain"))
+
             if new_custom_domain_form.validate():
                 new_domain = new_custom_domain_form.domain.data
                 if CustomDomain.get_by(domain=new_domain):

+ 5 - 6
app/dashboard/views/directory.py

@@ -18,11 +18,6 @@ class NewDirForm(FlaskForm):
 @dashboard_bp.route("/directory", methods=["GET", "POST"])
 @login_required
 def directory():
-    # only premium user can add directory
-    if not current_user.is_premium():
-        flash("Only premium user can add directories", "warning")
-        return redirect(url_for("dashboard.index"))
-
     dirs = Directory.query.filter_by(user_id=current_user.id).all()
 
     new_dir_form = NewDirForm()
@@ -47,6 +42,10 @@ def directory():
             return redirect(url_for("dashboard.directory"))
 
         elif request.form.get("form-name") == "create":
+            if not current_user.is_premium():
+                flash("Only premium plan can add directory", "warning")
+                return redirect(url_for("dashboard.directory"))
+
             if new_dir_form.validate():
                 new_dir_name = new_dir_form.name.data.lower()
 
@@ -60,7 +59,7 @@ def directory():
 
                     flash(f"Directory {new_dir.name} is created", "success")
 
-                    return redirect(url_for("dashboard.directory",))
+                    return redirect(url_for("dashboard.directory"))
 
     return render_template(
         "dashboard/directory.html",

+ 0 - 10
app/dashboard/views/domain_detail.py

@@ -16,11 +16,6 @@ from app.models import CustomDomain, GenEmail
 @dashboard_bp.route("/domains/<int:custom_domain_id>/dns", methods=["GET", "POST"])
 @login_required
 def domain_detail_dns(custom_domain_id):
-    # only premium user can see custom domain
-    if not current_user.is_premium():
-        flash("Only premium user can add custom domains", "warning")
-        return redirect(url_for("dashboard.index"))
-
     custom_domain = CustomDomain.get(custom_domain_id)
     if not custom_domain or custom_domain.user_id != current_user.id:
         flash("You cannot see this page", "warning")
@@ -103,11 +98,6 @@ def domain_detail_dns(custom_domain_id):
 @dashboard_bp.route("/domains/<int:custom_domain_id>/info", methods=["GET", "POST"])
 @login_required
 def domain_detail(custom_domain_id):
-    # only premium user can see custom domain
-    if not current_user.is_premium():
-        flash("Only premium user can add custom domains", "warning")
-        return redirect(url_for("dashboard.index"))
-
     custom_domain = CustomDomain.get(custom_domain_id)
     if not custom_domain or custom_domain.user_id != current_user.id:
         flash("You cannot see this page", "warning")

+ 4 - 0
server.py

@@ -158,6 +158,10 @@ def fake_data():
     )
     db.session.commit()
 
+    Directory.create(user_id=user.id, name="abcd")
+    Directory.create(user_id=user.id, name="xyzt")
+    db.session.commit()
+
     # Create a client
     client1 = Client.create_new(name="Demo", user_id=user.id)
     client1.oauth_client_id = "client-id"