The problem was, when creating a custom user, one has to define a custom model form and model admin that handles the password properly. After that it was solved.
Thank you. On Thu, Nov 12, 2015 at 9:25 PM, Andreas Kuhne <[email protected]> wrote: > Try to debug and check what your password value is after the > set_password() statement. Also have you checked the database after trying > to create a user with the new method? It should be hashed in the database. > This is stuff that should "just work" in django (it's regulated by the > AbstractBaseUser and is the same that I am using in a project). > > You did restart the django shell after changing the code? > > 2015-11-12 16:44 GMT+01:00 Benjamin Smith <[email protected]>: > >> I have changed user.set_password(self.cleaned_data["password"]) to >> user.set_password(password). >> But I am getting the same result. >> >> On Thu, Nov 12, 2015 at 8:57 PM, Andreas Kuhne < >> [email protected]> wrote: >> >>> As aRkadeFR says, you seam to have mixed code there.... >>> >>> The row: >>> user.set_password(self.cleaned_data["password"]) >>> >>> is taken from a form somewhere and won't work. It should instead be : >>> user.set_password(password) >>> >>> I suppose the password is going through to the create method via the >>> kwargs argument at the end of you create method. But if you change like I >>> said, everything should work. >>> >>> >>> Med vänliga hälsningar, >>> >>> Andréas Kühne >>> Software Development Manager >>> Suitopia Scandinavia AB >>> >>> 2015-11-12 16:20 GMT+01:00 aRkadeFR <[email protected]>: >>> >>>> Hello, >>>> >>>> I don't quite get the code in your method: 'MyUserManager.create_user': >>>> user.set_password(self.cleaned_data["password"]) >>>> >>>> You're in your Manager method but call self.cleaned_data ? >>>> >>>> You can set a breakpoint inside your method with pdb to see >>>> what's going on with your fields? >>>> >>>> >>>> On 11/12/2015 04:11 PM, Benjamin Smith wrote: >>>> >>>> I have my own custom User model, and its own Manger too. >>>> >>>> Models: >>>> >>>> class MyUser(AbstractBaseUser, PermissionsMixin): >>>> email = models.EmailField(max_length=255, unique=True) >>>> first_name = models.CharField(max_length=35) >>>> last_name = models.CharField(max_length=35) >>>> username = models.CharField(max_length=70, unique=True) >>>> date_of_birth = models.DateField() >>>> is_active = models.BooleanField(default=True) >>>> is_admin = models.BooleanField(default=False) >>>> >>>> @property >>>> def is_staff(self): >>>> return self.is_admin >>>> >>>> def get_full_name(self): >>>> return ('%s %s') % (self.first_name, self.last_name) >>>> >>>> def get_short_name(self): >>>> return self.username >>>> >>>> objects = MyUserManager() >>>> USERNAME_FIELD = 'email' >>>> REQUIRED_FIELDS = ['first_name', 'last_name', 'username', >>>> 'date_of_birth'] >>>> >>>> >>>> Manager: >>>> >>>> class MyUserManager(BaseUserManager): >>>> def create_user(self, email, first_name, last_name, username, >>>> date_of_birth, password=None, **kwargs): >>>> if not email: >>>> raise ValueError('User must have an email address') >>>> >>>> user = self.model( >>>> email=self.normalize_email(email), >>>> first_name=first_name, >>>> last_name=last_name, >>>> username=username, >>>> date_of_birth=date_of_birth, >>>> **kwargs >>>> ) >>>> user.set_password(self.cleaned_data["password"]) >>>> user.save(using=self._db) >>>> return user >>>> >>>> def create_superuser(self, email, first_name, last_name, username, >>>> date_of_birth, password, **kwargs): >>>> user = self.create_user( >>>> email, >>>> first_name=first_name, >>>> last_name=last_name, >>>> username=username, >>>> date_of_birth=date_of_birth, >>>> password=password, >>>> is_superuser=True, >>>> **kwargs >>>> ) >>>> user.is_admin = True >>>> user.save(using=self._db) >>>> return user >>>> >>>> >>>> Everything works when creating a new user without any errors. But when >>>> I try to login I can't. So I checked the user's email and password to >>>> confirm. Then I noticed that the password is displayed as plain text (eg. >>>> *strongpassword)*, and when changed the admin form to get the hashed >>>> password using *ReadOnlyPasswordHashField()* I get an error inside the >>>> password field, even though I used *set_password()* for the Manger >>>> inside the *create_user()* function. >>>> >>>> *Invalid password format or unknown hashing algorithm* >>>> >>>> >>>> However, if I manually do *set_password('strongpassword')* for that >>>> user inside the console, then only the password is hashed. Could you please >>>> help me solve this problem. 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 http://groups.google.com/group/django-users. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/django-users/CAM4YLWJNGdSj-rVAuhta_UA50Cjna8zg-c14FPxK%3DtdU49mngQ%40mail.gmail.com >>>> <https://groups.google.com/d/msgid/django-users/CAM4YLWJNGdSj-rVAuhta_UA50Cjna8zg-c14FPxK%3DtdU49mngQ%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>>> >>>> -- >>>> aRkadeFR >>>> >>>> -- >>>> 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 http://groups.google.com/group/django-users. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/django-users/5644AE3A.5050609%40arkade.info >>>> <https://groups.google.com/d/msgid/django-users/5644AE3A.5050609%40arkade.info?utm_medium=email&utm_source=footer> >>>> . >>>> >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >>> 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 http://groups.google.com/group/django-users. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/django-users/CALXYUb%3D-V1fqJLJSbUaPUWaYX6srAf9s0qnZ0ZrTZOv9757o2w%40mail.gmail.com >>> <https://groups.google.com/d/msgid/django-users/CALXYUb%3D-V1fqJLJSbUaPUWaYX6srAf9s0qnZ0ZrTZOv9757o2w%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- >> 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 http://groups.google.com/group/django-users. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/django-users/CAM4YLWJ3tgcBSe_VcH6T6t4UbbA4EqTB0R0TueL2BjidZow7xg%40mail.gmail.com >> <https://groups.google.com/d/msgid/django-users/CAM4YLWJ3tgcBSe_VcH6T6t4UbbA4EqTB0R0TueL2BjidZow7xg%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > -- > 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 http://groups.google.com/group/django-users. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/CALXYUbksz%3DUN60j-pt0YbfCq_Zb2x1ESnOoZjbQW6K%2BssNxKVQ%40mail.gmail.com > <https://groups.google.com/d/msgid/django-users/CALXYUbksz%3DUN60j-pt0YbfCq_Zb2x1ESnOoZjbQW6K%2BssNxKVQ%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- 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 http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAM4YLWKUTvuw8X%2BJC7Gi-ucR%3DRTfbH8n7-6cdU7mz3pESQsdTA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.

