Browse Source

Generate usernames as uuid3(const, email). Prevents multiple accts with the same email. Prevent double-clicking the submit button in signup form. Fixes #290

pull/291/head
Pēteris Caune 5 years ago
parent
commit
41a0871452
No known key found for this signature in database GPG Key ID: E28D7679E9A9EDE2
3 changed files with 12 additions and 1 deletions
  1. +4
    -0
      CHANGELOG.md
  2. +6
    -1
      hc/accounts/views.py
  3. +2
    -0
      static/js/signup.js

+ 4
- 0
CHANGELOG.md View File

@ -8,6 +8,10 @@ All notable changes to this project will be documented in this file.
- Add "last_duration" attribute to the Check API resource (#257) - Add "last_duration" attribute to the Check API resource (#257)
- Upgrade to psycopg2 2.8.3 - Upgrade to psycopg2 2.8.3
### Bug Fixes
- Usernames now are uuid3(const, email). Prevents multiple accts with same email (#290)
- Prevent double-clicking the submit button in signup form
## 1.9.0 - 2019-09-03 ## 1.9.0 - 2019-09-03


+ 6
- 1
hc/accounts/views.py View File

@ -43,6 +43,8 @@ NEXT_WHITELIST = (
"hc-add-pushover", "hc-add-pushover",
) )
NAMESPACE_HC = uuid.UUID("2b25afdf-ce1a-4fa3-adf2-592e35f27fa9")
def _is_whitelisted(path): def _is_whitelisted(path):
try: try:
@ -54,7 +56,10 @@ def _is_whitelisted(path):
def _make_user(email, with_project=True): def _make_user(email, with_project=True):
username = str(uuid.uuid4())[:30]
# Generate username from email in a deterministic way.
# Since the database has an uniqueness constraint on username,
# this makes sure that emails also are unique.
username = str(uuid.uuid3(NAMESPACE_HC, email))
user = User(username=username, email=email) user = User(username=username, email=email)
user.set_unusable_password() user.set_unusable_password()
user.save() user.save()


+ 2
- 0
static/js/signup.js View File

@ -5,6 +5,7 @@ $(function () {
var email = $("#signup-email").val(); var email = $("#signup-email").val();
var token = $('input[name=csrfmiddlewaretoken]').val(); var token = $('input[name=csrfmiddlewaretoken]').val();
$("#signup-go").prop("disabled", true);
$.ajax({ $.ajax({
url: base + "/accounts/signup/", url: base + "/accounts/signup/",
type: "post", type: "post",
@ -12,6 +13,7 @@ $(function () {
data: {"identity": email}, data: {"identity": email},
success: function(data) { success: function(data) {
$("#signup-result").html(data).show(); $("#signup-result").html(data).show();
$("#signup-go").prop("disabled", false);
} }
}); });


Loading…
Cancel
Save