anchor.diff:              gui_error:report_warning(<<"Invalid token value.">>);
           {true, Macaroon} ->
               {ok, SpaceId} = space_logic:join({user, UserId}, Macaroon),
  -            % Push the newly joined space to the client's model
  -            gui_async:push_created(
  -                <<"space">>, space_data_backend:space_record(SpaceId, UserId)
  +            % Push user record with a new space list.
  +            gui_async:push_updated(
  +                <<"user">>, user_data_backend:user_record(UserId)
               ),
               {ok, [{<<"spaceId">>, SpaceId}]}
       end;
  
positive.code:             gui_error:report_warning(<<"Invalid token value.">>);
          {true, Macaroon} ->
              {ok, GroupId} = group_logic:join(UserId, Macaroon),
              % Check if that group belongs to any spaces, if so push them
              {ok, [{spaces, Spaces}]} = group_logic:get_spaces(GroupId),
              lists:foreach(
                  fun(SpaceId) ->
                      % Push the modified space and provider to the client
                      gui_async:push_created(
                          <<"space">>,
                          space_data_backend:space_record(SpaceId, UserId)
                      )
                  end, Spaces),
              {ok, [{<<"groupId">>, GroupId}]}
      end.
  
negative.code:     case Authorized of
          true ->
              true = space_logic:remove_provider(SpaceId, ProviderId),
              % Push user record with a new spaces and providers list.
              gui_async:push_updated(
                  <<"user">>, user_data_backend:user_record(UserId)
              ),
              ok;
          false ->
              gui_error:report_warning(
  