Ejemplo n.º 1
0
    def challenge(self, request, response, **kw):
        """
        Challenge the user for credentials
        """
        user_disabled = response.getHeader('user_disabled')
        if user_disabled:
            if 'plone.use_email_as_login' in self.portal_registry:
                email_login = self.portal_registry.get('plone.use_email_as_login', False)
            else:
                props = self.portal_properties.site_properties
                email_login = props.getProperty('use_email_as_login')

            if email_login:
                IStatusMessage(self.REQUEST).add(
                    _(u'Login failed. Both email address and password are case '
                      u'sensitive, check that caps lock is not enabled. If you '
                      u'have entered your password correctly, your account might '
                      u'be locked. You can reset your password, or contact an '
                      u'administrator to unlock it, using the Contact form.'),
                    type='error'
                )
            else:
                IStatusMessage(self.REQUEST).add(
                    _(u'Login failed. Both login name and password are case '
                      u'sensitive, check that caps lock is not enabled. If you '
                      u'have entered your password correctly, your account might '
                      u'be locked. You can reset your password, or contact an '
                      u'administrator to unlock it, using the Contact form.'),
                    type='error'
                )

            response.redirect('login_failed', lock=1)
            return 1
        return 0
Ejemplo n.º 2
0
def send_notification_email(user, days_to_expire,
                            email_view='notification_email'):
    """
    """

    language = api.portal.get_default_language()
    if user.getProperty('language'):
        language = user.getProperty('language')

    recipient = user.getProperty('email')

    email_template = getMultiAdapter(
        (api.portal.get(), TestRequest()), name=email_view
    )

    body = email_template(**{
        'username': safe_unicode(user.getProperty('fullname')),
        'days': days_to_expire,
        'language': language,
    })

    subject = translate(
        _('email_subject',
          default=u"${days} days left to password expiration",
          mapping={'days': days_to_expire},
          ),
        target_language=language
    )

    api.portal.send_email(recipient=recipient,
                          subject=subject,
                          body=body)
Ejemplo n.º 3
0
def send_notification_email(user,
                            days_to_expire,
                            email_view='notification_email'):
    """
    """

    language = api.portal.get_default_language()
    if user.getProperty('language'):
        language = user.getProperty('language')

    recipient = user.getProperty('email')
    portal = api.portal.get()

    email_template = getMultiAdapter((portal, portal.REQUEST), name=email_view)

    body = email_template(
        **{
            'username': user.getUserId(),
            'fullname': safe_unicode(user.getProperty('fullname')),
            'days': days_to_expire,
            'language': language,
        })

    subject = translate(_(
        'email_subject',
        default=u"${days} days left to password expiration",
        mapping={'days': days_to_expire},
    ),
                        target_language=language)

    api.portal.send_email(recipient=recipient, subject=subject, body=body)
Ejemplo n.º 4
0
def send_notification_email(user,
                            days_to_expire,
                            email_view="notification_email"):
    """
    """

    language = api.portal.get_default_language()
    if user.getProperty("language"):
        language = user.getProperty("language")

    recipient = user.getProperty("email")
    portal = api.portal.get()

    email_template = getMultiAdapter((portal, portal.REQUEST), name=email_view)

    body = email_template(
        **{
            "username": user.getUserId(),
            "fullname": safe_unicode(user.getProperty("fullname")),
            "days": days_to_expire,
            "language": language,
        })

    subject = translate(
        _(
            "email_subject",
            default=u"${days} days left to password expiration",
            mapping={"days": days_to_expire},
        ),
        target_language=language,
    )

    api.portal.send_email(recipient=recipient, subject=subject, body=body)
Ejemplo n.º 5
0
class IEnhancedUserDataSchema(IUserDataSchema):
    """ Use all the fields from the default user data schema, and add
    extra field for the date of password set.
    """
    password_date = schema.Date(
        title=_(u'label_password_date', default=u'Password date'),
        description=_(u'help_password_date',
                      default=u'The date of setting the password'),
        required=False,
    )

    last_notification_date = schema.Date(
        title=_(u'label_last_notification_date',
                default=u'Last notification date'),
        description=_(u'help_last_notification_date',
                      default=(u'The date of performing the ' +
                               u'last notification fot the user')),
        required=False,
    )
Ejemplo n.º 6
0
    def handleLogin(self, action):
        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return
        membership_tool = getToolByName(self.context, "portal_membership")
        status_msg = IStatusMessage(self.request)
        if membership_tool.isAnonymousUser():
            self.request.response.expireCookie("__ac", path="/")
            if self.use_email_as_login():
                status_msg.addStatusMessage(
                    _(u"Login failed. Both email address and password are "
                      u"case sensitive, check that caps lock is not "
                      u"enabled. If you have entered your password "
                      u"correctly, your account might be locked. You can "
                      u"reset your password, or contact an administrator "
                      u"to unlock it, using the Contact form."),
                    type="error",
                )
            else:
                status_msg.addStatusMessage(
                    _(u"Login failed. Both login name and password are "
                      u"case sensitive, check that caps lock is not "
                      u"enabled. If you have entered your password "
                      u"correctly, your account might be locked. You can "
                      u"reset your password, or contact an administrator "
                      u"to unlock it, using the Contact form."),
                    type="error",
                )
            return

        is_initial_login = self._post_login()
        status_msg.addStatusMessage(
            PMF_(
                u"you_are_now_logged_in",
                default=u"Welcome! You are now logged in.",
            ),
            "info",
        )

        came_from = data.get("came_from", None)
        self.redirect_after_login(came_from, is_initial_login)
