Ejemplo n.º 1
0
 def __init__(self, request):
     self.request = request
     cp = ControlPanel(request)
     self.token_duration = cp.get_value(authentication_schema.name,
                                        'token_duration')
     self.login_view = LoginView(request)
     self.frm = make_password_reset_form(self.request)
Ejemplo n.º 2
0
def notify_account_created(event):
    """Notify site admins when an account is created.
    """
    logger = getLogger('speak_friend.user_activity')
    path = 'speak_friend:templates/email/account_creation_notification.pt'
    settings = event.request.registry.settings
    subject = '%s: New user created' % settings['site_name']
    mailer = get_mailer(event.request)
    headers = {'Reply-To': event.user.full_email}
    response = render_to_response(path,
                                  {'profile': event.user},
                                  event.request)
    # Obtain list of emails to notify from the control panel
    cp = ControlPanel(event.request)
    recipients = cp.get_value(email_notification_schema.name,
                              'user_creation', [])
    if not recipients:
        logger.info('No one to notify of account creation: %s.',
                    event.user)
        return

    message = Message(subject=subject,
                      sender=settings['site_from'],
                      recipients=recipients,
                      extra_headers=headers,
                      html=response.unicode_body)
    mailer.send(message)
Ejemplo n.º 3
0
 def __init__(self, request):
     self.request = request
     self.frm = make_contact_us_form(self.request)
     settings = request.registry.settings
     self.subject = "Contact Us Form Submission: %s" % settings['site_name']
     self.sender = settings['site_from']
     cp = ControlPanel(request)
     self.recipients = cp.get_value(email_notification_schema.name,
                                    'contact_us', [])
Ejemplo n.º 4
0
def token_expired(request):
    cp = ControlPanel(request)
    token_duration = cp.get_value(authentication_schema.name, 'token_duration')
    request.response.status = "400 Bad Request"
    url = request.route_url('request_password')
    return {
        'token_duration': token_duration,
        'request_reset_url': url,
    }
Ejemplo n.º 5
0
 def __init__(self, request):
     self.request = request
     self.frm = make_contact_us_form(self.request)
     settings = request.registry.settings
     self.subject = "Contact Us Form Submission: %s" % settings['site_name']
     self.sender = settings['site_from']
     cp = ControlPanel(request)
     self.recipients = cp.get_value(email_notification_schema.name,
                                    'contact_us', [])
Ejemplo n.º 6
0
 def test_get_value(self):
     # Make sure the default value bubbles up correctly
     request = testing.DummyRequest()
     request.user = None
     request.db_session = MockSession()
     cp = ControlPanel(request)
     authentication_schema
     token_duration = cp.get_value(authentication_schema.name,
                                   'token_duration')
     self.assertTrue(token_duration == TOKEN_DURATION)
Ejemplo n.º 7
0
 def test_get_value(self):
     # Make sure the default value bubbles up correctly
     request = testing.DummyRequest()
     request.user = None
     request.db_session = MockSession()
     cp = ControlPanel(request)
     authentication_schema
     token_duration = cp.get_value(authentication_schema.name,
                                   'token_duration')
     self.assertTrue(token_duration == TOKEN_DURATION)
Ejemplo n.º 8
0
 def __init__(self, request, max_attempts=None):
     self.request = request
     self.pass_ctx = request.registry.password_context
     contact_url = request.route_url('contact_us')
     contact_link = '<a href="%s">contact us</a>' % contact_url
     self.disabled_error = "Your account has been disabled. Please %s if you'd like us to reactivate your account." % contact_link
     self.invalid_error = 'Username or password is invalid.'
     self.locked_error = 'Your account has been disabled. ' \
                         'Check your email for instructions to reset your password.'
     query = self.request.GET.items()
     action = request.route_url('login', _query=query)
     self.frm = make_login_form(request, action)
     if max_attempts is None:
         cp = ControlPanel(request)
         self.max_attempts = cp.get_value(authentication_schema.name,
                                          'max_attempts',
                                          MAX_DOMAIN_ATTEMPTS)
Ejemplo n.º 9
0
    def password_timeout_tween(request):
        """Verify the last login timestamp is still valid.
        """
        logger = logging.getLogger('speakfriend.password_timeout_tween')
        response = handler(request)

        if not request.user:
            return response

        cp = ControlPanel(request)
        domain_name = get_domain(request)
        domain = DomainProfile.apply_wildcard(request.db_session,
                                              domain_name)
        if domain:
            pw_valid = timedelta(minutes=domain.get_password_valid(cp))
        else:
            pw_valid = timedelta(minutes=MAX_PASSWORD_VALID)

        now = datetime.utcnow()
        utc_now = now.replace(tzinfo=FixedOffsetTimezone(offset=0))
        try:
            last_login = request.user.last_login(request.db_session)
        except DetachedInstanceError:
            request.db_session.add(request.user)
            last_login = request.user.last_login(request.db_session)
        if last_login and last_login.activity_ts + pw_valid < utc_now:
            msg = 'You must log in again to be returned to: %s' % domain_name
            request.session.flash(msg, queue='error')
            logger.info('Password validity time out: %r, %r, %s',
                        request.user, last_login, pw_valid)
            response = logout(request, request.route_url('home'))
            if 'openid.mode' in request.params:
                rp_dict = dict(request.params.items())
                request.session['openid_request'] = rp_dict
                request.session.save()

        return response
Ejemplo n.º 10
0
 def __init__(self, request):
     self.request = request
     self.cp = ControlPanel(request)