/// <summary> /// Add A Custom User /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnAddCustomRole_Click(object sender, EventArgs e) { var r = new Role(); if (RuntimeMongoDbContext.GetCurrentDataBase() != null) { r.Database = RuntimeMongoDbContext.GetCurrentDataBase().Name; } else { r.Database = ConstMgr.DatabaseNameAdmin; } r.Rolename = txtRolename.Text; r.Privileges = new Role.Privilege[_privilegeList.Count]; for (var i = 0; i < _privilegeList.Count; i++) { r.Privileges[i] = _privilegeList[i]; } r.Roles = new Role.GrantRole[_roleList.Count]; for (var i = 0; i < _roleList.Count; i++) { r.Roles[i] = _roleList[i]; } //这个时候可能没有GetCurrentDataBase,如果是Admin var result = DataBaseCommand.createRole(RuntimeMongoDbContext.GetCurrentServer().GetDatabase(r.Database), r); if (result.Ok) { MyMessageBox.ShowEasyMessage("Succeed", "Add Role OK"); } else { MyMessageBox.ShowMessage("Error", "Add Role Error", result.Response.ToString()); } }
/// <summary> /// Add A Custom User /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnAddRole_Click(object sender, EventArgs e) { var r = new Role(); if (RuntimeMongoDbContext.GetCurrentDataBase() != null) { r.Database = RuntimeMongoDbContext.GetCurrentDataBase().Name; } else { r.Database = ConstMgr.DatabaseNameAdmin; } r.Rolename = txtRolename.Text; r.Privileges = new Role.Privilege[_privilegeList.Count]; for (var i = 0; i < _privilegeList.Count; i++) { r.Privileges[i] = _privilegeList[i]; } r.Roles = new Role.GrantRole[_roleList.Count]; for (var i = 0; i < _roleList.Count; i++) { r.Roles[i] = _roleList[i]; } var result = Role.AddRole(RuntimeMongoDbContext.GetCurrentDataBase(), r); if (result.IsBsonDocument) { MyMessageBox.ShowMessage("Error", "Add Role Error", ViewHelper.ConvertToString(result)); } else { MyMessageBox.ShowEasyMessage("Succeed", "Add Role OK"); } }
/// <summary> /// 添加一个用户自定义角色 /// </summary> public static BsonValue AddRole(MongoDatabase mongoDb, Role role) { var roleCommand = string.Empty; var doc = new EvalArgs(); roleCommand = "db.createRole(" + Environment.NewLine; roleCommand += "{" + Environment.NewLine; roleCommand += " role: '" + role.Rolename + "'," + Environment.NewLine; //Roles roleCommand += " roles:" + Environment.NewLine; roleCommand += " ["; for (var i = 0; i < role.Roles.Length; i++) { var singleroles = role.Roles[i]; roleCommand += "{ role: '" + singleroles.MRole + "', db: '" + singleroles.Db + "' }" + (i == role.Roles.Length - 1 ? "" : ",") + Environment.NewLine; } roleCommand += " ],"; //privileges roleCommand += " privileges:" + Environment.NewLine; roleCommand += " ["; for (var i = 0; i < role.Privileges.Length; i++) { var singleprivileges = role.Privileges[i]; roleCommand += "{" + singleprivileges.Resource.GetJsCode() + "," + MongoDbAction.GetActionListJs(singleprivileges.Actions) + "}" + (i == role.Privileges.Length - 1 ? "" : ",") + Environment.NewLine; } roleCommand += " ],"; // roleCommand += "}" + Environment.NewLine; roleCommand += ")"; doc.Code = roleCommand; BsonValue result; try { result = mongoDb.Eval(doc); } catch (MongoCommandException ex) { result = ex.Result; } return result; }
/// <summary> /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnAddRoleToDB_Click(object sender, EventArgs e) { var r = new Role(); r.rolename = "tester" + DateTime.Now.ToString("yyyyMMddHHmmss"); r.database = "admin"; r.roles = new Role.GrantRole[1]; r.roles[0] = new Role.GrantRole {db = "admin", mRole = "read"}; r.privileges = new Role.privilege[1]; r.privileges[0] = new Role.privilege { actions = new MongoDBAction.ActionType[1] {MongoDBAction.ActionType.DatabaseManagementActions_createCollection}, resource = new Resource {CollectionName = "", DataBaseName = "admin", Type = Resource.ResourceType.DataBase} }; var doc = Role.AddRole(SystemManager.GetCurrentServer().GetDatabase("admin"), r); if (doc.IsBsonDocument) UIHelper.FillDataToTreeView("myClusterwideAdmin", treeViewColumns1, doc.AsBsonDocument); }
/// <summary> /// 添加自定义角色 /// </summary> public static CommandResult createRole(MongoDatabase mongoDb, Role role) { var mongoCmd = new CommandDocument("createRole", role.Rolename); var privileges = new BsonArray(); privileges.AddRange(role.Privileges.Select(x => x.AsBsonDocument())); mongoCmd.Add("privileges", privileges); var roles = new BsonArray(); roles.AddRange(role.Roles.Select(x => x.AsBsonValue())); mongoCmd.Add("roles", roles); return ExecuteMongoDBCommand(mongoCmd, mongoDb); }