anchor.diff:          {{opt,<<"middle_name">>}, string},  %% FIXME these should be retained by the components that need them
           {{opt,<<"twitter_account">>}, string},
           {{opt,<<"city">>}, string},
  -        {{opt,<<"country">>}, string}
  +        {{opt,<<"country">>}, string},
  +        {{opt,<<"external_authentication_uid">>}, string }
       ]};
   user_spec(create) ->
      {[ {<<"password">>, password_validator()} ]};
   user_spec(update) ->
       {[ {{opt,<<"password">>},  password_validator()},
  +       {{opt,<<"recovery_authentication_enabled">>}, boolean },
          {{opt,<<"private_key">>}, boolean } ]}.
  -
  -%% Whitelist of fields we will persist to serialized_objects.  Fields not in this list and not part of the
  -%% schema will cause updates to be rejected.
  --define(JSON_SERIALIZABLE, [<<"display_name">>,
  -                            <<"first_name">>,
  -                            <<"last_name">>,
  -                            <<"middle_name">>,
  -                            <<"city">>,
  -                            <<"country">>,
  -                            <<"twitter_account">>]).
  -
   
   valid_email(EMail) when is_binary(EMail) ->
       valid_email(binary_to_list(EMail));
  
positive.code:                 public_key = Key
              }
      end,
      SerializedObject0 = { whitelisted_values(UserEJson) },
      SerializedObject1 = merge_user_data(chef_json:decode(User#chef_user.serialized_object),
                                          SerializedObject0),
      User1#chef_user{username = Name,
  
negative.code:     ExtAuthUid = value_or_null({<<"external_authentication_uid">>}, UserData),
      EnableRecovery = ej:get({"<<recovery_authentication_enabled>>"}, UserData) =:= true,
      {PublicKey, PubkeyVersion} = chef_object_base:cert_or_key(UserData),
      SerializedObject = { whitelisted_values(UserData, ?JSON_SERIALIZABLE) },
      #chef_user{id = Id,
                 authz_id = chef_object_base:maybe_stub_authz_id(AuthzId, Id),
                 username = Name,
  