예제 #1
0
 def clean_email(self):
     email = self.cleaned_data["email"]
     email = get_adapter().clean_email(email)
     self.users = filter_users_by_email(email)
     if not self.users:
         raise forms.ValidationError("가입된 이메일이 없습니다.")
     return self.cleaned_data["email"]
예제 #2
0
    def clean_email(self):
        email = self.cleaned_data["email"]
        from allauth.account.adapter import get_adapter
        email = get_adapter().clean_email(email)
        self.users = filter_users_by_email(email)

        return self.cleaned_data["email"]
예제 #3
0
    def clean_email(self):
        """Clean email field."""
        email = self.cleaned_data["email"]
        email = get_adapter().clean_email(email)
        self.users = filter_users_by_email(email)

        return self.cleaned_data["email"]
예제 #4
0
    def clean_email(self):

        value = self.cleaned_data["email"]
        value = get_adapter().clean_email(value)
        errors = {
            "this_account":
            _("This e-mail address is already associated"
              " with this account."),
            "different_account":
            _("This e-mail address is already associated"
              " with another account."),
            "max_email_addresses":
            _("You cannot add more than %d e-mail addresses."),
        }
        users = filter_users_by_email(value)
        on_diff_account = [u for u in users if u.pk != self.user.pk]
        primary_on_this_account = str(
            EmailAddress.objects.filter(user=self.user, primary=True).first())

        if primary_on_this_account == str(value):
            raise forms.ValidationError(errors["this_account"])
        if on_diff_account and app_settings.UNIQUE_EMAIL:
            raise forms.ValidationError(errors["different_account"])
        if not EmailAddress.objects.can_add_email(self.user):
            raise forms.ValidationError(errors["max_email_addresses"] %
                                        app_settings.MAX_EMAIL_ADDRESSES)
        return value
예제 #5
0
    def clean_email(self):
        value = self.cleaned_data["email"]

        errors = {
            "this_account":
            "This e-mail address is already associated"
            " with this account.",
            "different_account":
            "This e-mail address is already associated"
            " with another account.",
        }

        from allauth.account.utils import filter_users_by_email
        users = filter_users_by_email(value)
        on_this_account = [u for u in users if u.pk == self.user.pk]
        on_diff_account = [u for u in users if u.pk != self.user.pk]

        if on_this_account:

            # delete from account_emailconfirmation
            AM.EmailConfirmation.objects.get(
                email_address__email=value).delete()

            # delete from account_emailaddress
            AM.EmailAddress.objects.get(email=value).delete()

            # let rest of code re-add email and send confirmation
            #raise forms.ValidationError(errors["this_account"])

        if on_diff_account:  #and app_settings.UNIQUE_EMAIL:
            raise forms.ValidationError(errors["different_account"])

        return value
예제 #6
0
    def send(self, email: str) -> bool:
        current_site = get_current_site(self.request)
        users = filter_users_by_email(email)
        if not users:
            token = get_signup_token(email, AuthProvider.EMAIL)
            activate_url = get_access_url(self.request, token)
            return self.send_signup(self.request, email, activate_url)

        try:
            connection = self.get_connection()
            msgs = []
            for user in users:
                token = get_login_token(user)
                activate_url = get_access_url(self.request, token)
                ctx = {
                    "activate_url": activate_url,
                    "current_site": current_site,
                }

                messages = self.render_mail(self.login_email_template, ctx)
                msgs.append(EmailMultiAlternatives(
                    subject=''.join(messages['subject'].splitlines()),
                    body=messages['content'],
                    from_email=settings.DEFAULT_FROM_EMAIL,
                    to=[email],
                    connection=connection,
                    alternatives=[(messages['html_content'], 'text/html'), ],
                ))

            connection.send_messages(msgs)
        except Exception:
            logger.exception("Failed to send signup to '%s'", email)
            return False

        return True
예제 #7
0
 def validate(self, data):
     email = data['email']
     email = get_adapter().clean_email(email)
     self.users = filter_users_by_email(email)
     if not self.users:
         raise serializers.ValidationError({"error":_("The app is not setting"), "status": "error"})
     return data
예제 #8
0
 def clean_email(self):
     email = self.cleaned_data["email"]
     email = get_adapter().clean_email(email)
     self.users = filter_users_by_email(email)
     if not self.users:
         raise forms.ValidationError(_("The e-mail address is not assigned"
                                       " to any user account"))
     return self.cleaned_data["email"]
예제 #9
0
 def clean_email(self):
     email = self.cleaned_data["email"]
     email = get_adapter().clean_email(email)
     self.users = filter_users_by_email(email)
     if not self.users:
         raise forms.ValidationError(_("The e-mail address is not assigned"
                                       " to any user account"))
     return self.cleaned_data["email"]
