Exemplo n.º 1
0
    def save_password(self, **kw):
        secret = tg.config.get('session.secret',
                               tg.config.get('beaker.session.secret'))
        serializer = URLSafeSerializer(secret)
        deserialized_data = serializer.loads(kw['data'])
        request_date = datetime.strptime(deserialized_data['request_date'],
                                         '%m/%d/%Y %H:%M')
        user = model.provider.query(
            app_model.User,
            filters=dict(
                email_address=deserialized_data['email_address']))[1][0]
        password_frag = user.password[0:4]
        if abs((datetime.now() - request_date).days) > 1:
            flash(_('Password reset request timed out'), 'error')
            return plug_redirect('resetpassword', '/')

        if password_frag != deserialized_data['password_frag']:
            flash(_('Invalid password reset request'), 'error')
            return plug_redirect('resetpassword', '/')

        user.password = kw['password']
        flash(_('Password changed successfully'))
        if 'redirect_to' in deserialized_data:
            redirect(deserialized_data['redirect_to'])
        else:
            return redirect('/')
Exemplo n.º 2
0
    def reset_request(self, **kw):
        user = model.provider.query(app_model.User, filters=dict(email_address=kw['email_address']))[1][0]
        password_frag = user.password[0:4]
        serializer = URLSafeSerializer(tg.config['beaker.session.secret'])
        serialized_data = serializer.dumps(dict(request_date=datetime.utcnow().strftime('%m/%d/%Y %H:%M'),
                                                email_address=kw['email_address'], password_frag=password_frag))

        password_reset_link = tg.url(self.mount_point + "/change_password/", params=dict(data=serialized_data),
                                     qualified=True)
        reset_password_config = tg.config.get('_pluggable_resetpassword_config')
        mail_body = reset_password_config.get('mail_body', _('''
We've received a request to reset the password for this account. 
Please click this link to reset your password:

%(password_reset_link)s

If you no longer wish to make the above change, or if you did not initiate this request, please disregard and/or delete this e-mail.
'''))

        email_data = {'sender': tg.config['resetpassword.email_sender'],
                      'subject': reset_password_config.get('mail_subject', _('Password reset request')),
                      'body': mail_body,
                      'rich': reset_password_config.get('mail_rich', '')}

        tg.hooks.notify('resetpassword.on_request', args=(user, email_data, password_reset_link))

        email_data['body'] = email_data['body'] % dict(password_reset_link=password_reset_link)
        email_data['rich'] = email_data['rich'] % dict(password_reset_link=password_reset_link)
        send_email(user.email_address, **email_data)
        flash(_('Password reset request sent'))
        return plug_redirect('resetpassword', '/')
Exemplo n.º 3
0
    def reset_request(self, **kw):
        user = model.provider.query(
            app_model.User,
            filters=dict(email_address=kw['email_address']))[1][0]
        password_frag = user.password[0:4]
        secret = tg.config.get('session.secret',
                               tg.config.get('beaker.session.secret'))
        serializer = URLSafeSerializer(secret)
        serialized_data = serializer.dumps(
            dict(request_date=datetime.utcnow().strftime('%m/%d/%Y %H:%M'),
                 email_address=kw['email_address'],
                 password_frag=password_frag))

        password_reset_link = tg.url(self.mount_point + "/change_password/",
                                     params=dict(data=serialized_data),
                                     qualified=True)
        reset_password_config = tg.config.get(
            '_pluggable_resetpassword_config')
        mail_body = reset_password_config.get(
            'mail_body',
            _('''
We've received a request to reset the password for this account. 
Please click this link to reset your password:

%(password_reset_link)s

If you no longer wish to make the above change, or if you did not initiate this request, please disregard and/or delete this e-mail.
'''))
        email_data = {
            'sender':
            tg.config['resetpassword.email_sender'],
            'subject':
            reset_password_config.get('mail_subject',
                                      _('Password reset request')),
            'body':
            mail_body,
            'rich':
            reset_password_config.get('mail_rich', '')
        }

        tg.hooks.notify('resetpassword.on_request',
                        args=(user, email_data, password_reset_link))

        email_data['body'] = email_data['body'] % dict(
            password_reset_link=password_reset_link)
        email_data['rich'] = email_data['rich'] % dict(
            password_reset_link=password_reset_link)

        send_email(user.email_address, **email_data)
        flash(_('Password reset request sent'))

        redirect_url = None
        redirect_url = tg.hooks.notify_with_value(
            'resetpassword.before_redirect', redirect_url)
        if redirect_url:
            return redirect(redirect_url)

        return plug_redirect('resetpassword', '/')