Ejemplo n.º 7
0
    def challenge(self, request, response, **kw):
        """
        Challenge the user for credentials
        """
        user_disabled = response.getHeader("user_disabled")
        if user_disabled:
            if "plone.use_email_as_login" in self.portal_registry:
                email_login = self.portal_registry.get(
                    "plone.use_email_as_login", False
                )
            else:
                props = self.portal_properties.site_properties
                email_login = props.getProperty("use_email_as_login")

            if email_login:
                IStatusMessage(self.REQUEST).add(
                    _(
                        u"Login failed. Both email address and password are "
                        u"case sensitive, check that caps lock is not "
                        u"enabled. If you have entered your password "
                        u"correctly, your account might be locked. You can "
                        u"reset your password, or contact an administrator "
                        u"to unlock it, using the Contact form."
                    ),
                    type="error",
                )
            else:
                IStatusMessage(self.REQUEST).add(
                    _(
                        u"Login failed. Both login name and password are "
                        u"case sensitive, check that caps lock is not "
                        u"enabled. If you have entered your password "
                        u"correctly, your account might be locked. You can "
                        u"reset your password, or contact an administrator "
                        u"to unlock it, using the Contact form."
                    ),
                    type="error",
                )

            response.redirect("login_failed", lock=1)
            return 1
        return 0
Ejemplo n.º 8
0
def send_notification_email(user, days_to_expire, email_view='notification_email'):
    """
    """
    request = TestRequest()
    recipient = user.getProperty('email')
    subject = _('${days} days left to password expiration',
                mapping={ u"days" : days_to_expire})
    subject = translate(subject)
    email_template = getMultiAdapter((api.portal.get(), request), name=email_view)
    body = email_template(**{'username' : user.getProperty('fullname'),
                             'days' : days_to_expire})
    api.portal.send_email(recipient=recipient,
                          subject=subject,
                          body=MIMEText(body, 'html'))
 def challenge(self, request, response, **kw):
     """
     Challenge the user for credentials
     """
     user_expired = response.getHeader('user_expired')
     if user_expired:
         portal_url = api.portal.get_tool(name='portal_url')()
         IStatusMessage(request).add(_(u'Your password has expired.'),
                                     type='error')
         response.redirect('%s/mail_password_form?userid=%s' %
                           (portal_url, user_expired),
                           lock=1)
         return 1
     return 0
Ejemplo n.º 10
0
 def challenge(self, request, response, **kw):
     """
     Challenge the user for credentials
     """
     user_expired = response.getHeader('user_expired')
     if user_expired:
         portal = api.portal.get()
         IStatusMessage(request).add(_(u'Your password has expired.'),
                                     type='warning')
         response.redirect(portal.absolute_url() +
                           '/mail_password_form?userid=%s' % user_expired,
                           lock=1)
         return 1
     return 0
Ejemplo n.º 11
0
 def challenge(self, request, response, **kw):
     """
     Challenge the user for credentials
     """
     user_expired = response.getHeader("user_expired")
     if user_expired:
         portal_url = api.portal.get_tool(name="portal_url")()
         IStatusMessage(request).add(
             _(u"Your password has expired."), type="error"
         )
         response.redirect(
             "%s/mail_password_form?userid=%s" % (portal_url, user_expired),
             lock=1,
         )
         return 1
     return 0
 def challenge(self, request, response, **kw):
     """
     Challenge the user for credentials
     """
     user_expired = response.getHeader('user_expired')
     if user_expired:
         portal_url = api.portal.get_tool(name='portal_url')()
         IStatusMessage(request).add(
             _(u'Your password has expired.'), type='warning'
         )
         response.redirect(
             '%s/mail_password_form?userid=%s' % (portal_url, user_expired),
             lock=1
         )
         return 1
     return 0
 def challenge(self, request, response, **kw):
     """
     Challenge the user for credentials
     """
     user_disabled = response.getHeader('user_disabled')
     if user_disabled:
         user_disabled_time = response.getHeader('user_disabled_time')
         IStatusMessage(self.REQUEST).add(
             _(u'Your account has been locked due to too many invalid '
                'attempts to login with a wrong password. Your account will '
                'remain blocked for the next %s hours. You can reset your '
                'password, or contact an administrator to unlock it.' %
                user_disabled_time), type='error'
         )
         response.redirect('login_form', lock=1)
         return 1
     return 0