예제 #10
0
 def clean_email(self):
     value = self.cleaned_data["email"]
     users = filter_users_by_email(value)
     if [u for u in users if u.pk != self.instance.pk]:
         msg = _("This e-mail address is already associated with another "
                 "account.")
         raise forms.ValidationError(msg)
     return value
예제 #11
0
파일: forms.py 프로젝트: nextcloud/appstore
 def clean_email(self):
     value = self.cleaned_data['email']
     users = filter_users_by_email(value)
     if [u for u in users if u.pk != self.instance.pk]:
         msg = _(
             'This e-mail address is already associated with another '
             'account.')
         raise forms.ValidationError(msg)
     return value
예제 #12
0
 def clean_email(self):
     """
     Invalid email should not raise error, as this would leak users
     for unit test: test_password_reset_with_invalid_email
     """
     email = self.cleaned_data["email"]
     email = get_adapter().clean_email(email)
     self.users = filter_users_by_email(email, is_active=True)
     return self.cleaned_data["email"]
예제 #13
0
파일: forms.py 프로젝트: zhwycsz/edd
 def save(self, request, **kwargs):
     email = self.cleaned_data["email"]
     account_adapter = adapter.get_adapter(request)
     if callable(account_adapter.password_reset_request):
         self.users = account_adapter.password_reset_request(request, email)
     else:
         # if adapter does not have password_reset_request, fall back to base behavior
         self.users = utils.filter_users_by_email(email)
     # base class .save() call generates reset token and sends email to self.users
     return super().save(request, **kwargs)
예제 #14
0
    def clean_email(self):
        email = self.cleaned_data["email"]
        email = get_adapter().clean_email(email)
        self.users = filter_users_by_email(email)
        if not len(self.users):
            raise forms.ValidationError(_("The e-mail address is not assigned"
                                          " to any user account"))

        elif len(self.users[0].socialaccount_set.filter(provider='facebook')):
            raise forms.ValidationError(_("You are using a social account to login you can't reset password."))
        return self.cleaned_data["email"]
예제 #15
0
 def validate(self, data):
     email = data['email']
     email = get_adapter().clean_email(email)
     self.users = filter_users_by_email(email)
     app = Application.objects.all()
     if not self.users:
         raise serializers.ValidationError({"error":_("The e-mail address is not assigned"
                                     " to any user account"), "status": "error"})
     if not app:
         raise serializers.ValidationError({"error":_("The app is not setting"), "status": "error"})
     return data
예제 #16
0
    def save(self, request, **kwargs):
        next_url = request.session.pop("next_url", reverse(settings.LOGIN_REDIRECT_URL))

        ret = super().save(request, **kwargs)
        # Use the lookup method allauth uses to get relevant members.
        users = filter_users_by_email(ret)
        for user in users:
            member = Member.objects.get(user=user)
            member.password_reset_redirect = next_url
            member.save()

        return ret
예제 #17
0
 def _authenticate_by_email(self, **credentials):
     # Even though allauth will pass along `email`, other apps may
     # not respect this setting. For example, when using
     # django-tastypie basic authentication, the login is always
     # passed as `username`.  So let's play nice with other apps
     # and use username as fallback
     email = credentials.get('email', credentials.get('username'))
     if email:
         for user in filter_users_by_email(email):
             if self._check_password(user, credentials["password"]):
                 return user
     return None
예제 #18
0
파일: forms.py 프로젝트: sirex/savanoriai
def validate_profile_email(form, value):
    value = get_adapter().clean_email(value)
    if value and value != form.instance.user.email:
        users = filter_users_by_email(value)
        on_diff_account = [u for u in users if u.pk != form.instance.user.pk]
        if on_diff_account:
            raise forms.ValidationError(_("A user is already registered with this e-mail address."))
        email_address = EmailAddress.objects.add_email(form.request, form.instance.user, value, confirm=True)
        if not email_address.verified:
            raise forms.ValidationError(
                _("Patikrinkite savo el. paštą ir patvirtinkite šį el. pašto adresą, tada galėsite jį naudoti.")
            )
    return value
예제 #19
0
    def save(self, request, **kwargs):
        next_url = request.session.pop("next_url",
                                       reverse(settings.LOGIN_REDIRECT_URL))

        ret = super().save(request, **kwargs)
        # Use the lookup method allauth uses to get relevant members.
        users = filter_users_by_email(ret)
        for user in users:
            member = Member.objects.get(user=user)
            member.password_reset_redirect = next_url
            member.save()

        return ret
