用户名不区分大小写;

修复更新problem时的一些问题
This commit is contained in:
zema1
2017-11-02 15:29:08 +08:00
parent b86ebf0ed7
commit 70f52b6f27
5 changed files with 103 additions and 78 deletions

View File

@@ -20,7 +20,7 @@ class UserManager(models.Manager):
use_in_migrations = True
def get_by_natural_key(self, username):
return self.get(**{self.model.USERNAME_FIELD: username})
return self.get(**{f"{self.model.USERNAME_FIELD}__iexact": username})
class User(AbstractBaseUser):

View File

@@ -198,7 +198,7 @@ class UsernameOrEmailCheck(APIView):
if data.get("username"):
result["username"] = User.objects.filter(username=data["username"]).exists()
if data.get("email"):
result["email"] = User.objects.filter(email=data["email"]).exists()
result["email"] = User.objects.filter(email=data["email"].lower()).exists()
return self.success(result)
@@ -218,9 +218,9 @@ class UserRegisterAPI(APIView):
return self.error("Invalid captcha")
if User.objects.filter(username=data["username"]).exists():
return self.error("Username already exists")
data["email"] = data["email"].lower()
if User.objects.filter(email=data["email"]).exists():
return self.error("Email already exists")
user = User.objects.create(username=data["username"], email=data["email"])
user.set_password(data["password"])
user.save()
@@ -240,6 +240,7 @@ class UserChangeEmailAPI(APIView):
return self.error("tfa_required")
if not OtpAuth(user.tfa_token).valid_totp(data["tfa_code"]):
return self.error("Invalid two factor verification code")
data["new_email"] = data["new_email"].lower()
if User.objects.filter(email=data["new_email"]).exists():
return self.error("The email is owned by other account")
user.email = data["new_email"]
@@ -280,7 +281,7 @@ class ApplyResetPasswordAPI(APIView):
if not captcha.check(data["captcha"]):
return self.error("Invalid captcha")
try:
user = User.objects.get(email=data["email"])
user = User.objects.get(email__iexact=data["email"])
except User.DoesNotExist:
return self.error("User does not exist")
if user.reset_password_token_expire_time and 0 < int(