But again, with the superuser's credentials, I can login

On Sat, Jul 23, 2016 at 12:47 PM, Robin Lery <[email protected]> wrote:

> I have a made custom user model.
>
> class CustomUserManager(BaseUserManager):
>     def _create_user(self, email, username, password, first_name,
> last_name, date_of_birth, gender, mobile_number,
>                      is_active, is_admin, is_superuser):
>         """
>         Creates and saves a user with given email and password
>         """
>         if not email:
>             raise ValueError('Email must be set')
>
>         email = self.normalize_email(email)
>         now = timezone.now()
>
>         user = self.model(
>             email=email,
>             username=username,
>             first_name=first_name,
>             last_name=last_name,
>             date_of_birth=date_of_birth,
>             gender=gender,
>             mobile_number=mobile_number,
>             date_joined=now,
>             is_active=is_active,
>             is_admin=is_admin,
>             is_superuser=is_superuser,
>         )
>         user.set_password(password)
>         user.save(using=self._db)
>         return user
>
>     def create_user(self, email, username, password, first_name,
> last_name, date_of_birth, gender, mobile_number, **extra_fields):
>         user = self._create_user(email, username, password, first_name,
> last_name, date_of_birth, gender, mobile_number, True, False, False,
> **extra_fields)
>         user.save(using=self._db)
>         return user
>
>     def create_superuser(self, email, username, password, first_name,
> last_name, date_of_birth, gender, mobile_number, **extra_fields):
>         user = self._create_user(email, username, password, first_name,
> last_name, date_of_birth, gender, mobile_number, True, True, True,
> **extra_fields)
>         user.save(using=self._db)
>         return user
>
>
> class CustomUser(AbstractBaseUser, PermissionsMixin):
>     email = models.EmailField(_('email address'), max_length=254,
> unique=True)
>     username = models.CharField(_('user name'), max_length=254,
> unique=True)
>     first_name = models.CharField(_('first name'), max_length=30)
>     last_name = models.CharField(_('last name'), max_length=30)
>     date_of_birth = models.DateField()
>     gender = models.CharField(choices=GENDERTYPE, max_length=1)
>     mobile_number = models.IntegerField(unique=True)
>     date_joined = models.DateTimeField(_('date joined'),
> default=timezone.now)
>     is_active = models.BooleanField(default=True)
>     is_admin = models.BooleanField(default=False)
>
>     objects = CustomUserManager()
>
>     USERNAME_FIELD = 'email'
>     REQUIRED_FIELDS = ['username', 'first_name', 'last_name',
> 'date_of_birth', 'gender', 'mobile_number']
>     ...
>     ...
>
> And to process the model, I have a custom user creation forms.py
>
> class UserCreationForm(forms.ModelForm):
>     password = forms.CharField(label='Password',
> widget=forms.PasswordInput)
>
>     class Meta:
>         model = CustomUser
>         fields = ('email', 'username', 'first_name', 'last_name',
> 'date_of_birth', 'gender', 'mobile_number')
>
>     def save(self, commit=True):
>         # Save the provided password in hashed format
>         user = super(UserCreationForm, self).save(commit=False)
>         user.set_password(self.cleaned_data["password"])
>         print self.cleaned_data["password"]
>         if commit:
>             user.save()
>         return user
>
>
> class UserChangeForm(forms.ModelForm):
>     password = ReadOnlyPasswordHashField()
>
>     class Meta:
>         model = CustomUser
>         fields = (
>             'email', 'username', 'first_name', 'last_name',
> 'date_of_birth', 'gender', 'mobile_number', 'is_active',
>             'is_admin'
>         )
>
>     def clean_password(self):
>         return self.initial["password"]
>
> I can save and create a new user. Also I can see the hashed password in
> the admin. However when I try to login with the `email` and `password` of
> the new user, I am not being authenticated. To check if I am actually
> getting any password, I tried printing the *self.cleaned_data["password"]
> *in the UserCreationForm, and in the console I can see the password I
> gave. What am I doing wrong here? Please help me.
>
> Thank you.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CA%2B4-nGocC6r9zwG0a6niNM7DRtnnEOyRhnk0cV8U_tQy8nyzqg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to