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("权限设置成功");
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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("设置成功");
            }
        }