]> git.lizzy.rs Git - cheatdb.git/commitdiff
Add ability for moderators to change linked accounts
authorrubenwardy <rw@rubenwardy.com>
Fri, 10 Jul 2020 21:59:41 +0000 (22:59 +0100)
committerrubenwardy <rw@rubenwardy.com>
Fri, 10 Jul 2020 21:59:41 +0000 (22:59 +0100)
app/blueprints/users/profile.py
app/models.py
app/templates/users/profile.html
app/utils.py

index f3c697d536cbc656c1e6e85cddbc3f1ea3792446..47543dc1fc1e776f95164892c94ddc6faba0cb25 100644 (file)
@@ -24,14 +24,16 @@ from app.models import *
 from flask_wtf import FlaskForm
 from wtforms import *
 from wtforms.validators import *
-from app.utils import randomString, loginUser, rank_required
+from app.utils import randomString, loginUser, rank_required, nonEmptyOrNone
 from app.tasks.forumtasks import checkForumAccount
 from app.tasks.emails import sendVerifyEmail, sendEmailRaw
 from app.tasks.phpbbparser import getProfile
 
 # Define the User profile form
 class UserProfileForm(FlaskForm):
-       display_name = StringField("Display name", [Optional(), Length(2, 20)])
+       display_name = StringField("Display name", [Optional(), Length(2, 100)])
+       forums_username = StringField("Forums Username", [Optional(), Length(2, 50)])
+       github_username = StringField("GitHub Username", [Optional(), Length(2, 50)])
        email = StringField("Email", [Optional(), Email()], filters = [lambda x: x or None])
        website_url = StringField("Website URL", [Optional(), URL()], filters = [lambda x: x or None])
        donate_url = StringField("Donation URL", [Optional(), URL()], filters = [lambda x: x or None])
@@ -52,7 +54,7 @@ def profile(username):
                abort(404)
 
        form = None
-       if user.checkPerm(current_user, Permission.CHANGE_DNAME) or \
+       if user.checkPerm(current_user, Permission.CHANGE_USERNAMES) or \
                        user.checkPerm(current_user, Permission.CHANGE_EMAIL) or \
                        user.checkPerm(current_user, Permission.CHANGE_RANK):
                # Initialize form
@@ -61,8 +63,10 @@ def profile(username):
                # Process valid POST
                if request.method=="POST" and form.validate():
                        # Copy form fields to user_profile fields
-                       if user.checkPerm(current_user, Permission.CHANGE_DNAME):
-                               user.display_name = form["display_name"].data
+                       if user.checkPerm(current_user, Permission.CHANGE_USERNAMES):
+                               user.display_name = form.display_name.data
+                               user.forums_username = nonEmptyOrNone(form.forums_username.data)
+                               user.github_username = nonEmptyOrNone(form.github_username.data)
 
                        if user.checkPerm(current_user, Permission.CHANGE_PROFILE_URLS):
                                user.website_url  = form["website_url"].data
index 2b12562fa24981d61d98eac169332ce5307bb996..4c61be1d64d24e4f073532ce19d13fea517de25c 100644 (file)
@@ -84,7 +84,7 @@ class Permission(enum.Enum):
        APPROVE_RELEASE    = "APPROVE_RELEASE"
        APPROVE_NEW        = "APPROVE_NEW"
        CHANGE_RELEASE_URL = "CHANGE_RELEASE_URL"
-       CHANGE_DNAME       = "CHANGE_DNAME"
+       CHANGE_USERNAMES       = "CHANGE_USERNAMES"
        CHANGE_RANK        = "CHANGE_RANK"
        CHANGE_EMAIL       = "CHANGE_EMAIL"
        EDIT_EDITREQUEST   = "EDIT_EDITREQUEST"
@@ -192,7 +192,7 @@ class User(db.Model, UserMixin):
                # Members can edit their own packages, and editors can edit any packages
                if perm == Permission.CHANGE_AUTHOR:
                        return user.rank.atLeast(UserRank.EDITOR)
-               elif perm == Permission.CHANGE_RANK or perm == Permission.CHANGE_DNAME:
+               elif perm == Permission.CHANGE_RANK or perm == Permission.CHANGE_USERNAMES:
                        return user.rank.atLeast(UserRank.MODERATOR)
                elif perm == Permission.CHANGE_EMAIL or perm == Permission.CHANGE_PROFILE_URLS:
                        return user == self or (user.rank.atLeast(UserRank.MODERATOR) and user.rank.atLeast(self.rank))
index a75ae022fa3cb75aa236bb9456eda06151f21a28..4af1c1de5741286c0460f57b4def283c1f49cc02 100644 (file)
                                <form action="" method="POST" class="form box-body" role="form">
                                        {{ form.hidden_tag() }}
 
-                                       {% if user.checkPerm(current_user, "CHANGE_DNAME") %}
+                                       {% 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") %}
index 07337b6596ae36f4e51395f709093b84f44dbbe8..618a4aa15451fc1650c6998bb6f4e3d83fae6cd0 100644 (file)
@@ -218,3 +218,9 @@ def isYes(val):
 
 def isNo(val):
        return val and not isYes(val)
+
+def nonEmptyOrNone(str):
+       if str is None or str == "":
+               return None
+
+       return str