Example #1
0
 /// <summary>
 /// Construct a new <see cref="DirectoryItemViewModel"/> using a <see cref="Models.DirectoryItem"/> object.
 /// </summary>
 /// <param name="item"></param>
 public ItemViewModel(Models.DirectoryItem item)
 {
     this.FullPath  = item.FullPath;
     this.Name      = item.Name;
     this.Directory = item.Directory;
     this.Extension = item.Extension;
     this.NewName   = string.Empty;
 }
        public List<WaldenCompleteFaxWeb.Models.DirectoryItem> GetDirectoryListing(string directory)
        {
            WindowsPrincipal wp = new WindowsPrincipal(WindowsIdentity.GetCurrent());
            Walden.CompleteFax.Library.Database.Log(wp.Identity.Name);



            // Obtain the authenticated user's Identity
            WindowsIdentity winId = (WindowsIdentity)HttpContext.Current.User.Identity;
            WindowsImpersonationContext ctx = null;
            //try
            //{
            //  // Start impersonating
            //  ctx = winId.Impersonate();
            //  // Now impersonating
            //  // Access resources using the identity of the authenticated user
            //}
            // Prevent exceptions from propagating
            //catch
            //{
            //}
            //finally
            //{
            //  // Revert impersonation
            //  if (ctx != null)
            //    ctx.Undo();
            //}
            // Back to running under the default ASP.NET process identity
            
            double id = 1;
            List<WaldenCompleteFaxWeb.Models.DirectoryItem> directoryItemsList = new List<WaldenCompleteFaxWeb.Models.DirectoryItem>();
            WaldenCompleteFaxWeb.Models.DirectoryItem directoryItems;

            try
            {
                ctx = winId.Impersonate();
                DirectoryInfo directoryInfo = new DirectoryInfo(directory);
                var directories = directoryInfo.GetDirectories();

                for (int i = 0; i < directories.Length; i++)
                {
                    string value = directories[i].Name;
                    directoryItems = new Models.DirectoryItem();
                    directoryItems.id = directories[i].FullName;
                    directoryItems.Name = directories[i].Name;
                    directoryItems.hasChildren = true;
                    directoryItemsList.Add(directoryItems);
                    id++;
                }

                DirectoryInfo directoryInfo2 = new DirectoryInfo(directory);
                var directories2 = directoryInfo.GetFiles();

                for (int i = 0; i < directories2.Length; i++)
                {
                    directoryItems = new Models.DirectoryItem();
                    directoryItems.id = directories2[i].FullName;
                    directoryItems.Name = directories2[i].Name;
                    directoryItems.hasChildren = false;
                    directoryItemsList.Add(directoryItems);
                    id++;
                }

                return directoryItemsList;
            }
            catch (Exception er)
            {
                Walden.CompleteFax.Library.Database.Log(er.Message);
                return directoryItemsList;
            }
            finally
            {
                // Revert impersonation
                if (ctx != null)
                    ctx.Undo();
            }
        }