def create_user(_admin_user): params = assert_data_has_keys(request, {'email', 'password', 'name', 'role'}) if params['role'] not in ['admin', 'provider']: raise WebError('Role must be either "admin" or "provider"', 400) id = str(uuid.uuid4()) language = params.get('language', 'en') name_str = LanguageString(id=str(uuid.uuid4()), content_by_language={language: params['name']}) hashed_password = bcrypt.hashpw(params['password'].encode(), bcrypt.gensalt()).decode() user = User(id, name_str, params['role'], params['email'], hashed_password) try: add_user(user) except psycopg2.errors.UniqueViolation: raise WebError('User already exists', 409) all_users = [User.from_db_row(r).to_dict() for r in all_user_data()] return jsonify({'users': all_users})
def delete_user(_admin_user): params = assert_data_has_keys(request, {'email'}) user = User.from_db_row(user_data_by_email(params['email'])) delete_user_by_id(user.id) all_users = [User.from_db_row(r).to_dict() for r in all_user_data()] return jsonify({'users': all_users})
def get_all_users(_admin_user): all_users = [User.from_db_row(r).to_dict() for r in all_user_data()] return jsonify({'users': all_users})