public bool Check(string permissionId) { string areaName = this.ControllerContext.RouteData.GetAreaName(); string controllerName = this.GetType().Name.Replace("Controller", ""); return(PermissionMgr.HasCommand(areaName, controllerName, permissionId)); }
/// <summary> /// 把孩子块生成控件并加入到 Regions 中。 /// </summary> /// <param name="children"></param> /// <param name="mainView"></param> /// <param name="regions"></param> private void ChildrenToRegions(IList <AggtBlocks> children, LogicalView mainView, RegionContainer regions) { foreach (var child in children) { var childBlock = child.MainBlock as ChildBlock; if (this.NeedPermission && !PermissionMgr.CanShowBlock(this.PermissionModule, childBlock)) { continue; } //生成 childView LogicalView childView = this._viewFactory.CreateView(childBlock); childView.ChildBlock = childBlock; //子视图默认不显示,当选中某个父对象时,再重新计算其可见性。 childView.IsVisible = false; childView.Parent = mainView; //ChildView Commands Container this.CreateCommandsUI(childView, childBlock); //Child Control var childControl = this.GenerateCompoundControl(child, childView); //Region regions.AddChildren(childBlock.Label, childControl); this.OnChildUICreated(childControl); } }
private void CreateCommandsUI(LogicalView view, Block block) { if (view == null) { throw new ArgumentNullException("view"); } if (block == null) { throw new ArgumentNullException("uiInfo"); } var commands = block.ViewMeta.AsWPFView().Commands.Where(c => c.IsVisible).ToList(); if (commands.Count > 0) { if (this.NeedPermission) { commands = commands.Where(c => PermissionMgr.HasCommand(this.PermissionModule, block, c.Name)).ToList(); } //Toolbar view.CommandsContainer = this.CreateCommandsContainer(); this._viewFactory.BlockUIFactory.AppendCommands( view.CommandsContainer, view, commands ); } }
// GET: Queries/Details/5 public ActionResult Details(int?id) { if (id == null) { return(BadRequest()); } Query query = db.Queries .Include(q => q.CreatedBy) .Include(q => q.LastEditedBy) .First(q => q.QueryID == id); var database = db.DatabaseConnections.FirstOrDefault(dc => dc.DatabaseConnectionID == query.DatabaseConnectionID); if (database == null) { return(NotFound()); } var userPermissions = db.UserDatabaseConnections .Where(uc => uc.ApplicationUserID == CurrentUser.Id) .ToList(); if (PermissionMgr.UserCanViewQuery(userPermissions, database) == false && database.OrganisationId != CurrentUser.OrganisationId) { return(NotFound()); } ViewBag.UserCanModifyQueries = PermissionMgr.UserCanModifyQuery(userPermissions, database) || database.OrganisationId == CurrentUser.OrganisationId; return(View(query)); }
// GET: DatabaseConnections/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(BadRequest()); } var database = db.DatabaseConnections.FirstOrDefault(dc => dc.DatabaseConnectionID == id.Value); if (database == null) { return(NotFound()); } var userPermissions = db.UserDatabaseConnections .Where(uc => uc.ApplicationUserID == CurrentUser.Id) .ToList(); if (PermissionMgr.UserCanModifyDatabase(userPermissions, database) == false && database.OrganisationId != CurrentUser.OrganisationId) { return(NotFound()); } ViewBag.hasExistingKeyFile = database.UseSshKey; var viewModel = new DatabaseConnectionViewModel(database); if (viewModel.SshPort == null) { viewModel.SshPort = 22; } return(View(viewModel)); }
public ActionResult DeleteConfirmed(int id) { Query query = db.Queries.Find(id); if (query == null) { return(NotFound()); } var database = db.DatabaseConnections.FirstOrDefault(dc => dc.DatabaseConnectionID == query.DatabaseConnectionID); if (database == null) { return(NotFound()); } var userPermissions = db.UserDatabaseConnections .Where(uc => uc.ApplicationUserID == CurrentUser.Id) .ToList(); if (PermissionMgr.UserCanModifyQuery(userPermissions, database) == false && database.OrganisationId != CurrentUser.OrganisationId) { return(NotFound()); } db.Queries.Remove(query); db.SaveChanges(); return(RedirectToAction("Details", "Home", new { id = database.DatabaseConnectionID })); }
public ActionResult Convert(int id) { Query dbQuery = db.Queries.Find(id); if (dbQuery == null || dbQuery.IsSimpleQuery == false) { return(NotFound()); } var database = db.DatabaseConnections.FirstOrDefault(dc => dc.DatabaseConnectionID == dbQuery.DatabaseConnectionID); var userPermissions = db.UserDatabaseConnections .Where(uc => uc.ApplicationUserID == CurrentUser.Id) .ToList(); if (database == null) { return(NotFound()); } if (PermissionMgr.UserCanModifyQuery(userPermissions, database) == false && database.OrganisationId != CurrentUser.OrganisationId) { return(NotFound()); } dbQuery.IsSimpleQuery = false; db.SaveChanges(); return(RedirectToAction("Edit", "Queries", new { id = id })); }
// GET: Simple/Edit/5 public ActionResult Edit(int id) { Query query = db.Queries.Find(id); if (query == null || query.IsSimpleQuery == false) { return(NotFound()); } var database = db.DatabaseConnections.FirstOrDefault(dc => dc.DatabaseConnectionID == query.DatabaseConnectionID); if (database == null) { return(NotFound()); } var userPermissions = db.UserDatabaseConnections .Where(uc => uc.ApplicationUserID == CurrentUser.Id) .ToList(); if (PermissionMgr.UserCanModifyQuery(userPermissions, database) == false && database.OrganisationId != CurrentUser.OrganisationId) { return(NotFound()); } ViewBag.DatabaseConnectionID = database.DatabaseConnectionID; ViewBag.DatabaseName = database.Name; return(View(query)); }
public ActionResult DeleteConfirmed(int id) { DatabaseConnection database = db.DatabaseConnections.Find(id); if (database == null) { return(NotFound()); } var userPermissions = db.UserDatabaseConnections .Where(uc => uc.ApplicationUserID == CurrentUser.Id) .ToList(); if (PermissionMgr.UserCanDeleteDatabase(userPermissions, database) == false && database.OrganisationId != CurrentUser.OrganisationId) { return(NotFound()); } DeleteSecureInformation(database); db.DatabaseConnections.Remove(database); db.UserDatabaseConnections.RemoveWhere(uc => uc.DatabaseConnectionID == id); db.SaveChanges(); return(RedirectToAction("Index")); }
// GET: DatabaseConnections/Delete/5 public ActionResult Delete(int?id) { if (id == null) { return(BadRequest()); } DatabaseConnection database = db.DatabaseConnections.Find(id); if (database == null) { return(NotFound()); } var userPermissions = db.UserDatabaseConnections .Where(uc => uc.ApplicationUserID == CurrentUser.Id) .ToList(); if (PermissionMgr.UserCanDeleteDatabase(userPermissions, database) == false && database.OrganisationId != CurrentUser.OrganisationId) { return(NotFound()); } return(View(database)); }
// GET: Queries/Delete/5 public ActionResult Delete(int?id) { if (id == null) { return(BadRequest()); } Query query = db.Queries.Find(id.Value); if (query == null) { return(NotFound()); } var database = db.DatabaseConnections.FirstOrDefault(dc => dc.DatabaseConnectionID == query.DatabaseConnectionID); if (database == null) { return(NotFound()); } var userPermissions = db.UserDatabaseConnections .Where(uc => uc.ApplicationUserID == CurrentUser.Id) .ToList(); if (PermissionMgr.UserCanModifyQuery(userPermissions, database) == false && database.OrganisationId != CurrentUser.OrganisationId) { return(NotFound()); } return(View(query)); }
public override void OnActionExecuting(ActionExecutingContext filterContext) { //UIShell.RbacManagementPlugin/Users/List //{pluginName}/{controller}/{action} string pluginName = filterContext.RouteData.GetAreaName(); string controller = filterContext.RouteData.GetRequiredString("controller"); string action = filterContext.RouteData.GetRequiredString("action"); if (string.IsNullOrWhiteSpace(Name)) { Name = action; } bool hasPermission = false; hasPermission = PermissionMgr.HasCommand(pluginName, controller, Name); if (hasPermission) { base.OnActionExecuting(filterContext); } else { filterContext.Result = new ViewResult { ViewName = NoPermissionView }; } }
private bool CanUserAccessDatabase(DatabaseConnection connection) { var userPermissions = db.UserDatabaseConnections .Where(uc => uc.ApplicationUserID == CurrentUser.Id) .ToList(); if (PermissionMgr.UserCanViewDatabase(userPermissions, connection) == false && connection.OrganisationId != CurrentUser.OrganisationId) { return(false); } return(true); }
/// <summary> /// 打开某个模块。 /// /// 如果没有权限打开该模块,则弹出提示框。 /// </summary> /// <param name="module"></param> /// <returns></returns> public WorkspaceWindow OpenModuleOrAlert(WPFModuleMeta module) { if (!PermissionMgr.CanShowModule(module)) { App.MessageBox.Show(string.Format( "对不起,此功能需要 [ {0} ] 模块权限,您不具备此权限,如有需要,请与系统管理员联系!".Translate(), module.Label.Translate() )); return(null); } return(this.OpenModule(module)); }
public override void Execute(QueryLogicalView view) { var moduleMeta = CommonModel.Modules[typeof(ProductCategory)] as WPFModuleMeta; if (PermissionMgr.CanShowModule(moduleMeta)) { var page = App.Current.CreateModule(moduleMeta); var btn = App.Windows.ShowDialog(page.WindowControl, w => { w.Title = "维护分类".Translate(); }); if (btn == WindowButton.Yes) { view.Commands[typeof(RefreshProductNavigation)].TryExecute(); } } }
public ActionResult Edit(Query query) { Query dbQuery = db.Queries.Find(query.QueryID); if (dbQuery == null || dbQuery.IsSimpleQuery == false) { return(NotFound()); } var database = db.DatabaseConnections.FirstOrDefault(dc => dc.DatabaseConnectionID == dbQuery.DatabaseConnectionID); var userPermissions = db.UserDatabaseConnections .Where(uc => uc.ApplicationUserID == CurrentUser.Id) .ToList(); if (database == null) { return(NotFound()); } if (PermissionMgr.UserCanModifyQuery(userPermissions, database) == false && database.OrganisationId != CurrentUser.OrganisationId) { return(NotFound()); } if (ModelState.IsValid) { dbQuery.Name = query.Name; dbQuery.LastEditedBy = CurrentUser; dbQuery.LastEditedOn = DateTime.Now; dbQuery.QueryDefinition = query.QueryDefinition; dbQuery.Description = query.Description; db.Queries.Update(dbQuery); db.SaveChanges(); return(RedirectToAction("Details", "Queries", new { id = query.QueryID })); } ViewBag.DatabaseConnectionID = database.DatabaseConnectionID; ViewBag.DatabaseName = database.Name; return(View(query)); }
public ActionResult Create(Query query) { var database = db.DatabaseConnections.FirstOrDefault(dc => dc.DatabaseConnectionID == query.DatabaseConnectionID); if (database == null) { return(NotFound()); } var userPermissions = db.UserDatabaseConnections .Where(uc => uc.ApplicationUserID == CurrentUser.Id) .ToList(); if (PermissionMgr.UserCanModifyQuery(userPermissions, database) == false && database.OrganisationId != CurrentUser.OrganisationId) { return(NotFound()); } //TODO: MUST CHANGE //if (ModelState.IsValid) // { query.CreatedBy = CurrentUser; query.LastEditedBy = CurrentUser; query.CreatedOn = DateTime.Now; query.LastEditedOn = DateTime.Now; query.IsSimpleQuery = true; db.Queries.Add(query); db.SaveChanges(); return(RedirectToAction("Details", "Queries", new { id = query.QueryID })); //} ViewBag.DatabaseConnectionID = database.DatabaseConnectionID; ViewBag.DatabaseName = database.Name; return(View(query)); }
// GET: Queries/Create public ActionResult Create(int connectionId = 0) { var database = db.DatabaseConnections.FirstOrDefault(dc => dc.DatabaseConnectionID == connectionId); if (database == null) { return(NotFound()); } var userPermissions = db.UserDatabaseConnections .Where(uc => uc.ApplicationUserID == CurrentUser.Id) .ToList(); if (PermissionMgr.UserCanModifyQuery(userPermissions, database) == false && database.OrganisationId != CurrentUser.OrganisationId) { return(NotFound()); } ViewBag.DatabaseConnectionID = connectionId; ViewBag.DatabaseName = database.Name; return(View()); }
// GET: Queries/Create public ActionResult Create(int connectionId) { var database = db.DatabaseConnections.FirstOrDefault(dc => dc.DatabaseConnectionID == connectionId); if (database == null) { return(NotFound()); } var userPermissions = db.UserDatabaseConnections .Where(uc => uc.ApplicationUserID == CurrentUser.Id) .ToList(); if (PermissionMgr.UserCanModifyQuery(userPermissions, database) == false && database.OrganisationId != CurrentUser.OrganisationId) { return(NotFound()); } ViewBag.DatabaseConnectionID = connectionId; ViewBag.DatabaseName = database.Name; int i = 1; Query viewModel = new Query { DatabaseConnectionID = connectionId, Name = "Report " + i++ }; var existingQueries = db.Queries.Where(q => q.DatabaseConnectionID == connectionId).ToList(); while (existingQueries.Any(q => string.Compare(q.Name, viewModel.Name, true) == 0)) { viewModel.Name = "Report " + i++; } return(View(viewModel)); }
// GET: DatabaseConnections/Details/5 public ActionResult Details(int id) { var database = db.DatabaseConnections.FirstOrDefault(dc => dc.DatabaseConnectionID == id); if (database == null) { return(NotFound()); } var userPermissions = db.UserDatabaseConnections .Where(uc => uc.ApplicationUserID == CurrentUser.Id) .ToList(); if (PermissionMgr.UserCanViewDatabase(userPermissions, database) == false && database.OrganisationId != CurrentUser.OrganisationId) { return(NotFound()); } ViewBag.UserIsOrganisationAdmin = database.OrganisationId == CurrentUser.OrganisationId; ViewBag.UserCanModifyQueries = PermissionMgr.UserCanModifyQuery(userPermissions, database) || database.OrganisationId == CurrentUser.OrganisationId; ViewBag.UserCanModifyDatabase = PermissionMgr.UserCanModifyDatabase(userPermissions, database) || database.OrganisationId == CurrentUser.OrganisationId; ViewBag.UserCanManageDatabaseAccess = PermissionMgr.UserCanManageDatabaseAccess(userPermissions, database) || database.OrganisationId == CurrentUser.OrganisationId; ViewBag.UserCanDeleteDatabase = PermissionMgr.UserCanDeleteDatabase(userPermissions, database) || database.OrganisationId == CurrentUser.OrganisationId; var viewModel = new DatabaseConnectionDetailsViewModel { DatabaseConnectionID = database.DatabaseConnectionID, Name = database.Name, Type = database.Type, Server = database.Server, Port = database.Port, Username = database.Username, DatabaseName = database.DatabaseName, Description = database.Description, UseSsh = database.UseSsh, SshServer = database.SshServer, SshPort = database.SshPort, SshUsername = database.SshUsername, AccessUsers = new List <UserDatabaseConnection>() }; List <DatabaseConnectionQueriesDetailsViewModel> viewQueries = new List <DatabaseConnectionQueriesDetailsViewModel>(); var queries = db.Queries .Include(q => q.CreatedBy) .Include(q => q.LastEditedBy) .Where(q => q.DatabaseConnectionID == database.DatabaseConnectionID); foreach (var query in queries) { DatabaseConnectionQueriesDetailsViewModel queryView = new DatabaseConnectionQueriesDetailsViewModel(); queryView.QueryID = query.QueryID; queryView.Name = query.Name; queryView.Description = query.Description; queryView.IsSimpleQuery = query.IsSimpleQuery; queryView.CreatedBy = query.CreatedBy; queryView.CreatedOn = query.CreatedOn; queryView.LastEditedBy = query.LastEditedBy; queryView.LastEditedOn = query.LastEditedOn; viewQueries.Add(queryView); } viewModel.SavedQueries = viewQueries.OrderByDescending(q => q.LastEditedOn); if (database.Organisation != null) { viewModel.OrganisationName = database.Organisation.OrganisationName; } else { viewModel.OrganisationName = "None"; } if (ViewBag.UserCanModifyDatabase) { // Don't allow users to manage themselves, things get strange very quickly var accessUsers = db.UserDatabaseConnections .Where(u => u.DatabaseConnection.DatabaseConnectionID == database.DatabaseConnectionID && u.ApplicationUserID != CurrentUser.Id) .ToList(); foreach (var accessUser in accessUsers) { viewModel.AccessUsers.Add(new UserDatabaseConnection { UserDatabaseConnectionID = accessUser.UserDatabaseConnectionID, DatabaseConnectionID = accessUser.DatabaseConnectionID, ApplicationUser = accessUser.ApplicationUser, Type = accessUser.Type, CreatedBy = accessUser.CreatedBy, CreatedOn = accessUser.CreatedOn, InviteEmail = accessUser.InviteEmail, }); } } return(View(viewModel)); }