private void PreparePage(SitePage sitePage, string[] permissions = null) { sitePage.Name = sitePage.Name.Trim(); sitePage.Slug = Extensions.String.Coalesce(sitePage.Slug, sitePage.Name.CleanFileName()); if (sitePage.HomePage) { var allpages = db.ActiveSitePages.Where(p => p.Id != sitePage.Id && p.HomePage == true).ToList(); foreach (var page in allpages) { page.HomePage = false; db.Entry(page).State = EntityState.Modified; } } Permission.Apply(db, User, RoleManager, sitePage, permissions); }
public async Task <ActionResult> Edit([Bind(Include = AllowedFields)] WebFile form, string[] permissions = null) { WebFile webFile = await WebFile.GetAvailableFiles(db, User, UserManager, RoleManager, !User.IsInRole(Roles.Administrators)).FindAsync(form.Id); if (webFile == null) { return(HttpNotFound()); } if (ModelState.IsValid) { webFile.Update(form, UserTimeZoneOffset); db.Entry(webFile).State = EntityState.Modified; Permission.Apply(db, User, RoleManager, webFile, permissions); await db.SaveChangesAsync(); return(RedirectToAction("Index")); } return(Auto(webFile)); }
// GET: SitePages/Copy/5 public async Task <ActionResult> Copy(long?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } SitePage sitePage = await db.ActiveSitePages.FindAsync(id); if (sitePage == null) { return(HttpNotFound()); } var copy = sitePage.CreateCopy(); Permission.Apply(db, User, RoleManager, copy, sitePage.Permissions.Select(p => p.AppliesToRole_Id)); db.SitePages.Add(copy); await db.SaveChangesAsync(); return(RedirectToAction("Edit", new { copy.Id })); }
private void PrepareFolder(SharedFolder sharedFolder, string[] permissions) { sharedFolder.Name = sharedFolder.Name.Trim(); string cleanName = sharedFolder.Name.CleanFileName(); string slug = cleanName.ToLowerInvariant(); if (slug != sharedFolder.Slug) { var folders = db.ActiveSharedFolders.Where(f => f.Slug.StartsWith(slug) && f.Id != sharedFolder.Id).OrderBy(f => f.Slug).ToList(); if (folders.Count() > 0) { int count = 0; Func <string> suffix = () => { if (sharedFolder.Id == 0) { count++; return("_" + count); } else { return("-" + sharedFolder.Id); } }; foreach (var folder in folders) { if (folder.Slug.Equals(slug, StringComparison.InvariantCultureIgnoreCase)) { slug = cleanName + suffix(); break; } } } } sharedFolder.Slug = slug.ToLowerInvariant(); Permission.Apply(db, User, RoleManager, sharedFolder, permissions); }
public async Task <ActionResult> Create([Bind(Include = AllowedFields)] WebFile webFile, bool redir = false) { UploadResults results = new UploadResults { message = "No file upload received.", status = UploadResults.Failed }; try { var uploadRoles = Settings.RolesWithUploadPermission.Split(','); if (Roles.UserInAnyRole(User, RoleManager, uploadRoles)) { if (Request.Files.Count > 0) { string defaultRoleSetting = Settings.DefaultUploadPermissions; string[] defaultRoles; if (!string.IsNullOrEmpty(defaultRoleSetting)) { defaultRoles = defaultRoleSetting.Split(','); } else { defaultRoles = new string[] { RoleManager.FindByName(Roles.Users)?.Id }; } int fileCount = Request.Files.Count; for (int i = 0; i < fileCount; i++) { HttpPostedFileBase uploadedFile = Request.Files[i]; if (uploadedFile != null && uploadedFile.ContentLength > 0) { WebFile file = null; ModelState["Name"]?.Errors?.Clear(); if (ImageHelper.IsImageFile(uploadedFile)) { file = UploadImage(uploadedFile, results); } else if ((VideoHelper.IsVideoFile(uploadedFile) || VideoHelper.IsAudioFile(uploadedFile))) { file = UploadVideoOrAudio(uploadedFile, results); } else if (DocumentHelper.IsDocumentFile(uploadedFile)) { file = UploadDocument(uploadedFile, results); } else if (IsAllowedFileType(uploadedFile)) { file = UploadFile(uploadedFile, results, db, HttpContext, Settings); } else { results.status = UploadResults.Failed; results.message = "The file format was not recognized or is not an allowed file type."; } if (file != null) { if (webFile != null) { file.Update(webFile, UserTimeZoneOffset); webFile = null; } Permission.Apply(db, User, RoleManager, file, defaultRoles); //default permissions db.WebFiles.Add(file); await db.SaveChangesAsync(); results.files.Add(file); } } } if (results.status != UploadResults.Failed) { results.status = UploadResults.OK; results.message = null; //"File uploaded successfully."; } foreach (var wf in results.files) { if (!string.IsNullOrEmpty(webFile?.Name)) { wf.Name = webFile.Name; } else { wf.Name = wf.GetFileName(); } } if (fileCount > 1) { SetSuccessMessage("{0} files uploaded successfully", fileCount); } else if (results.files.Count > 0) { SetSuccessMessage("{0} uploaded successfully", results.files.First().Name); } } else { results.status = UploadResults.Failed; results.message = ErrorsFromModelState(ModelState) ?? results.message; } } else { throw new Exception("Permission denied"); } } catch (Exception ex) { results.status = UploadResults.Failed; results.message = ex.Message; } if (redir) { if (results.status == UploadResults.Failed) { SetFailureMessage(results.message); return(View(webFile)); } else { SetSuccessMessage(webFile.Name + " uploaded successfully!"); return(RedirectToAction("Index")); } } return(Auto(results, "Created")); }