Ejemplo n.º 14
0
def send_notification_email(user,
                            days_to_expire,
                            email_view='notification_email'):
    """
    """
    request = TestRequest()
    recipient = user.getProperty('email')
    subject = _('${days} days left to password expiration',
                mapping={u"days": days_to_expire})
    subject = translate(subject)
    email_template = getMultiAdapter((api.portal.get(), request),
                                     name=email_view)
    body = email_template(**{
        'username': user.getProperty('fullname'),
        'days': days_to_expire
    })
    api.portal.send_email(recipient=recipient,
                          subject=subject,
                          body=MIMEText(body, 'html'))
Ejemplo n.º 15
0
    def __call__(self, **kwargs):
        """ A E-Mail Template,
        call this like this:

        email_template = getMultiAdapter(
            (api.portal.get(), request), name=notification_email
        )

        body = email_template(**{
            'username': user.getUserId(),
            'fullname': safe_unicode(user.getProperty('fullname')),
            'days': days_to_expire,
            'language': language_code,
        })
        """
        language = kwargs["language"]

        msg_mapping = {
            "username": kwargs["username"],
            "fullname": kwargs["fullname"],
            "days": kwargs["days"],
        }

        if self.request.get("SERVER_URL", "http://foo") == "http://foo":
            server_url = ""
        else:
            server_url = self.request.get("SERVER_URL")

        if server_url.endswith("/"):
            server_url = server_url[:-1]

        msg_mapping["server_url"] = server_url

        if self.request.get("SERVER_NAME", "foo") == "foo":
            server_name = ""
        else:
            server_name = self.request.get("SERVER_NAME")

        msg_mapping["server_name"] = server_name

        if kwargs["days"] > 0:
            msg = translate(
                _(
                    "email_text",
                    default=u"""Hello ${fullname},

There are ${days} days left before your password expires!

Please ensure to reset your password before it's expired.""",
                    mapping=msg_mapping,
                ),
                target_language=language,
            )

            msg += translate(
                _(
                    "change_password_email_text",
                    default=(
                        u"""\n\nIn order to change your password, please """
                        u"""visit ${server_url}/@@change-password"""
                    ),
                    mapping=msg_mapping,
                ),
                target_language=language,
            )
        else:
            msg = translate(
                _(
                    "email_text_expired",
                    default=u"""Hello ${fullname},

Your password has expired.

Please ensure to reset your password before it's expired.""",
                    mapping=msg_mapping,
                ),
                target_language=language,
            )

            msg += translate(
                _(
                    "reset_password_email_text",
                    default=(
                        u"""\n\nIn order to reset your password, please """
                        u"""visit ${server_url}/mail_password_form?"""
                        u"""userid=${username}"""
                    ),
                    mapping=msg_mapping,
                ),
                target_language=language,
            )

        if msg_mapping["server_name"] != "":
            msg += translate(
                _(
                    "server_name_email_text",
                    default=u"""\n\nThis email was sent from ${server_name}""",
                    mapping=msg_mapping,
                ),
                target_language=language,
            )

        return msg
Ejemplo n.º 16
0
    def __call__(self, **kwargs):
        """ A E-Mail Template,
        call this like this:

        email_template = getMultiAdapter(
            (api.portal.get(), request), name=notification_email
        )

        body = email_template(**{
            'username': user.getUserId(),
            'fullname': safe_unicode(user.getProperty('fullname')),
            'days': days_to_expire,
            'language': language_code,
        })
        """
        language = kwargs['language']

        msg_mapping = {
            'username': kwargs['username'],
            'fullname': kwargs['fullname'],
            'days': kwargs['days'],
        }

        if self.request.get('SERVER_URL', 'http://foo') == 'http://foo':
            server_url = ""
        else:
            server_url = self.request.get('SERVER_URL')

        if server_url.endswith('/'):
            server_url = server_url[:-1]

        msg_mapping['server_url'] = server_url

        if self.request.get('SERVER_NAME', 'foo') == 'foo':
            server_name = ""
        else:
            server_name = self.request.get('SERVER_NAME')

        msg_mapping['server_name'] = server_name

        if kwargs['days'] > 0:
            msg = translate(
                _('email_text',
                  default=u"""Hello ${fullname},

There are ${days} days left before your password expires!

Please ensure to reset your password before it's expired.""",
                  mapping=msg_mapping,
                  ),
                target_language=language
            )

            msg += translate(
                _('change_password_email_text',
                  default=u"""\n\nIn order to change your password, please visit ${server_url}/@@change-password""",
                  mapping=msg_mapping,
                  ),
                target_language=language
            )
        else:
            msg = translate(
                _('email_text_expired',
                  default=u"""Hello ${fullname},

Your password has expired.

Please ensure to reset your password before it's expired.""",
                  mapping=msg_mapping,
                  ),
                target_language=language
            )

            msg += translate(
                _('reset_password_email_text',
                  default=u"""\n\nIn order to reset your password, please visit ${server_url}/mail_password_form?userid=${username}""",
                  mapping=msg_mapping,
                  ),
                target_language=language
            )

        if msg_mapping['server_name'] != "":
            msg += translate(
                _('server_name_email_text',
                  default=u"""\n\nThis email was sent from ${server_name}""",
                  mapping=msg_mapping,
                  ),
                target_language=language
            )

        return msg