private static Node LoadContextNode(NodeHead head, string versionRequest)
{
Node node = null;
if (head == null)
return null;
//we need to user system account here during startup
//because authentication occurs after this
var changeToSystem = (User.Current.Id == RepositoryConfiguration.StartupUserId);
try
{
if (changeToSystem)
AccessProvider.ChangeToSystemAccount();
if (String.IsNullOrEmpty(versionRequest))
{
node = Node.LoadNode(head.Id);
}
else
{
VersionNumber version;
if (VersionNumber.TryParse(versionRequest, out version))
node = Node.LoadNode(head.Id, version);
}
}
finally
{
if (changeToSystem)
AccessProvider.RestoreOriginalUser();
}
return node;
}