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