# Forms

## Login

Path:

  `allauth.account.forms.LoginForm`

Used on:

  account_login view.

Example override:

    from allauth.account.forms import LoginForm
    class MyCustomLoginForm(LoginForm):

        def login(self, *args, **kwargs):

            # Add your own processing here.

            # You must return the original result.
            return super(MyCustomLoginForm, self).login(*args, **kwargs)

You have access to the following:

- `self.user` is the User object that is logging in.

`settings.py`:

    ACCOUNT_FORMS = {'login': 'mysite.forms.MyCustomLoginForm'}

## Signup

Path:

  `allauth.account.forms.SignupForm`

Used on:

  account_signup view.

Example override:

    from allauth.account.forms import SignupForm
    class MyCustomSignupForm(SignupForm):

        def save(self, request):

            # Ensure you call the parent class's save.
            # .save() returns a User object.
            user = super(MyCustomSignupForm, self).save(request)

            # Add your own processing here.

            # You must return the original result.
            return user

`settings.py`:

    ACCOUNT_FORMS = {'signup': 'mysite.forms.MyCustomSignupForm'}

## Add Email

Path:

  `allauth.account.forms.AddEmailForm`

Used on:

  account_email view.

Example override:

    from allauth.account.forms import AddEmailForm
    class MyCustomAddEmailForm(AddEmailForm):

        def save(self, request):

            # Ensure you call the parent class's save.
            # .save() returns an allauth.account.models.EmailAddress object.
            email_address_obj = super(MyCustomAddEmailForm, self).save(request)

            # Add your own processing here.

            # You must return the original result.
            return email_address_obj

You have access to the following:

- `self.user` is the User object that is logged in.

`settings.py`:

    ACCOUNT_FORMS = {'add_email': 'mysite.forms.MyCustomAddEmailForm'}

## Change Password

Path:

  `allauth.account.forms.ChangePasswordForm`

Used on:

  account_change_password view.

Example override:

    from allauth.account.forms import ChangePasswordForm
    class MyCustomChangePasswordForm(ChangePasswordForm):

        def save(self):

            # Ensure you call the parent class's save.
            # .save() does not return anything
            super(MyCustomChangePasswordForm, self).save()

            # Add your own processing here.

You have access to the following:

- `self.user` is the User object that is logged in.

`settings.py`:

    ACCOUNT_FORMS = {'change_password': 'mysite.forms.MyCustomChangePasswordForm'}

## Set Password

Path:

  `allauth.account.forms.SetPasswordForm`

Used on:

  account_set_password view.

Example override:

    from allauth.account.forms import SetPasswordForm
    class MyCustomSetPasswordForm(SetPasswordForm):

        def save(self):

            # Ensure you call the parent class's save.
            # .save() does not return anything
            super(MyCustomSetPasswordForm, self).save()

            # Add your own processing here.

You have access to the following:

- `self.user` is the User object that is logged in.

`settings.py`:

    ACCOUNT_FORMS = {'set_password': 'mysite.forms.MyCustomSetPasswordForm'}

## Reset Password

Path:

  `allauth.account.forms.ResetPasswordForm`

Used on:

  account_reset_password view.

Example override:

    from allauth.account.forms import ResetPasswordForm
    class MyCustomResetPasswordForm(ResetPasswordForm):

        def save(self, request):

            # Ensure you call the parent class's save.
            # .save() returns a string containing the email address supplied
            email_address = super(MyCustomResetPasswordForm, self).save(request)

            # Add your own processing here.

            # Ensure you return the original result
            return email_address

You have access to the following:

- `self.users` is a list of all possible User objects with matching email address.

`settings.py`:

    ACCOUNT_FORMS = {'reset_password': 'mysite.forms.MyCustomResetPasswordForm'}

## Reset Password From Key

Path:

  `allauth.account.forms.ResetPasswordKeyForm`

Used on:

  account_reset_password view.

Example override:

    from allauth.account.forms import ResetPasswordKeyForm
    class MyCustomResetPasswordKeyForm(ResetPasswordKeyForm):

        def save(self):

            # Add your own processing here.

            # Ensure you call the parent class's save.
            # .save() does not return anything
            super(MyCustomResetPasswordKeyForm, self).save()

You have access to the following:

- `self.user` is the User object.

`settings.py`:

    ACCOUNT_FORMS = {'reset_password_from_key': 'mysite.forms.MyCustomResetPasswordKeyForm'}