public JsonResult ValidateUsername(string username, long id = 0) { SubjectManager subjectManager = new SubjectManager(); User user = subjectManager.GetUserByName(username); if (user == null) { return Json(true, JsonRequestBehavior.AllowGet); } else { if (user.Id == id) { return Json(true, JsonRequestBehavior.AllowGet); } else { string error = String.Format(CultureInfo.InvariantCulture, "The Username exists already.", username); return Json(error, JsonRequestBehavior.AllowGet); } } }
public ActionResult ReloadMetadataEditor(bool locked = false, bool show = false) { ViewData["Locked"] = locked; ViewData["ShowOptional"] = show; ViewBag.Title = PresentationModel.GetViewTitleForTenant("Create Dataset", this.Session.GetTenant()); TaskManager = (CreateTaskmanager)Session["CreateDatasetTaskmanager"]; List<StepModelHelper> stepInfoModelHelpers = new List<StepModelHelper>(); foreach (var stepInfo in TaskManager.StepInfos) { StepModelHelper stepModelHelper = GetStepModelhelper(stepInfo.Id); if (stepModelHelper.Model == null) { if (stepModelHelper.Usage is MetadataPackageUsage) stepModelHelper.Model = CreatePackageModel(stepInfo.Id, false); if (stepModelHelper.Usage is MetadataNestedAttributeUsage) stepModelHelper.Model = CreateCompoundModel(stepInfo.Id, false); getChildModelsHelper(stepModelHelper); } stepInfoModelHelpers.Add(stepModelHelper); } MetadataEditorModel Model = new MetadataEditorModel(); Model.StepModelHelpers = stepInfoModelHelpers; #region security permissions and authorisations check // set edit rigths PermissionManager permissionManager = new PermissionManager(); SubjectManager subjectManager = new SubjectManager(); Security.Services.Objects.TaskManager securityTaskManager = new Security.Services.Objects.TaskManager(); bool hasAuthorizationRights = false; bool hasAuthenticationRigths = false; User user = subjectManager.GetUserByName(GetUsernameOrDefault()); long userid = -1; long entityId = -1; if (TaskManager.Bus.ContainsKey(CreateTaskmanager.ENTITY_ID)) { entityId = Convert.ToInt64(TaskManager.Bus[CreateTaskmanager.ENTITY_ID]); Model.EditRight = hasUserEditRights(entityId); Model.EditAccessRight = hasUserEditAccessRights(entityId); } else { Model.EditRight = false; Model.EditAccessRight = false; } Model.FromEditMode = true; if (TaskManager.Bus.ContainsKey(CreateTaskmanager.METADATASTRUCTURE_ID)) { long metadataStructureId = Convert.ToInt64(TaskManager.Bus[CreateTaskmanager.METADATASTRUCTURE_ID]); Model.Import = IsImportAvavilable(metadataStructureId); } #endregion //set addtionaly functions Model.Actions = getAddtionalActions(); return PartialView("MetadataEditor", Model); }
public ActionResult MyAccount() { ViewBag.Title = PresentationModel.GetViewTitleForTenant("My Account", this.Session.GetTenant()); SubjectManager subjectManager = new SubjectManager(); User user = subjectManager.GetUserByName(HttpContext.User.Identity.Name); if (user != null) { return View("MyAccount", MyAccountModel.Convert(user)); } else { return View("MyAccount"); } }
/// <summary> /// return true if user has edit rights /// </summary> /// <returns></returns> private bool hasUserEditAccessRights(long entityId) { #region security permissions and authorisations check // set edit rigths PermissionManager permissionManager = new PermissionManager(); SubjectManager subjectManager = new SubjectManager(); Security.Services.Objects.TaskManager securityTaskManager = new Security.Services.Objects.TaskManager(); bool hasAuthorizationRights = false; User user = subjectManager.GetUserByName(GetUsernameOrDefault()); long userid = -1; if (user != null) { userid = subjectManager.GetUserByName(GetUsernameOrDefault()).Id; //User has Access to Features //Area DCM //Controller "Create Dataset" //Action "*" Task task = securityTaskManager.GetTask("DCM", "CreateDataset", "*"); if (task != null) { hasAuthorizationRights = permissionManager.HasSubjectFeatureAccess(userid, task.Feature.Id); } return (hasAuthorizationRights); } else { return false; } #endregion }
/// <summary> /// return true if user has edit rights /// </summary> /// <returns></returns> private bool hasUserEditRights(long entityId) { #region security permissions and authorisations check // set edit rigths PermissionManager permissionManager = new PermissionManager(); SubjectManager subjectManager = new SubjectManager(); Security.Services.Objects.TaskManager securityTaskManager = new Security.Services.Objects.TaskManager(); bool hasAuthenticationRigths = false; User user = subjectManager.GetUserByName(GetUsernameOrDefault()); long userid = -1; if (user != null) { userid = subjectManager.GetUserByName(GetUsernameOrDefault()).Id; hasAuthenticationRigths = permissionManager.HasUserDataAccess(userid, 1, entityId, RightType.Update); return (hasAuthenticationRigths); } else { return false; } #endregion }
/// <summary> /// Lists all exisiting datasets alongside with their current status /// </summary> /// <returns></returns> public ActionResult List() { ViewBag.Title = PresentationModel.GetViewTitleForTenant("Maintain Datasets", this.Session.GetTenant()); DatasetManager dm = new DatasetManager(); PermissionManager permissionManager = new PermissionManager(); SubjectManager subjectManager = new SubjectManager(); User user = subjectManager.GetUserByName(HttpContext.User.Identity.Name); List<Dataset> datasets = dm.DatasetRepo.Query().OrderBy(p=>p.Id).ToList(); List<long> datasetIds = new List<long>(); if (user != null) { datasetIds.AddRange(permissionManager.GetAllDataIds(user.Id, 1, RightType.Delete)); } ViewData["DatasetIds"] = datasetIds; return View(datasets); }
// // GET: /DIM/Import/ public ActionResult Index() { //xml metadata for import string metadataForImportPath = Path.Combine(AppConfiguration.GetModuleWorkspacePath("DIM"), "MetadataIDIV_EXAMPLE.xml"); XmlDocument metadataForImport = new XmlDocument(); metadataForImport.Load(metadataForImportPath); // metadataStructure DI long metadataStructureId = 3; MetadataStructureManager metadataStructureManager = new MetadataStructureManager(); string metadataStructrueName = metadataStructureManager.Repo.Get(metadataStructureId).Name; // loadMapping file string path_mappingFile = Path.Combine(AppConfiguration.GetModuleWorkspacePath("DIM"), XmlMetadataImportHelper.GetMappingFileName(metadataStructureId, TransmissionType.mappingFileImport, metadataStructrueName)); // XML mapper + mapping file XmlMapperManager xmlMapperManager = new XmlMapperManager(TransactionDirection.InternToExtern); xmlMapperManager.Load(path_mappingFile, "IDIV"); // generate intern metadata XmlDocument metadataResult = xmlMapperManager.Generate(metadataForImport,1); // generate intern template XmlMetadataWriter xmlMetadatWriter = new XmlMetadataWriter(BExIS.Xml.Helpers.XmlNodeMode.xPath); XDocument metadataXml = xmlMetadatWriter.CreateMetadataXml(metadataStructureId); XmlDocument metadataXmlTemplate = XmlMetadataWriter.ToXmlDocument(metadataXml); XmlDocument completeMetadata = XmlMetadataImportHelper.FillInXmlAttributes(metadataResult, metadataXmlTemplate); // create Dataset //load datastructure DataStructureManager dsm = new DataStructureManager(); ResearchPlanManager rpm = new ResearchPlanManager(); MetadataStructureManager msm = new MetadataStructureManager(); DatasetManager dm = new DatasetManager(); Dataset dataset = dm.CreateEmptyDataset(dsm.UnStructuredDataStructureRepo.Get(1), rpm.Repo.Get(1), msm.Repo.Get(3)); if (dm.IsDatasetCheckedOutFor(dataset.Id, GetUsernameOrDefault()) || dm.CheckOutDataset(dataset.Id, GetUsernameOrDefault())) { DatasetVersion workingCopy = dm.GetDatasetWorkingCopy(dataset.Id); workingCopy.Metadata = completeMetadata; string title = XmlDatasetHelper.GetInformation(workingCopy, NameAttributeValues.title); if (String.IsNullOrEmpty(title)) title = "No Title available."; dm.EditDatasetVersion(workingCopy, null, null, null); dm.CheckInDataset(dataset.Id, "Metadata was submited.", GetUsernameOrDefault()); // add security if (GetUsernameOrDefault() != "DEFAULT") { PermissionManager pm = new PermissionManager(); SubjectManager sm = new SubjectManager(); BExIS.Security.Entities.Subjects.User user = sm.GetUserByName(GetUsernameOrDefault()); foreach (RightType rightType in Enum.GetValues(typeof(RightType)).Cast<RightType>()) { pm.CreateDataPermission(user.Id, 1, dataset.Id, rightType); } } } return View(); }
public List<ListViewItem> LoadDatasetVersionViewList( DataStructureType dataStructureType) { PermissionManager permissionManager = new PermissionManager(); SubjectManager subjectManager = new SubjectManager(); // add security ICollection<long> datasetIDs = permissionManager.GetAllDataIds(subjectManager.GetUserByName(GetUsernameOrDefault()).Id, 1, RightType.Update).ToList(); DataStructureManager dataStructureManager = new DataStructureManager(); DatasetManager dm = new DatasetManager(); Dictionary<long, XmlDocument> dmtemp = new Dictionary<long, XmlDocument>(); dmtemp = dm.GetDatasetLatestMetadataVersions(); List<ListViewItem> temp = new List<ListViewItem>(); if (dataStructureType.Equals(DataStructureType.Structured)) { List<StructuredDataStructure> list = dataStructureManager.StructuredDataStructureRepo.Get().ToList(); foreach (StructuredDataStructure sds in list) { sds.Materialize(); foreach (Dataset d in sds.Datasets) { if (dm.IsDatasetCheckedIn(d.Id)) { if (datasetIDs.Contains(d.Id)) { temp.Add(new ListViewItem(d.Id, XmlDatasetHelper.GetInformation(dm.GetDatasetLatestVersion(d), NameAttributeValues.title))); } } } } } else { List<UnStructuredDataStructure> list = dataStructureManager.UnStructuredDataStructureRepo.Get().ToList(); foreach (UnStructuredDataStructure sds in list) { foreach (Dataset d in sds.Datasets) { if (datasetIDs.Contains(d.Id)) { if (dm.IsDatasetCheckedIn(d.Id)) { DatasetVersion datasetVersion = dm.GetDatasetLatestVersion(d); temp.Add(new ListViewItem(d.Id, XmlDatasetHelper.GetInformation(datasetVersion, NameAttributeValues.title))); } } } } } return temp.OrderBy(p => p.Title).ToList(); }
public ActionResult _CustomMyDatasetBinding() { DataTable model = new DataTable(); ViewData["PageSize"] = 10; ViewData["CurrentPage"] = 1; #region header List<HeaderItem> headerItems = new List<HeaderItem>(); HeaderItem headerItem = new HeaderItem() { Name = "ID", DisplayName = "ID", DataType = "Int64" }; headerItems.Add(headerItem); ViewData["Id"] = headerItem; headerItem = new HeaderItem() { Name = "Title", DisplayName = "Title", DataType = "String" }; headerItems.Add(headerItem); headerItem = new HeaderItem() { Name = "Description", DisplayName = "Description", DataType = "String" }; headerItems.Add(headerItem); headerItem = new HeaderItem() { Name = "View", DisplayName = "View", DataType = "String" }; headerItems.Add(headerItem); headerItem = new HeaderItem() { Name = "Update", DisplayName = "Update", DataType = "String" }; headerItems.Add(headerItem); headerItem = new HeaderItem() { Name = "Delete", DisplayName = "Delete", DataType = "String" }; headerItems.Add(headerItem); headerItem = new HeaderItem() { Name = "Download", DisplayName = "Download", DataType = "String" }; headerItems.Add(headerItem); headerItem = new HeaderItem() { Name = "Grant", DisplayName = "Grant", DataType = "String" }; headerItems.Add(headerItem); ViewData["DefaultHeaderList"] = headerItems; #endregion model = CreateDataTable(headerItems); DatasetManager datasetManager = new DatasetManager(); PermissionManager permissionManager = new PermissionManager(); SubjectManager subjectManager = new SubjectManager(); List<long> gridCommands = datasetManager.GetDatasetLatestIds(); gridCommands.Skip(Convert.ToInt16(ViewData["CurrentPage"])).Take(Convert.ToInt16(ViewData["PageSize"])); foreach (long datasetId in gridCommands) { //get permissions List<int> rights = permissionManager.GetAllRights(subjectManager.GetUserByName(GetUsernameOrDefault()).Id, 1, datasetId).ToList(); if (rights.Count > 0) { DataRow dataRow = model.NewRow(); Object[] rowArray = new Object[8]; if (datasetManager.IsDatasetCheckedIn(datasetId)) { DatasetVersion dsv = datasetManager.GetDatasetLatestVersion(datasetId); MetadataStructureManager msm = new MetadataStructureManager(); dsv.Dataset.MetadataStructure = msm.Repo.Get(dsv.Dataset.MetadataStructure.Id); string title = XmlDatasetHelper.GetInformation(dsv, NameAttributeValues.title); string description = XmlDatasetHelper.GetInformation(dsv, NameAttributeValues.description); rowArray[0] = Convert.ToInt64(datasetId); rowArray[1] = title; rowArray[2] = description; } else { rowArray[0] = Convert.ToInt64(datasetId); rowArray[1] = ""; rowArray[2] = "Dataset is just in processing."; } if (rights.Contains(1)) { rowArray[3] = "✔"; } else { rowArray[3] = "✘"; } if (rights.Contains(2)) { rowArray[4] = "✔"; } else { rowArray[4] = "✘"; } if (rights.Contains(3)) { rowArray[5] = "✔"; } else { rowArray[5] = "✘"; } if (rights.Contains(4)) { rowArray[6] = "✔"; } else { rowArray[6] = "✘"; } if (rights.Contains(5)) { rowArray[7] = "✔"; } else { rowArray[7] = "✘"; } dataRow = model.NewRow(); dataRow.ItemArray = rowArray; model.Rows.Add(dataRow); } } return View(new GridModel(model)); }
/// <summary> /// Submit a Dataset based on the imformations /// in the CreateTaskManager /// </summary> public long SubmitDataset() { #region create dataset TaskManager = (CreateTaskmanager)Session["CreateDatasetTaskmanager"]; if (TaskManager.Bus.ContainsKey(CreateTaskmanager.DATASTRUCTURE_ID) && TaskManager.Bus.ContainsKey(CreateTaskmanager.RESEARCHPLAN_ID) && TaskManager.Bus.ContainsKey(CreateTaskmanager.METADATASTRUCTURE_ID)) { DatasetManager dm = new DatasetManager(); long datasetId = 0; // for e new dataset if (!TaskManager.Bus.ContainsKey(CreateTaskmanager.ENTITY_ID)) { long datastructureId = Convert.ToInt64(TaskManager.Bus[CreateTaskmanager.DATASTRUCTURE_ID]); long researchPlanId = Convert.ToInt64(TaskManager.Bus[CreateTaskmanager.RESEARCHPLAN_ID]); long metadataStructureId = Convert.ToInt64(TaskManager.Bus[CreateTaskmanager.METADATASTRUCTURE_ID]); DataStructureManager dsm = new DataStructureManager(); DataStructure dataStructure = dsm.StructuredDataStructureRepo.Get(datastructureId); //if datastructure is not a structured one if (dataStructure == null) dataStructure = dsm.UnStructuredDataStructureRepo.Get(datastructureId); ResearchPlanManager rpm = new ResearchPlanManager(); ResearchPlan rp = rpm.Repo.Get(researchPlanId); MetadataStructureManager msm = new MetadataStructureManager(); MetadataStructure metadataStructure = msm.Repo.Get(metadataStructureId); var ds = dm.CreateEmptyDataset(dataStructure, rp, metadataStructure); datasetId = ds.Id; // add security if (GetUsernameOrDefault() != "DEFAULT") { PermissionManager pm = new PermissionManager(); SubjectManager sm = new SubjectManager(); BExIS.Security.Entities.Subjects.User user = sm.GetUserByName(GetUsernameOrDefault()); foreach (RightType rightType in Enum.GetValues(typeof(RightType)).Cast<RightType>()) { pm.CreateDataPermission(user.Id, 1, ds.Id, rightType); } } } else { datasetId = Convert.ToInt64(TaskManager.Bus[CreateTaskmanager.ENTITY_ID]); } TaskManager = (CreateTaskmanager)Session["CreateDatasetTaskmanager"]; if (dm.IsDatasetCheckedOutFor(datasetId, GetUsernameOrDefault()) || dm.CheckOutDataset(datasetId, GetUsernameOrDefault())) { DatasetVersion workingCopy = dm.GetDatasetWorkingCopy(datasetId); if (TaskManager.Bus.ContainsKey(CreateTaskmanager.METADATA_XML)) { XDocument xMetadata = (XDocument)TaskManager.Bus[CreateTaskmanager.METADATA_XML]; workingCopy.Metadata = XmlMetadataWriter.ToXmlDocument(xMetadata); } string title = XmlDatasetHelper.GetInformation(workingCopy, NameAttributeValues.title); if(String.IsNullOrEmpty(title)) title = "No Title available."; TaskManager.AddToBus(CreateTaskmanager.ENTITY_TITLE, title );//workingCopy.Metadata.SelectNodes("Metadata/Description/Description/Title/Title")[0].InnerText); TaskManager.AddToBus(CreateTaskmanager.ENTITY_ID, datasetId); dm.EditDatasetVersion(workingCopy, null, null, null); dm.CheckInDataset(datasetId, "Metadata was submited.", GetUsernameOrDefault()); //add to index // ToDo check which SearchProvider it is, default luceneprovider ISearchProvider provider = IoCFactory.Container.ResolveForSession<ISearchProvider>() as ISearchProvider; provider?.UpdateSingleDatasetIndex(datasetId, IndexingAction.CREATE); LoggerFactory.LogData(datasetId.ToString(), typeof(Dataset).Name, Vaiona.Entities.Logging.CrudState.Created); } return datasetId; } #endregion return -1; }
public List<ListViewItem> LoadDatasetViewList() { PermissionManager pm = new PermissionManager(); SubjectManager subjectManager = new SubjectManager(); DatasetManager datasetManager = new DatasetManager(); List<ListViewItem> temp = new List<ListViewItem>(); //get all datasetsid where the current userer has access to long userid = -1; if (subjectManager.ExistsUsername(GetUsernameOrDefault())) userid = subjectManager.GetUserByName(GetUsernameOrDefault()).Id; if (userid != -1) { foreach (long id in pm.GetAllDataIds(userid, 1, RightType.Update)) { if (datasetManager.IsDatasetCheckedIn(id)) { string title = XmlDatasetHelper.GetInformation(id, NameAttributeValues.title); string description = XmlDatasetHelper.GetInformation(id, NameAttributeValues.description); temp.Add(new ListViewItem(id, title, description)); } } } return temp.OrderBy(p => p.Title).ToList(); }
public string TransferRoles() { SecurityMigration securityMigration = new SecurityMigration(); List<string> roles = securityMigration.GetBexisRoles(DataBase); SubjectManager subjectManager = new SubjectManager(); int newGroups = 0; foreach (string role in roles) { string roleName = role; if (role.IndexOf('_') == 0) roleName = role.Substring(1, role.Length - 1); if (subjectManager.GetGroupByName(roleName) == null) { newGroups++; subjectManager.CreateGroup(roleName, roleName); List<string> usersInRole = securityMigration.GetBexisUsersInRole(DataBase, roleName); foreach (string userName in usersInRole) { if (subjectManager.GetUserByName(userName) != null) subjectManager.AddUserToGroup(userName, roleName); } } } return "Groups was successfully transfered and old bexis users added to them"; }