def send_user_reset_password(): email, errors = email_data_request_schema.load(request.get_json()) user_to_send_to = get_user_by_email(email['email']) if user_to_send_to.blocked: return jsonify({'message': 'cannot reset password: user blocked'}), 400 template = dao_get_template_by_id(current_app.config['PASSWORD_RESET_TEMPLATE_ID']) service = Service.query.get(current_app.config['NOTIFY_SERVICE_ID']) saved_notification = persist_notification( template_id=template.id, template_version=template.version, recipient=email['email'], service=service, personalisation={ 'user_name': user_to_send_to.name, 'url': _create_reset_password_url(user_to_send_to.email_address) }, notification_type=template.template_type, api_key_id=None, key_type=KEY_TYPE_NORMAL, reply_to_text=service.get_default_reply_to_email_address() ) send_notification_to_queue(saved_notification, False, queue=QueueNames.NOTIFY) return jsonify({}), 204
def populate_go_live(file_name): # 0 - count, 1- Link, 2- Service ID, 3- DEPT, 4- Service Name, 5- Main contact, # 6- Contact detail, 7-MOU, 8- LIVE date, 9- SMS, 10 - Email, 11 - Letters, 12 -CRM, 13 - Blue badge import csv print("Populate go live user and date") with open(file_name, 'r') as f: rows = csv.reader( f, quoting=csv.QUOTE_MINIMAL, skipinitialspace=True, ) print(next(rows)) # ignore header row for index, row in enumerate(rows): print(index, row) service_id = row[2] go_live_email = row[6] go_live_date = datetime.strptime(row[8], '%d/%m/%Y') + timedelta(hours=12) print(service_id, go_live_email, go_live_date) try: if go_live_email: go_live_user = get_user_by_email(go_live_email) else: go_live_user = None except NoResultFound: print("No user found for email address: ", go_live_email) continue try: service = dao_fetch_service_by_id(service_id) except NoResultFound: print("No service found for: ", service_id) continue service.go_live_user = go_live_user service.go_live_at = go_live_date dao_update_service(service)
def get_by_email(): email = request.args.get('email') if not email: error = 'Invalid request. Email query string param required' raise InvalidRequest(error, status_code=400) fetched_user = get_user_by_email(email) result = fetched_user.serialize() return jsonify(data=result)
def get_by_email(): email = request.args.get('email') if not email: error = 'Invalid request. Email query string param required' raise InvalidRequest(error, status_code=400) fetched_user = get_user_by_email(email) result = user_schema.dump(fetched_user) return jsonify(data=result.data)
def fetch_user_by_email(): email, errors = email_data_request_schema.load(request.get_json()) if errors: raise InvalidRequest(message=errors, status_code=400) fetched_user = get_user_by_email(email['email']) result = fetched_user.serialize() return jsonify(data=result)
def send_support_email(user_id): data, errors = support_email_data_schema.load(request.get_json()) data['tags'] = ['z_skip_opsgenie', 'z_skip_urgent_escalation'] try: user = get_user_by_email(data['email']) has_live_services = any([not s.restricted for s in user.services]) if has_live_services: data['tags'] = [] except NoResultFound: pass status_code = Freshdesk.create_ticket(data) return jsonify({"status_code": status_code}), 204
def send_user_reset_password(): email, errors = email_data_request_schema.load(request.get_json()) user_to_send_to = get_user_by_email(email['email']) template = dao_get_template_by_id(current_app.config['PASSWORD_RESET_TEMPLATE_ID']) message = { 'template': str(template.id), 'template_version': template.version, 'to': user_to_send_to.email_address, 'personalisation': { 'user_name': user_to_send_to.name, 'url': _create_reset_password_url(user_to_send_to.email_address) } } send_email.apply_async([current_app.config['NOTIFY_SERVICE_ID'], str(uuid.uuid4()), encryption.encrypt(message), datetime.utcnow().strftime(DATETIME_FORMAT)], queue='notify') return jsonify({}), 204
def login_with_password(): if not is_feature_enabled(FeatureFlag.EMAIL_PASSWORD_LOGIN_ENABLED): return jsonify(result='error', message="Not Implemented"), 501 request_json = request.get_json() validate(request_json, password_login_request) try: fetched_user = get_user_by_email(request_json['email_address']) except NoResultFound: current_app.logger.info( f"No user was found with email address: {request_json['email_address']}" ) else: if fetched_user.check_password(request_json['password']): jwt_token = create_access_token(identity=fetched_user) return jsonify(result='success', token=jwt_token), 200 else: current_app.logger.info( f"wrong password for: {request_json['email_address']}") return jsonify(result='error', message='Failed to login'), 401
def test_get_user_by_email_is_case_insensitive(sample_user): email = sample_user.email_address user_from_db = get_user_by_email(email.upper()) assert sample_user == user_from_db
def test_get_user_by_email(sample_user): user_from_db = get_user_by_email(sample_user.email_address) assert sample_user == user_from_db
def test_get_user_by_email(sample_user): email = sample_user.email_address user_from_db = get_user_by_email(email) assert sample_user == user_from_db