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 using Project=Mcs.Epm.MicrosoftProject.mpFx.ProjectsWebService.Project;
00016
00017 namespace Mcs.Epm.MicrosoftProject.mpFx.Proxies
00018 {
00019 public class ProjectProxy : Project
00020 {
00021 public string ContextString { get; set; }
00022
00023 protected override WebRequest GetWebRequest(Uri uri)
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 return webRequest;
00035 }
00036
00037 public void SetImpersonationContext(bool isWindowsUser, String userNTAccount, Guid userGuid, Guid trackingGuid, Guid siteId, String lcid)
00038 {
00039 ContextString = GetImpersonationContext(isWindowsUser, userNTAccount, userGuid, trackingGuid, siteId, lcid);
00040 }
00041
00042 private static String GetImpersonationContext(bool isWindowsUser, String userNTAccount, Guid userGuid, Guid trackingGuid, Guid siteId, String lcid)
00043 {
00044 PSContextInfo contextInfo = new PSContextInfo(isWindowsUser, userNTAccount, userGuid, trackingGuid, siteId, lcid);
00045 String contextString = PSContextInfo.SerializeToString(contextInfo);
00046 return contextString;
00047 }
00048 }
00049 }