anchor.diff:  -spec validate_group_ctx(storage:helper(), group_ctx()) ->
       ok | {error, Reason :: term()}.
   validate_group_ctx(#helper{name = ?POSIX_HELPER_NAME}, GroupCtx) ->
  -    check_user_or_group_ctx_fields([<<"gid">>], GroupCtx);
  +    validate_fields([<<"gid">>], GroupCtx, true);
   validate_group_ctx(#helper{name = ?GLUSTERFS_HELPER_NAME}, GroupCtx) ->
  -    check_user_or_group_ctx_fields([<<"gid">>], GroupCtx);
  +    validate_fields([<<"gid">>], GroupCtx, true);
   validate_group_ctx(#helper{name = ?NULL_DEVICE_HELPER_NAME}, GroupCtx) ->
  -    check_user_or_group_ctx_fields([<<"gid">>], GroupCtx);
  +    validate_fields([<<"gid">>], GroupCtx, true);
   validate_group_ctx(#helper{name = ?WEBDAV_HELPER_NAME}, _GroupCtx) ->
       ok;
   validate_group_ctx(#helper{name = HelperName}, _GroupCtx) ->
       {error, {group_ctx_not_supported, HelperName}}.
  +
  +%%--------------------------------------------------------------------
  +%% @doc
  +%% Injects user context into helper parameters.
  +%% @end
  +%%--------------------------------------------------------------------
  +-spec set_user_ctx(helpers:helper(), user_ctx()) ->
  +    {ok, helpers:helper()} | {error, Reason :: term()}.
  +set_user_ctx(#helper{args = Args} = Helper, UserCtx) ->
  +    % @fixme look here
  +    case validate_user_ctx(Helper, UserCtx) of
  +        ok -> {ok, Helper#helper{args = maps:merge(Args, UserCtx)}};
  +        {error, Reason} -> {error, Reason}
  +    end.
  +
  +
  +-spec webdav_fill_admin_id(UserCtx :: user_ctx()) -> user_ctx().
  +webdav_fill_admin_id(UserCtx = #{<<"onedataAccessToken">> := <<>>}) ->
  +    {ok, UserCtx};
  +webdav_fill_admin_id(UserCtx = #{<<"onedataAccessToken">> := Token}) ->
  +    {ok, AdminId} = user_identity:get_or_fetch_user_id(Token),
  +    {ok, UserCtx#{
  +        <<"adminId">> => AdminId
  +    }};
  +
  +webdav_fill_admin_id(UserCtx) ->
  +    UserCtx.
  +
  +
  +%%%===================================================================
  +%%% Getters
  +%%% Functions for extracting info from helper records
  +%%%===================================================================
   
   %%--------------------------------------------------------------------
   %% @doc
  
positive.code: -spec new_helper(name(), args(), user_ctx(), Insecure :: boolean(),
      storage_path_type()) -> {ok, helpers:helper()}.
  new_helper(HelperName, Args, AdminCtx, Insecure, StoragePathType) ->
      {Required, _} = expected_helper_args(HelperName),
      ok = check_args(Required, Args),
      ok = validate_user_ctx(HelperName, AdminCtx),
      {ok, #helper{
          name = HelperName,
  
negative.code: %%--------------------------------------------------------------------
  -spec filter_user_ctx(name(), #{binary() => term()}) -> #{binary() => term()}.
  filter_user_ctx(HelperName, Params) ->
      AllowedFields = expected_user_ctx_params(HelperName, Params),
      filter_params(AllowedFields, Params).
  
  
  %%--------------------------------------------------------------------
  