00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 using System;
00013 using System.Net;
00014 using Microsoft.Office.Project.Server.Library;
00015
00016 namespace Mcs.Epm.MicrosoftProject.mpFx.Proxies
00017 {
00018 public class CustomFieldsProxy : CustomFieldsWebService.CustomFields
00019 {
00020 public string ContextString { get; set; }
00021
00022 protected override WebRequest GetWebRequest(Uri uri)
00023 {
00024
00025 WebRequest webRequest = base.GetWebRequest(uri);
00026
00027 if (ContextString != String.Empty)
00028 {
00029 webRequest.UseDefaultCredentials = true;
00030 webRequest.Credentials = CredentialCache.DefaultNetworkCredentials;
00031 webRequest.Headers.Add("PjAuth", ContextString);
00032 webRequest.PreAuthenticate = true;
00033
00034 }
00035 return webRequest;
00036 }
00037
00038 public void SetImpersonationContext(bool isWindowsUser, String userNTAccount, Guid userGuid, Guid trackingGuid, Guid siteId, String lcid)
00039 {
00040 ContextString = GetImpersonationContext(isWindowsUser, userNTAccount, userGuid, trackingGuid, siteId, lcid);
00041 }
00042
00043 private static String GetImpersonationContext(bool isWindowsUser, String userNTAccount, Guid userGuid, Guid trackingGuid, Guid siteId, String lcid)
00044 {
00045 PSContextInfo contextInfo = new PSContextInfo(isWindowsUser, userNTAccount, userGuid, trackingGuid, siteId, lcid);
00046 String contextString = PSContextInfo.SerializeToString(contextInfo);
00047 return contextString;
00048 }
00049 }
00050 }