public override void ProcessActivity(WebRequest request, WebResponse response) { var roleEntity = UMC.Data.Database.Instance().ObjectEntity <UMC.Data.Entities.Role>(); var RoleType = UMC.Web.UIDialog.AsyncDialog("Type", d => { if (roleEntity.Count() < 4) { return(Web.UIDialog.ReturnValue("User")); } var rd = new Web.UIRadioDialog() { Title = "选择设置账户类型" }; rd.Options.Add("角色", "Role"); rd.Options.Add("用户", "User"); return(rd); }); switch (RoleType) { case "Role": case "User": break; default: this.Wildcard(request, response, RoleType); return; } var setValue = UMC.Web.UIDialog.AsyncDialog("Value", d => { if (RoleType == "Role") { var rd = new Web.UIRadioDialog() { Title = "请选择设置权限的角色" }; roleEntity.Where.Reset().And().NotIn(new Data.Entities.Role { Rolename = UMC.Security.Membership.GuestRole }, UMC.Security.Membership.AdminRole); roleEntity.Query(dr => rd.Options.Add(dr.Rolename, dr.Rolename)); return(rd); } else { return(new UserDialog() { Title = "请选择设置权限的账户" }); } }); var wdcks = Web.WebServlet.Auths(); var ids = new List <String>(); Utility.Each(wdcks, g => ids.Add(g.Get("key"))); if (wdcks.Count == 0) { this.Prompt("现在的功能不需要设置权限"); } var wdks = new List <UMC.Data.Entity <UMC.Data.Entities.Wildcard, List <UMC.Security.Authorize> > >(); var wddEntity = UMC.Data.Database.Instance().ObjectEntity <UMC.Data.Entities.Wildcard>(); wddEntity.Where.And().In(new UMC.Data.Entities.Wildcard { WildcardKey = ids[0] }, ids.ToArray()).Entities.Query(dr => { wdks.Add(new Data.Entity <Data.Entities.Wildcard, List <Security.Authorize> >(dr, dr.Authorizes)); }); var Wildcard = Web.UIDialog.AsyncDialog("Wildcards", d => { var fmdg = new Web.UICheckboxDialog(); fmdg.Title = "权限设置"; fmdg.DefaultValue = "None"; foreach (var cm in wdcks) { var id = cm.Get("key");// String.Format("{0}.{1}.POS", cm.Command, cm.Model); var wdk = wdks.Find(w => String.Equals(w.Value.WildcardKey, id, StringComparison.CurrentCultureIgnoreCase)); if (wdk != null) { if (wdk.Config != null) { var isS = false; if (RoleType == "Role") { isS = wdk.Config.Exists(a => a.Type == Security.AuthorizeType.RoleDeny && String.Equals(a.Value, setValue, StringComparison.CurrentCultureIgnoreCase)); } else { isS = wdk.Config.Exists(a => a.Type == Security.AuthorizeType.UserDeny && String.Equals(a.Value, setValue, StringComparison.CurrentCultureIgnoreCase)); } fmdg.Options.Add(cm.Get("desc"), id, !isS); } else { fmdg.Options.Add(cm.Get("desc"), id, true); } } else { fmdg.Options.Add(cm.Get("desc"), id, true); } } return(fmdg); }); foreach (var cm in wdcks) { var id = cm.Get("key"); var wdk = wdks.Find(w => String.Equals(w.Value.WildcardKey, id, StringComparison.CurrentCultureIgnoreCase)); List <Security.Authorize> authorizes; if (wdk != null) { authorizes = wdk.Config; } else { authorizes = new List <Security.Authorize>(); } if (RoleType == "Role") { authorizes.RemoveAll(a => (a.Type == Security.AuthorizeType.RoleDeny || a.Type == Security.AuthorizeType.RoleAllow) && String.Equals(a.Value, setValue, StringComparison.CurrentCultureIgnoreCase)); } else { authorizes.RemoveAll(a => (a.Type == Security.AuthorizeType.UserAllow || a.Type == Security.AuthorizeType.UserDeny) && String.Equals(a.Value, setValue, StringComparison.CurrentCultureIgnoreCase)); } if (Wildcard.IndexOf(id) == -1) { if (RoleType == "Role") { authorizes.Add(new Security.Authorize { Value = setValue, Type = Security.AuthorizeType.RoleDeny }); } else { authorizes.Add(new Security.Authorize { Value = setValue, Type = Security.AuthorizeType.UserDeny }); } } var widcard = new UMC.Data.Entities.Wildcard { Authorizes = UMC.Data.JSON.Serialize(authorizes), WildcardKey = id, Description = cm.Get("desc") }; wddEntity.Where.Reset().And().Equal(new Data.Entities.Wildcard { WildcardKey = id }) .Entities.IFF(e => e.Count() == 0, e => e.Insert(widcard), e => e.Update(widcard)); } this.Prompt("权限设置成功"); }
public override void ProcessActivity(WebRequest request, WebResponse response) { var strUser = Web.UIDialog.AsyncDialog("Id", d => { var dlg = new UserDialog(); dlg.IsSearch = true; dlg.IsPage = true; if (request.IsMaster) { dlg.Menu("创建", "Settings", "User", Guid.Empty.ToString()); } dlg.RefreshEvent = "Setting"; return(dlg); }); var userId = UMC.Data.Utility.Guid(strUser) ?? Guid.Empty; if (request.IsMaster == false) { this.Prompt("只有管理员才能管理账户"); } var userEntity = UMC.Data.Database.Instance().ObjectEntity <UMC.Data.Entities.User>(); var user = userEntity.Where.And().Equal(new Data.Entities.User { Id = userId }).Entities.Single() ?? new Data.Entities.User(); var isAliassetting = false; if (userId != Guid.Empty && user.Id.HasValue) { var setting = Web.UIDialog.AsyncDialog("Setting", d => { var frm = new Web.UIRadioDialog(); frm.Title = "用户操作"; frm.Options.Add("部门角色", "Setting"); frm.Options.Add("重置密码", "Passwrod"); frm.Options.Add("变更别名", "Alias"); if (Web.WebServlet.Auths().Count > 0) { frm.Options.Add("功能授权", "Wildcard"); } return(frm); }); switch (setting) { case "Setting": this.Setting(userId); break; case "Wildcard": response.Redirect("Settings", "Wildcard", new UMC.Web.WebMeta().Put("Type", "User", "Value", user.Username), true); break; case "Alias": isAliassetting = true; break; } } var users = this.AsyncDialog("User", d => { var opts = new Web.ListItemCollection(); var fmDg = new Web.UIFormDialog(); if (userId == Guid.Empty || user.Id.HasValue == false) { fmDg.Title = "添加新账户"; fmDg.AddText("账户名", "Username", String.Empty); fmDg.AddText("别名", "Alias", user.Alias); fmDg.AddPassword("密码", "Password", true); } else { if (isAliassetting) { fmDg.Title = "变更别名"; opts.Add("登录名", user.Username); fmDg.AddText("新别名", "Alias", user.Alias); } else { fmDg.Title = "重置密码"; opts.Add("别名", user.Alias); opts.Add("登录名", user.Username); fmDg.AddTextValue(opts); fmDg.AddPassword("密码", "Password", true); } } fmDg.Submit("确认提交", request, "Setting"); return(fmDg); }); if (userId == Guid.Empty || user.Id.HasValue == false) { if (userId == Guid.Empty) { userId = UMC.Security.Membership.Instance().CreateUser(users["Username"].Trim(), users["Password"] ?? Guid.NewGuid().ToString(), users["Alias"]); if (userId == Guid.Empty) { this.Prompt(String.Format("已经存在{0}用户名", users["Username"])); } else { UMC.Security.Membership.Instance().AddRole(users["Username"].Trim(), UMC.Security.Membership.UserRole); } } else { var uid = UMC.Security.Membership.Instance().CreateUser(userId, users["Username"].Trim(), users["Password"] ?? Guid.NewGuid().ToString(), users["Alias"]); if (uid == null) { this.Prompt(String.Format("已经存在{0}用户名", users["Username"])); } } this.Prompt("账户添加成功", false); this.Context.Send(new UMC.Web.WebMeta().Put("type", "Setting"), true); } else { if (users.ContainsKey("Password")) { UMC.Security.Membership.Instance().Password(user.Username, users["Password"]); this.Prompt(String.Format("{0}的密码已重置", user.Alias)); } else { UMC.Security.Membership.Instance().ChangeAlias(user.Username, users["Alias"]); this.Prompt(String.Format("{0}的别名已重置成{1}", user.Username, users["Alias"])); } this.Context.Send(new UMC.Web.WebMeta().Put("type", "Setting"), true); } }
public override void ProcessActivity(WebRequest request, WebResponse response) { if (request.IsCashier) { var user = UMC.Security.Identity.Current; var Id = UMC.Data.Utility.Guid(this.AsyncDialog("Id", g => { return(this.DialogValue(Guid.NewGuid().ToString())); })).Value; var entity = Utility.CMS.ObjectEntity <Subject>() .Where.And().Equal(new Subject { Id = Id }).Entities; var sm = entity.Single(); var Status = Data.Utility.IntParse(this.AsyncDialog("Status", g => { if (sm != null) { var p = new Web.UIRadioDialog() { Title = "发布确认" }; p.Options.Add("不发布", "-1"); p.Options.Add("发布", "1"); return(p); } else { var p = new Web.UIRadioDialog() { Title = "评论隐藏" }; p.Options.Add("隐藏", "-1"); p.Options.Add("显示", "1"); return(p); } }), 0); if (sm != null) { if (Status > 0) { entity.Update(new Subject { Status = Status, ReleaseDate = DateTime.Now, IsDraught = false }); } else { entity.Update(new Subject { Status = Status }); } } else { Utility.CMS.ObjectEntity <UMC.Data.Entities.Comment>() .Where.And().Equal(new Comment { Id = Id }).Entities.Update(new Comment { Visible = Status }); } this.Prompt("设置成功"); } }