rest_auth.serializers¶
Serializer implementations for authentication.
-
class
rest_auth.serializers.LoginSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]¶ Serializer for loggin in. It checks username and password are correct for settings.AUTH_USER_MODEL.
After validating it,
userinstance created for authenticated user. View methods should persist this user. (throughdjango.contrib.auth.login)Parameters: - username –
USERNAME_FIELDfor AUTH_USER_MODEL - password – user’s password
-
validate(data)[source]¶ Checks username & password. uses
django.contrib.auth.authenticateParameters: data – validated data from Serializer.validateReturns: validated_data Raises: VaildationError – if username or password are incorrect
-
confirm_login_allowed(user)[source]¶ Checks if validated user is allowed for website.
Override this method if you use custom authentication method and have additional methods for allowing login.
Raises: VaildationError – if user are not allowed
-
create(validated_data)[source]¶ persist a authenticated user in this step.
Parameters: validated_data – validated_data should contains request. You should pass request to serialzer.save.
- username –
-
class
rest_auth.serializers.PasswordResetSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]¶ Sends a website link for resetting password. It uses django’s
PasswordResetFormdirectly because there is just one required field, email, and form implemented its business logic nicely.Parameters: email – email address to receive password-reset-link. -
password_reset_form_class¶ alias of
django.contrib.auth.forms.PasswordResetForm
-
validate_email(value)[source]¶ Raises: - VaildationError –
rest_framework’s field validation - VaildationError –
django’s field vaildation
- VaildationError –
-
save(domain_override=None, subject_template_name='registration/password_reset_subject.txt', email_template_name='registration/password_reset_email.html', use_https=True, token_generator=<django.contrib.auth.tokens.PasswordResetTokenGenerator object>, from_email=None, request=None, html_email_template_name=None, extra_email_context=None)[source]¶ sends a email, which contains link for resetting password
-
-
class
rest_auth.serializers.SetPasswordSerializer(user, *args, **kwargs)[source]¶ This serializer resets password of a given user. Please be VERY CAREFUL for using this any given user’s password can be changed.
Setting permission IsAdminUser is recommended.
Parameters: - new_password1 – new password
- new_password2 – new password confirmation.
-
class
rest_auth.serializers.PasswordChangeSerializer(user, *args, **kwargs)[source]¶ resets password of user. Resetting password is done if old_password is correct and two new passwords are equals.
Parameters: - old_password – old_password
- new_password1 – new password
- new_password2 – new password confirmation.
-
class
rest_auth.serializers.SignupSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]¶ Signup serializer for rest_framework & AUTH_USER_MODEL.
Fields & methods are built on a django’s defualt
Usermodel. Extend this serializer if you need your custom user model.(Even if
AUTH_USER_MODELis can be customized, this is recommended that You don’t change & use customized user model. using custom user model is very complex.)Parameters: - username –
USERNAME_FIELDofAUTH_USER_MODEL - email –
User.get_email_field_name() - password1 – password of a user (write_only, used only when created)
- password2 – password confirmation (write_only)
TODO: Serializer Only implements creating. list/get are need to be implmtd
-
validate(data)[source]¶ Vaildates if two passwords are equal.
Raises: ValidationError – when 2 passwds are different
-
create(validated_data)[source]¶ Creates user instance
CAVEAT:
A clear difference between django’s
ModelFormand rest_framework’sModelSerializeris that, model serializer’ssavemethod doesn’t respect form’scommit=True.Inside
super().create, a query is fired to create user, and inside this, additional query is fired to save hashed password. It’s becauseModelSerializer’screatemethod uses default manager’s create function,Model._default_manager.create()(User model creation is recommended by calling
UserManager’screate_usermethod)Parameters: validated_data – validated data created after self.vaildate
-
send_mail(user, domain_override=None, subject_template_name='registration/verify_email.txt', email_template_name='registration/verify_email.html', use_https=False, token_generator=<django.contrib.auth.tokens.PasswordResetTokenGenerator object>, from_email=None, request=None, html_email_template_name=None, extra_email_context=None)[source]¶ Send verification mail to newbie.
- username –