from django.db import models from django.contrib.auth.models import AbstractUser, BaseUserManager class EmailUserManager(BaseUserManager): use_in_migrations = True def _create_user(self, email, password, **extra_fields): if not email: raise ValueError("Un email doit être défini") email = self.normalize_email(email) user = self.model(email=email, **extra_fields) user.set_password(password) user.save(using=self.db) return user def create_user(self, username, email, password=None, **extra_fields): extra_fields.setdefault("is_staff", False) extra_fields.setdefault("is_superuser", False) return self._create_user(username, email, password, **extra_fields) def create_superuser(self, email, password, **extra_fields): extra_fields.setdefault("is_staff", True) extra_fields.setdefault("is_superuser", True) if extra_fields.get("is_staff") is not True: raise ValueError("Superuser doit être staff à True") if extra_fields.get("is_superuser") is not True: raise ValueError("SuperUser doit être is_superuser à True") return self._create_user(email, password, **extra_fields) # class UsernameUserManager(BaseUserManager): # use_in_migrations = True # # def _create_user(self, username, email, password, **extra_fields): # if not username: # raise ValueError("Un username doit être défini") # if not email: # raise ValueError("Un email doit être défini") # # email = self.normalize_email(email) # user = self.model(username=username, email=email, **extra_fields) # user.set_password(password) # user.save(using=self.db) # return user # # def create_user(self, username, email, password=None, **extra_fields): # extra_fields.setdefault("is_staff", False) # extra_fields.setdefault("is_superuser", False) # return self._create_user(username, email, password, **extra_fields) # # def create_superuser(self, username, email, password, **extra_fields): # extra_fields.setdefault("is_staff", True) # extra_fields.setdefault("is_superuser", True) # # if extra_fields.get("is_staff") is not True: # raise ValueError("Superuser doit être staff à True") # if extra_fields.get("is_superuser") is not True: # raise ValueError("SuperUser doit être is_superuser à True") # # return self._create_user(username, email, password, **extra_fields) class User(AbstractUser): email = models.EmailField(unique=True) USERNAME_FIELD = 'email' REQUIRED_FIELDS = [] objects = EmailUserManager()