Пример #1
0
        public async Task <ActionResult> Index(long?Id)
        {
            if (Settings.SharedFoldersRootPermissions.Contains(PublicRole.Id) ||
                Roles.UserInAnyRole(User, RoleManager, Settings.SharedFoldersRootPermissions.Split(',')))
            {
                var folders = await SharedFolder.GetAvailableFolders(db, User, UserManager, RoleManager, false, true, Id).ToListAsync();

                return(Auto(folders));
            }
            else
            {
                return(RedirectToAction("Login", "Account", new { returnUrl = Request.RawUrl.ToAppPath(HttpContext) }));
            }
        }
Пример #2
0
        private async Task <SharedFolder> FindFolderWithSlug(string slug, bool andSubfolders = false)
        {
            string s       = slug.ToLowerInvariant();
            var    folders = SharedFolder.GetAvailableFolders(db, User, UserManager, RoleManager);
            var    folder  = await folders.Where(p => p.Slug == s).FirstOrDefaultAsync();

            if (folder == null)
            {
                return(null);
            }

            var ids = folder.Files?.Select(f => f.Id) ?? new List <long>();

            folder.Files = WebFile.GetAvailableFiles(db, User, UserManager, RoleManager).Where(f => ids.Contains(f.Id)).ToList();
            if (andSubfolders)
            {
                ids = folder.SubFolders?.Select(f => f.Id) ?? new List <long>();
                folder.SubFolders = SharedFolder.GetAvailableFolders(db, User, UserManager, RoleManager).Where(f => ids.Contains(f.Id)).ToList();
            }
            return(folder);
        }
Пример #3
0
        public async Task <ActionResult> AddFiles(long id, long[] files)
        {
            var uploadRoles = Settings.RolesWithUploadPermission.Split(',');

            if (Roles.UserInAnyRole(User, RoleManager, uploadRoles))
            {
                SharedFolder folder = await SharedFolder.GetAvailableFolders(db, User, UserManager, RoleManager).FindAsync(id);

                if (folder == null)
                {
                    return(HttpNotFound());
                }
                var webfiles = await WebFile.GetAvailableFiles(db, User, UserManager, RoleManager).Where(f => files.Contains(f.Id)).ToListAsync();

                foreach (var wf in webfiles)
                {
                    folder.Files.Add(wf);
                }
                await db.SaveChangesAsync();
            }
            return(Json(new { status = "OK" }));
        }