Exemplo n.º 4
0
    def save_password(self, **kw):
        serializer = URLSafeSerializer(tg.config['beaker.session.secret'])
        deserialized_data = serializer.loads(kw['data'])
        request_date = datetime.strptime(deserialized_data['request_date'], '%m/%d/%Y %H:%M')
        user = model.provider.query(app_model.User,
                                    filters=dict(email_address=deserialized_data['email_address']))[1][0]
        password_frag = user.password[0:4]
        if abs((datetime.now() - request_date).days) > 1:
            flash(_('Password reset request timed out'), 'error')
            return plug_redirect('resetpassword', '/')

        if password_frag != deserialized_data['password_frag']:
            flash(_('Invalid password reset request'), 'error')
            return plug_redirect('resetpassword', '/')

        user.password = kw['password']
        flash(_('Password changed successfully'))
        return redirect('/')
Exemplo n.º 5
0
    def create(self, cal, **kw):
        new_event = utils.create_event(
            cal,
            name=kw['name'],
            summary=kw['summary'],
            datetime=kw['datetime'],
            location=kw['location'],
            linked_entity_type=cal.events_type,
            linked_entity_id=kw.get('linked_entity'))

        flash(_('Event successfully added'))
        return plug_redirect('calendarevents', '/calendar/%d' % cal.uid)
Exemplo n.º 6
0
    def save(self, event, **kw):
        event = utils.get_event(event)
        if not event:
            abort(404)

        event.name = kw['name']
        event.summary = kw['summary']
        event.datetime = kw['datetime']
        event.location = kw['location']
        event.linked_entity_id = kw.get('linked_entity')

        flash(_('Event successfully modified'))
        return plug_redirect('calendarevents', '/event/%s' % event.uid)
Exemplo n.º 7
0
    def change_password(self, **kw):
        if kw.get('data') is None:
            flash(_('Invalid password reset request'), 'error')
            return plug_redirect('resetpassword', '/')

        serializer = URLSafeSerializer(tg.config['beaker.session.secret'])
        deserialized_data = serializer.loads(kw['data'])
        user = model.provider.query(app_model.User,
                                    filters=dict(email_address=deserialized_data['email_address']))[1][0]

        tg.hooks.notify('resetpassword.before_render_change_password_template', args=(user, deserialized_data))

        return dict(new_password_form=get_new_password_form(),
                    form_data=dict(data=kw['data']),
                    action=plug_url('resetpassword', '/save_password'))
Exemplo n.º 8
0
    def change_password(self, **kw):
        if kw.get('data') is None:
            flash(_('Invalid password reset request'), 'error')
            return plug_redirect('resetpassword', '/')

        secret = tg.config.get('session.secret', tg.config.get('beaker.session.secret'))
        serializer = URLSafeSerializer(secret)
        deserialized_data = serializer.loads(kw['data'])
        user = model.provider.query(app_model.User,
                                    filters=dict(email_address=deserialized_data['email_address']))[1][0]

        tg.hooks.notify('resetpassword.before_render_change_password_template', args=(user, deserialized_data))

        return dict(new_password_form=get_new_password_form(),
                    form_data=dict(data=kw['data']),
                    action=plug_url('resetpassword', '/save_password'))
Exemplo n.º 9
0
    def reset_request(self, **kw):
        user = model.provider.query(app_model.User, filters=dict(email_address=kw['email_address']))[1][0]

        on_begin_reset_request_args = {'user': user, 'redirect_to': None}
        on_begin_reset_request = tg.hooks.notify_with_value('resetpassword.on_begin_reset_request', on_begin_reset_request_args)
        
        password_reset_link = tg.url(self.mount_point + "/change_password/", params=dict(data=generate_token(user, on_begin_reset_request['redirect_to'])),
                                     qualified=True)
        reset_password_config = tg.config.get('_pluggable_resetpassword_config')
        mail_body = reset_password_config.get('mail_body', _('''
We've received a request to reset the password for this account. 
Please click this link to reset your password:

%(password_reset_link)s

If you no longer wish to make the above change, or if you did not initiate this request, please disregard and/or delete this e-mail.
'''))
        email_data = {'sender': tg.config['resetpassword.email_sender'],
                      'subject': reset_password_config.get('mail_subject', _('Password reset request')),
                      'body': mail_body,
                      'rich': reset_password_config.get('mail_rich', '')}

        tg.hooks.notify('resetpassword.on_request', args=(user, email_data, password_reset_link))

        email_data['body'] = email_data['body'] % dict(password_reset_link=password_reset_link)
        email_data['rich'] = email_data['rich'] % dict(password_reset_link=password_reset_link)

        send_email(user.email_address, **email_data)
        flash(_('Password reset request sent'))

        redirect_url = None
        redirect_url = tg.hooks.notify_with_value('resetpassword.before_redirect', redirect_url)
        if redirect_url:
            return redirect(redirect_url)

        return plug_redirect('resetpassword', '/')
Exemplo n.º 10
0
 def save(self, name, events_type):
     new_calendar = create_calendar(name=name, events_type=events_type)
     model.DBSession.flush()
     flash(_('Calendar successfully added'))
     return plug_redirect('calendarevents',
                          '/calendar/%d' % new_calendar.uid)
Exemplo n.º 11
0
 def index(self):
     return plug_redirect('calendarevents', '/calendar/list')