예제 #20
0
 def form_valid(self, form):
     email = form.cleaned_data['email']
     # if the email address is unknown to us, direct them to the regular signup page
     # otherwise, send them through the forgot-password process to set a password
     form.users = filter_users_by_email(email)
     if len(form.users) < 1:
         self.request.session['signup_email_address'] = email
         return HttpResponseRedirect(reverse('account_signup'))
     elif not form.users[0].password:
         # this account needs to set a password
         form.save(self.request)
         return super(BadgeUserClaim, self).form_valid(form)
     else:
         return HttpResponseRedirect(reverse('account_login'))
예제 #21
0
    def clean_email(self):
        """Overrides allauth's method for security reasons.

        Validation for whether a user/email exists has been removed.
        This prevents potential attackers from finding out which emails
        are registered in our system by attempting to submit this form.

        """
        email = self.cleaned_data["email"]
        email = get_adapter().clean_email(email)
        # allauth sends reset emails to all users in self.users.
        # If there are none it will not send any emails
        self.users = filter_users_by_email(email)
        return self.cleaned_data["email"]
예제 #22
0
 def clean(self):
     email = self.cleaned_data.get('email')
     last_name = self.cleaned_data.get('last_name')
     first_name = self.cleaned_data.get('first_name')
     self.users = filter_users_by_email(email, is_active=True)
     users = CustomUser.objects.filter(email__iexact=email,
                                       is_active=True).first()
     if email == None or last_name == None or first_name == None:
         raise forms.ValidationError("")
     if users:
         if users.last_name != last_name or users.first_name != first_name:
             raise forms.ValidationError("該当するアカウントが見つかりません。")
     else:
         raise forms.ValidationError("該当するアカウントが見つかりません。")
예제 #23
0
 def form_valid(self, form):
     email = form.cleaned_data['email']
     # if the email address is unknown to us, direct them to the regular signup page
     # otherwise, send them through the forgot-password process to set a password
     form.users = filter_users_by_email(email)
     if len(form.users) < 1:
         self.request.session['signup_email_address'] = email
         return HttpResponseRedirect(reverse('account_signup'))
     elif not form.users[0].password:
         # this account needs to set a password
         form.save(self.request)
         return super(BadgeUserClaim, self).form_valid(form)
     else:
         return HttpResponseRedirect(reverse('account_login'))
예제 #24
0
파일: forms.py 프로젝트: sirex/savanoriai
def validate_profile_email(form, value):
    value = get_adapter().clean_email(value)
    if value and value != form.instance.user.email:
        users = filter_users_by_email(value)
        on_diff_account = [u for u in users if u.pk != form.instance.user.pk]
        if on_diff_account:
            raise forms.ValidationError(
                _("A user is already registered with this e-mail address."))
        email_address = EmailAddress.objects.add_email(form.request,
                                                       form.instance.user,
                                                       value,
                                                       confirm=True)
        if not email_address.verified:
            raise forms.ValidationError(
                _("Patikrinkite savo el. paštą ir patvirtinkite šį el. pašto adresą, tada galėsite jį naudoti."
                  ))
    return value
예제 #25
0
    def clean_email(self):
        value = self.cleaned_data["email"]
        value = get_adapter().clean_email(value)
        errors = {
            "this_account": _("This e-mail address is already associated"
                              " with this account."),
            "different_account": _("This e-mail address is already associated"
                                   " with another account."),
        }
        users = filter_users_by_email(value)
        on_this_account = [u for u in users if u.pk == self.user.pk]
        on_diff_account = [u for u in users if u.pk != self.user.pk]

        if on_this_account:
            raise forms.ValidationError(errors["this_account"])
        if on_diff_account and app_settings.UNIQUE_EMAIL:
            raise forms.ValidationError(errors["different_account"])
        return value
예제 #26
0
    def clean_email(self):
        value = self.cleaned_data["email"]
        value = get_adapter().clean_email(value)
        errors = {
            "this_account": _("This e-mail address is already associated"
                              " with this account."),
            "different_account": _("This e-mail address is already associated"
                                   " with another account."),
        }
        users = filter_users_by_email(value)
        on_this_account = [u for u in users if u.pk == self.user.pk]
        on_diff_account = [u for u in users if u.pk != self.user.pk]

        if on_this_account:
            raise forms.ValidationError(errors["this_account"])
        if on_diff_account and app_settings.UNIQUE_EMAIL:
            raise forms.ValidationError(errors["different_account"])
        return value
예제 #27
0
 def clean_email(self):
     """Don't reveal if the user exist"""
     email = self.cleaned_data.get('email')
     self.users = filter_users_by_email(email)
     return email