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('/')
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', '/')
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', '/')
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('/')
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)
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)
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'))
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'))
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', '/')
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)
def index(self): return plug_redirect('calendarevents', '/calendar/list')