def after_create_object(self, user, data, view_kwargs): """ method to send- email notification mail link for register verification add image urls :param user: :param data: :param view_kwargs: :return: """ s = get_serializer() hash = str(base64.b64encode(str(s.dumps([user.email, str_generator()])).encode()), 'utf-8') link = make_frontend_url('/verify'.format(id=user.id), {'token': hash}) send_email_with_action(user, USER_REGISTER_WITH_PASSWORD, app_name=get_settings()['app_name'], email=user.email) send_email_confirmation(user.email, link) if data.get('original_image_url'): try: uploaded_images = create_save_image_sizes(data['original_image_url'], 'speaker-image', user.id) except (urllib.error.HTTPError, urllib.error.URLError): raise UnprocessableEntity( {'source': 'attributes/original-image-url'}, 'Invalid Image URL' ) uploaded_images['small_image_url'] = uploaded_images['thumbnail_image_url'] del uploaded_images['large_image_url'] self.session.query(User).filter_by(id=user.id).update(uploaded_images)
def change_password(): old_password = request.json['data']['old-password'] new_password = request.json['data']['new-password'] try: user = User.query.filter_by(id=current_user.id).one() except NoResultFound: return NotFoundError({'source': ''}, 'User Not Found').respond() else: if user.is_correct_password(old_password): if user.is_correct_password(new_password): return BadRequestError({'source': ''}, 'Old and New passwords must be different').respond() if len(new_password) < 8: return BadRequestError({'source': ''}, 'Password should have minimum 8 characters').respond() user.password = new_password save_to_db(user) send_email_with_action(user, PASSWORD_CHANGE, app_name=get_settings()['app_name']) send_notification_with_action(user, PASSWORD_CHANGE_NOTIF, app_name=get_settings()['app_name']) else: return BadRequestError({'source': ''}, 'Wrong Password. Please enter correct current password.').respond() return jsonify({ "id": user.id, "email": user.email, "name": user.fullname if user.fullname else None, "password-changed": True })
def change_password(): old_password = request.json['data']['old-password'] new_password = request.json['data']['new-password'] try: user = User.query.filter_by(id=current_user.id).one() except NoResultFound: return abort( make_response(jsonify(error="User not found"), 404) ) else: if user.is_correct_password(old_password): user.password = new_password save_to_db(user) send_email_with_action(user, PASSWORD_CHANGE, app_name=get_settings()['app_name']) send_notification_with_action(user, PASSWORD_CHANGE_NOTIF, app_name=get_settings()['app_name']) else: return abort( make_response(jsonify(error="Wrong Password"), 400) ) return jsonify({ "id": user.id, "email": user.email, "name": user.fullname if user.fullname else None, "password-changed": True })
def reset_password_post(): try: email = request.json['data']['email'] except TypeError: return BadRequestError({'source': ''}, 'Bad Request Error').respond() try: user = User.query.filter_by(email=email).one() except NoResultFound: logger.info('Tried to reset password not existing email %s', email) else: link = make_frontend_url('/reset-password', {'token': user.reset_password}) if user.was_registered_with_order: send_email_with_action(user, PASSWORD_RESET_AND_VERIFY, app_name=get_settings()['app_name'], link=link) else: send_email_with_action(user, PASSWORD_RESET, app_name=get_settings()['app_name'], link=link, token=user.reset_password) return make_response( jsonify(message="If your email was registered with us, you'll get an \ email with reset link shortly", email=email), 200)
def change_password(): old_password = request.json['data']['old-password'] new_password = request.json['data']['new-password'] try: user = User.query.filter_by(id=current_user.id).one() except NoResultFound: return abort(make_response(jsonify(error="User not found"), 404)) else: if user.is_correct_password(old_password): user.password = new_password save_to_db(user) send_email_with_action(user, PASSWORD_CHANGE, app_name=get_settings()['app_name']) send_notification_with_action(user, PASSWORD_CHANGE_NOTIF, app_name=get_settings()['app_name']) else: return abort(make_response(jsonify(error="Wrong Password"), 400)) return jsonify({ "id": user.id, "email": user.email, "name": user.fullname if user.fullname else None, "password-changed": True })
def after_create_object(self, user, data, view_kwargs): """ method to send- email notification mail link for register verification add image urls :param user: :param data: :param view_kwargs: :return: """ s = get_serializer() hash = str( base64.b64encode( str(s.dumps([user.email, str_generator()])).encode()), 'utf-8') link = make_frontend_url('/verify'.format(id=user.id), {'token': hash}) send_email_with_action(user, USER_REGISTER_WITH_PASSWORD, app_name=get_settings()['app_name'], email=user.email) send_email_confirmation(user.email, link) if data.get('original_image_url'): try: uploaded_images = create_save_image_sizes( data['original_image_url'], 'speaker-image', user.id) except (urllib.error.HTTPError, urllib.error.URLError): raise UnprocessableEntity( {'source': 'attributes/original-image-url'}, 'Invalid Image URL') uploaded_images['small_image_url'] = uploaded_images[ 'thumbnail_image_url'] del uploaded_images['large_image_url'] self.session.query(User).filter_by( id=user.id).update(uploaded_images)
def after_create_object(self, user, data, view_kwargs): """ method to send- email notification mail link for register verification add image urls :param user: :param data: :param view_kwargs: :return: """ if user.was_registered_with_order: link = make_frontend_url('/reset-password', {'token': user.reset_password}) send_email_with_action( user, PASSWORD_RESET_AND_VERIFY, app_name=get_settings()['app_name'], email=user.email, link=link, ) else: s = get_serializer() hash = str( base64.b64encode( str(s.dumps([user.email, str_generator()])).encode()), 'utf-8', ) link = make_frontend_url('/verify'.format(id=user.id), {'token': hash}) send_email_with_action( user, USER_REGISTER_WITH_PASSWORD, app_name=get_settings()['app_name'], email=user.email, ) send_email_confirmation(user.email, link) # TODO Handle in a celery task # if data.get('original_image_url'): # try: # uploaded_images = create_save_image_sizes(data['original_image_url'], 'speaker-image', user.id) # except (urllib.error.HTTPError, urllib.error.URLError): # raise UnprocessableEntityError( # {'source': 'attributes/original-image-url'}, 'Invalid Image URL' # ) # uploaded_images['small_image_url'] = uploaded_images['thumbnail_image_url'] # del uploaded_images['large_image_url'] # self.session.query(User).filter_by(id=user.id).update(uploaded_images) if data.get('avatar_url'): start_image_resizing_tasks(user, data['avatar_url'])
def reset_password_post(): email = request.json['data']['email'] try: user = User.query.filter_by(email=email).one() except NoResultFound: return abort( make_response(jsonify(error="User not found"), 404) ) else: link = make_frontend_url('/reset-password', {'token': user.reset_password}) send_email_with_action(user, PASSWORD_RESET, app_name=get_settings()['app_name'], link=link) return make_response(jsonify(message="Email Sent"), 200)
def reset_password_post(): try: email = request.json['data']['email'] except TypeError: return make_response(jsonify(error="Bad Request Error"), 400) try: user = User.query.filter_by(email=email).one() except NoResultFound: return abort( make_response(jsonify(error="User not found"), 404) ) else: link = make_frontend_url('/reset-password', {'token': user.reset_password}) send_email_with_action(user, PASSWORD_RESET, app_name=get_settings()['app_name'], link=link) return make_response(jsonify(message="Email Sent"), 200)
def reset_password_post(): try: email = request.json['data']['email'] except TypeError: return BadRequestError({'source': ''}, 'Bad Request Error').respond() try: user = User.query.filter_by(email=email).one() except NoResultFound: return NotFoundError({'source': ''}, 'User not found').respond() else: link = make_frontend_url('/reset-password', {'token': user.reset_password}) if user.was_registered_with_order: send_email_with_action(user, PASSWORD_RESET_AND_VERIFY, app_name=get_settings()['app_name'], link=link) else: send_email_with_action(user, PASSWORD_RESET, app_name=get_settings()['app_name'], link=link) return make_response(jsonify(message="Email Sent"), 200)
def after_create_object(self, user, data, view_kwargs): """ method to send- email notification mail link for register verification add image urls :param user: :param data: :param view_kwargs: :return: """ s = get_serializer() hash = base64.b64encode(s.dumps([user.email, str_generator()])) link = make_frontend_url('/email/verify'.format(id=user.id), {'token': hash}) send_email_with_action(user, USER_REGISTER_WITH_PASSWORD, app_name=get_settings()['app_name'], email=user.email) send_email_confirmation(user.email, link) if data.get('original_image_url'): uploaded_images = create_save_image_sizes(data['original_image_url'], 'user', user.id) uploaded_images['small_image_url'] = uploaded_images['thumbnail_image_url'] del uploaded_images['large_image_url'] self.session.query(User).filter_by(id=user.id).update(uploaded_images)