5

管理者としてユーザーのプロフィール画像を変更する方法はありますか?当社には、TFSWebポータルでプロファイルに使用するすべての画像の中央リポジトリがあります。私は誰もがそれを個別に行うことができることを知っていますが、それはすべての人のためにグローバルに行うことができますか?

4

1 に答える 1

4

TL / DR

TFS管理者にプロファイル画像機能を提供するパッチをALMレンジャーズチームツールのクイックレスポンスサンプルに提出しました。


詳細

公式回答:いいえ。プラットフォームの現在のバージョンではなく、将来のリリースで検討されています。

本当の答えは、APIトリックで実行できます。ただし、まだサポートされていません。私はまさにそれを行うコマンドラインツールに取り組んでいます。休み明けにシェアできると思います。以前に必要になった場合は、reflector.netでwebaccess dllを開くと、問題のコードを見つけることができます。

プロファイル画像は、基本的にユーザーのIDオブジェクトの拡張プロパティです。

重要な行は次のとおりです。

            _identity.SetProperty("Microsoft.TeamFoundation.Identity.Image.Data", imageData); /* byte[] containing 90x90px png */
            _identity.SetProperty("Microsoft.TeamFoundation.Identity.Image.Type", "image/png");
            _identity.SetProperty("Microsoft.TeamFoundation.Identity.Image.Id", Guid.NewGuid().ToByteArray());
            _identity.SetProperty("Microsoft.TeamFoundation.Identity.CandidateImage.Data", null);
            _identity.SetProperty("Microsoft.TeamFoundation.Identity.CandidateImage.UploadDate", null);
            UpdateIdentity();

IDを更新するコード:

    private static void UpdateIdentity()
    {
        try
        {
            _service.UpdateExtendedProperties(_identity);
            _service.RefreshIdentity(_identity.Descriptor);
        }
        catch (PropertyServiceException)
        {
            //swallow;
        }
    }

IDサービスとIDを取得するためのコード:

        var server = TfsConfigurationServerFactory.GetConfigurationServer(new Uri("http://localhost:8080/tfs"));
        server.ClientCredentials = new TfsClientCredentials();
        server.ClientCredentials = new TfsClientCredentials(new WindowsCredential(new NetworkCredential(connectUser, password)));
        server.Authenticate();

        _service = server.GetService<IIdentityManagementService2>();

        var identities = _service.ReadIdentities(IdentitySearchFactor.AccountName,
                                                new[] {userToSetImageOn}, MembershipQuery.None, ReadIdentityOptions.None);
于 2012-12-19T01:45:53.550 に答える