Add custom user model

This commit is contained in:
Tobias Kunze 2025-03-09 15:21:12 +01:00
parent 2d3e8b2a56
commit 6702de359b
3 changed files with 41 additions and 0 deletions

View file

@ -14,6 +14,7 @@ from .service import (
ServiceOfferingPlan,
ServiceProvider,
)
from .user import User
__all__ = [
"BillingEntity",
@ -28,4 +29,5 @@ __all__ = [
"ServiceOffering",
"ServiceOfferingPlan",
"ServiceProvider",
"User",
]

View file

@ -0,0 +1,38 @@
from django.contrib.auth.models import AbstractBaseUser
from django.db import models
from django.utils.translation import gettext_lazy as _
class User(AbstractBaseUser):
"""The Django model provides a password and last_login field."""
email = models.EmailField(unique=True, verbose_name=_("Email address"))
first_name = models.CharField(
max_length=30, blank=True, verbose_name=_("First name")
)
last_name = models.CharField(max_length=30, blank=True, verbose_name=_("Last name"))
company = models.CharField(max_length=100, blank=True, verbose_name=_("Company"))
is_staff = models.BooleanField(
default=False,
verbose_name=_("Is staff"),
help_text=_("Staff users can log into this admin site."),
)
is_superuser = models.BooleanField(
default=False,
verbose_name=_("Is superuser"),
help_text=_(
"Superusers have all permissions without explicitly assigning them. Use with caution."
),
)
EMAIL_FIELD = "email"
USERNAME_FIELD = "email"
def __str__(self):
if self.first_name and self.last_name:
return f"{self.first_name} {self.last_name}"
return self.email
def normalize_username(self, username):
return super().normalize_username(username).strip().lower()

View file

@ -107,6 +107,7 @@ TEMPLATES = [
},
]
AUTH_USER_MODEL = "core.User"
AUTH_PASSWORD_VALIDATORS = [
{
"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator"