public virtual ActionResult UserLogin(LoginModel model) { try { if (string.IsNullOrEmpty(model.UserName)) { return(Json(new MessageErrorModel { Status = false, Messages = T("User name is required.") })); } if (string.IsNullOrEmpty(model.Password)) { return(Json(new MessageErrorModel { Status = false, Messages = T("Password is required.") })); } if (model.UserName.IndexOf('@') > -1) { model.UserName = model.UserName.Split('@')[0]; } service.Login(model.UserName, model.Password, model.RememberMe); var returnUrl = model.ReturnUrl; string redirectUrl; if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\") && !returnUrl.EndsWith("account/register")) { redirectUrl = returnUrl; } else { redirectUrl = DefaultRedirectUrl; } var result = new MessageErrorModel { Status = true, GoBackText = redirectUrl }; return(Json(result)); } catch (Exception ex) { var result = new MessageErrorModel { Status = false, Messages = ex.Message }; return(Json(result)); } }
public ActionResult SaveModule() { try { HttpPostedFileBase file = Request.Files["UploadedFile"]; if (file != null) { #region Save module var assemblyName = Request.Form["AssemblyName"]; var category = "Content Management"; var service = WorkContext.Resolve <IShellDescriptorManager>(); var setting = service.GetShellDescriptor(); var configuration = WebConfigurationManager.OpenWebConfiguration("~"); var sections = ((CMSConfigurationSection)configuration.GetSection("solutions")).Modules; var element = new ModuleProviderConfigurationElement { Id = assemblyName, Name = assemblyName, Category = category }; if (setting.Features.Any(item => item.Name == assemblyName)) { sections.Remove(element.Id); } else { var serviceFile = WorkContext.Resolve <IShellDescriptorCache>(); var st = WorkContext.Resolve <ShellSettings>(); serviceFile.Store(st.Name, setting); } setting.Features.Add(new ShellFeature { Name = assemblyName }); service.UpdateShellDescriptor(0, setting.Features); sections.Add(element); configuration.Save(ConfigurationSaveMode.Modified); #endregion #region Upload Module var folderSource = Server.MapPath("~/Media/Temp/"); var fullUrl = Path.Combine(folderSource, file.FileName); file.SaveAs(fullUrl); var folderRoot = Path.GetFileNameWithoutExtension(fullUrl); string lastFolderName = folderSource + folderRoot; Directory.CreateDirectory(lastFolderName); using (ZipFile zip = ZipFile.Read(fullUrl)) { zip.ExtractAll(lastFolderName, ExtractExistingFileAction.OverwriteSilently); } foreach (var path in Directory.GetDirectories(lastFolderName)) { var folderName = new DirectoryInfo(path).Name; if (folderName == "bin") { string[] files = Directory.GetFiles(path); foreach (var filePath in files) { System.IO.File.Copy(filePath, Server.MapPath("~/bin/" + Path.GetFileName(filePath)), true); } } else { var sourceFolder = lastFolderName + "\\" + folderName; var destinationFolder = Server.MapPath(string.Format("~/{0}", folderName)); CopyDirectories(sourceFolder, destinationFolder); } } if (System.IO.File.Exists(fullUrl)) { System.IO.File.Delete(fullUrl); } if (Directory.Exists(lastFolderName)) { Directory.Delete(lastFolderName, true); } #endregion } else { var model = new MessageErrorModel { ExceptionError = new Exception(T("Cannot find file upload.")), TitleForm = T("Messages"), Messages = T("Cannot find file upload."), GoBackText = T("Back") }; return(View("ErrorPage", model)); } } catch (Exception ex) { var model = new MessageErrorModel { ExceptionError = ex, TitleForm = T("Messages"), Messages = ex.Message, GoBackText = T("Back") }; return(View("ErrorPage", model)); } return(Redirect(Url.Action("Index"))); }