fix: use phone_number as USERNAME_FIELD on User model
- USERNAME_FIELD = "phone_number" (was "email") — email is optional on this platform; most customers will be phone-only - Add REQUIRED_FIELDS = [] to make the intent explicit - Update create_superuser to accept phone_number as the identifier and pass it through to create_user as a keyword argument - All 35 backend tests pass Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -29,7 +29,7 @@ class UserManager(BaseUserManager):
|
||||
user.save(using=self._db)
|
||||
return user
|
||||
|
||||
def create_superuser(self, email, password=None, **extra_fields):
|
||||
def create_superuser(self, phone_number, password=None, **extra_fields):
|
||||
extra_fields.setdefault("is_staff", True)
|
||||
extra_fields.setdefault("is_superuser", True)
|
||||
extra_fields.setdefault("role", UserRole.ADMIN)
|
||||
@@ -37,7 +37,7 @@ class UserManager(BaseUserManager):
|
||||
raise ValueError("Superuser must have is_staff=True")
|
||||
if extra_fields.get("is_superuser") is not True:
|
||||
raise ValueError("Superuser must have is_superuser=True")
|
||||
return self.create_user(email, password, **extra_fields)
|
||||
return self.create_user(phone_number=phone_number, password=password, **extra_fields)
|
||||
|
||||
|
||||
class User(AbstractBaseUser, PermissionsMixin):
|
||||
@@ -59,7 +59,8 @@ class User(AbstractBaseUser, PermissionsMixin):
|
||||
|
||||
objects = UserManager()
|
||||
|
||||
USERNAME_FIELD = "email"
|
||||
USERNAME_FIELD = "phone_number"
|
||||
REQUIRED_FIELDS = [] # email is optional; phone_number is the identifier
|
||||
|
||||
def __str__(self):
|
||||
return self.email or self.phone_number or str(self.id)
|
||||
|
||||
Reference in New Issue
Block a user