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