コード例 #1
0
        public async Task <IActionResult> BatchDelete(string[] ids)
        {
            var vm = KnifeVirgo.CreateVM <FrameworkGroupBatchVM>();

            if (ids != null && ids.Length > 0)
            {
                vm.Ids = ids;
            }
            else
            {
                return(Ok());
            }
            if (!ModelState.IsValid || !vm.DoBatchDelete())
            {
                return(BadRequest(ModelState.GetErrorJson()));
            }
            else
            {
                List <Guid?> groupids = new List <Guid?>();
                foreach (var item in vm?.Ids)
                {
                    groupids.Add(Guid.Parse(item));
                }
                var userids = KnifeVirgo.DC.Set <FrameworkUserGroup>().Where(x => groupids.Contains(x.GroupId)).Select(x => x.UserId.ToString()).ToArray();
                await KnifeVirgo.RemoveUserCache(userids);

                return(Ok(ids.Length));
            }
        }
コード例 #2
0
        public string Search(DataPrivilegeSearcher searcher)
        {
            var vm = KnifeVirgo.CreateVM <DataPrivilegeListVM>();

            vm.Searcher = searcher;
            return(vm.GetJson());
        }
コード例 #3
0
        public override async Task  DoDeleteAsync()
        {
            List <Guid> oldIDs = null;

            if (DpType == DpTypeEnum.User)
            {
                oldIDs = DC.Set <DataPrivilege>().Where(x => x.UserId == Entity.UserId && x.TableName == this.Entity.TableName).Select(x => x.ID).ToList();
            }
            else
            {
                oldIDs = DC.Set <DataPrivilege>().Where(x => x.GroupId == Entity.GroupId && x.TableName == this.Entity.TableName).Select(x => x.ID).ToList();
            }
            foreach (var oldid in oldIDs)
            {
                DataPrivilege dp = new DataPrivilege {
                    ID = oldid
                };
                DC.Set <DataPrivilege>().Attach(dp);
                DC.DeleteEntity(dp);
            }
            await DC.SaveChangesAsync();

            if (DpType == DpTypeEnum.User)
            {
                await KnifeVirgo.RemoveUserCache(Entity.UserId.ToString());
            }
            else
            {
                var userids = DC.Set <FrameworkUserGroup>().Where(x => x.GroupId == Entity.GroupId).Select(x => x.UserId.ToString()).ToArray();
                await KnifeVirgo.RemoveUserCache(userids);
            }
        }
コード例 #4
0
        public string Search(FrameworkGroupSearcher searcher)
        {
            var vm = KnifeVirgo.CreateVM <FrameworkGroupListVM>();

            vm.Searcher = searcher;
            return(vm.GetJson());
        }
コード例 #5
0
        public IActionResult GetModelFields(string modelName)
        {
            var vm  = KnifeVirgo.CreateVM <VGenCodeVM>();
            var res = vm.GetFieldInfos(modelName);

            return(Ok(res));
        }
コード例 #6
0
        public async Task <bool> DoChangeAsync()
        {
            var         all            = FC.Where(x => x.Key.StartsWith("menu_")).ToList();
            List <Guid> AllowedMenuIds = all.Where(x => x.Value.ToString() == "1").Select(x => Guid.Parse(x.Key.Replace("menu_", ""))).ToList();
            var         torem          = AllowedMenuIds.Distinct();
            var         oldIDs         = DC.Set <FunctionPrivilege>().Where(x => x.RoleId == Entity.ID).Select(x => x.ID).ToList();

            foreach (var oldid in oldIDs)
            {
                FunctionPrivilege fp = new FunctionPrivilege {
                    ID = oldid
                };
                DC.Set <FunctionPrivilege>().Attach(fp);
                DC.DeleteEntity(fp);
            }
            foreach (var menuid in AllowedMenuIds)
            {
                FunctionPrivilege fp = new FunctionPrivilege();
                fp.MenuItemId = menuid;
                fp.RoleId     = Entity.ID;
                fp.UserId     = null;
                fp.Allowed    = true;
                DC.Set <FunctionPrivilege>().Add(fp);
            }
            await DC.SaveChangesAsync();

            var userids = DC.Set <FrameworkUserRole>().Where(x => x.RoleId == Entity.ID).Select(x => x.UserId.ToString()).ToArray();
            await KnifeVirgo.RemoveUserCache(userids);

            return(true);
        }
コード例 #7
0
        public IActionResult ExportExcel(FrameworkGroupSearcher searcher)
        {
            var vm = KnifeVirgo.CreateVM <FrameworkGroupListVM>();

            vm.Searcher     = searcher;
            vm.SearcherMode = ListVMSearchModeEnum.Export;
            return(vm.GetExportData());
        }
コード例 #8
0
        public async Task <ActionResult> RefreshMenu()
        {
            KnifeVirgo.Cache.Delete("FFMenus");
            var userids = KnifeVirgo.DC.Set <FrameworkUserBase>().Select(x => x.ID.ToString().ToLower()).ToArray();
            await KnifeVirgo.RemoveUserCache(userids);

            return(Ok(Localizer["OprationSuccess"]));
        }
コード例 #9
0
        public IActionResult GenerateCodes([FromBody] VGenCodeModel model)
        {
            var vm = KnifeVirgo.CreateVM <VGenCodeVM>();

            vm.CodeModel = model;
            string res = vm.GenTemplates();

            return(Ok(res));
        }
コード例 #10
0
        public IActionResult ExportExcelByIds(string[] ids)
        {
            var vm = KnifeVirgo.CreateVM <FrameworkGroupListVM>();

            if (ids != null && ids.Length > 0)
            {
                vm.Ids          = new List <string>(ids);
                vm.SearcherMode = ListVMSearchModeEnum.CheckExport;
            }
            return(vm.GetExportData());
        }
コード例 #11
0
 public IActionResult Search(ActionLogSearcher searcher)
 {
     if (ModelState.IsValid)
     {
         var vm = KnifeVirgo.CreateVM <ActionLogListVM>(passInit: true);
         vm.Searcher = searcher;
         return(Content(vm.GetJson()));
     }
     else
     {
         return(BadRequest(ModelState.GetErrorJson()));
     }
 }
コード例 #12
0
        public IActionResult GetExcelTemplate()
        {
            var vm = KnifeVirgo.CreateVM <FrameworkGroupImportVM>();
            var qs = new Dictionary <string, string>();

            foreach (var item in Request.Query.Keys)
            {
                qs.Add(item, Request.Query[item]);
            }
            vm.SetParms(qs);
            var data = vm.GenerateTemplate(out string fileName);

            return(File(data, "application/vnd.ms-excel", fileName));
        }
コード例 #13
0
        public DataPrivilegeVM Get(string TableName, Guid TargetId, DpTypeEnum DpType)
        {
            DataPrivilegeVM vm = null;

            if (DpType == DpTypeEnum.User)
            {
                vm            = KnifeVirgo.CreateVM <DataPrivilegeVM>(values: x => x.Entity.TableName == TableName && x.Entity.UserId == TargetId && x.DpType == DpType);
                vm.UserItCode = KnifeVirgo.DC.Set <FrameworkUserBase>().Where(x => x.ID == TargetId).Select(x => x.ITCode).FirstOrDefault();
            }
            else
            {
                vm = KnifeVirgo.CreateVM <DataPrivilegeVM>(values: x => x.Entity.TableName == TableName && x.Entity.GroupId == TargetId && x.DpType == DpType);
            }
            return(vm);
        }
コード例 #14
0
        public async Task <ActionResult> Delete(SimpleDpModel dp)
        {
            DataPrivilegeVM vm = null;

            if (dp.Type == DpTypeEnum.User)
            {
                vm = KnifeVirgo.CreateVM <DataPrivilegeVM>(values: x => x.Entity.TableName == dp.ModelName && x.Entity.UserId == dp.Id && x.DpType == dp.Type);
            }
            else
            {
                vm = KnifeVirgo.CreateVM <DataPrivilegeVM>(values: x => x.Entity.TableName == dp.ModelName && x.Entity.GroupId == dp.Id && x.DpType == dp.Type);
            }
            await vm.DoDeleteAsync();

            return(Ok(1));
        }
コード例 #15
0
        public async Task <bool> DoChangeAsync()
        {
            List <Guid> AllowedMenuIds = new List <Guid>();
            var         torem          = AllowedMenuIds.Distinct();

            foreach (var page in Pages)
            {
                if (page.Actions != null)
                {
                    foreach (var action in page.Actions)
                    {
                        if (AllowedMenuIds.Contains(action) == false)
                        {
                            AllowedMenuIds.Add(action);
                        }
                    }
                }
            }

            var oldIDs = DC.Set <FunctionPrivilege>().Where(x => x.RoleId == Entity.ID).Select(x => x.ID).ToList();

            foreach (var oldid in oldIDs)
            {
                FunctionPrivilege fp = new FunctionPrivilege {
                    ID = oldid
                };
                DC.Set <FunctionPrivilege>().Attach(fp);
                DC.DeleteEntity(fp);
            }
            foreach (var menuid in AllowedMenuIds)
            {
                FunctionPrivilege fp = new FunctionPrivilege();
                fp.MenuItemId = menuid;
                fp.RoleId     = Entity.ID;
                fp.UserId     = null;
                fp.Allowed    = true;
                DC.Set <FunctionPrivilege>().Add(fp);
            }
            await DC.SaveChangesAsync();

            var userids = DC.Set <FrameworkUserRole>().Where(x => x.RoleId == Entity.ID).Select(x => x.UserId.ToString()).ToArray();
            await KnifeVirgo.RemoveUserCache(userids);

            return(true);
        }
コード例 #16
0
        public IActionResult BatchDelete(string[] ids)
        {
            var vm = KnifeVirgo.CreateVM <ActionLogBatchVM>();

            if (ids != null && ids.Length > 0)
            {
                vm.Ids = ids;
            }
            else
            {
                return(Ok());
            }
            if (!ModelState.IsValid || !vm.DoBatchDelete())
            {
                return(BadRequest(ModelState.GetErrorJson()));
            }
            else
            {
                return(Ok(ids.Length));
            }
        }
コード例 #17
0
        public override async Task DoEditAsync(bool updateAllFields = false)
        {
            FC.TryAdd("Entity.UserRoles", 0);
            FC.TryAdd("Entity.UserGroups", 0);
            Entity.UserRoles  = new List <FrameworkUserRole>();
            Entity.UserGroups = new List <FrameworkUserGroup>();
            if (SelectedRolesIDs != null)
            {
                SelectedRolesIDs.ForEach(x => Entity.UserRoles.Add(new FrameworkUserRole {
                    ID = Guid.NewGuid(), UserId = Entity.ID, RoleId = x
                }));
            }
            if (SelectedGroupIDs != null)
            {
                SelectedGroupIDs.ForEach(x => Entity.UserGroups.Add(new FrameworkUserGroup {
                    ID = Guid.NewGuid(), UserId = Entity.ID, GroupId = x
                }));
            }
            await base.DoEditAsync(updateAllFields);

            await KnifeVirgo.RemoveUserCache(Entity.ID.ToString());
        }
コード例 #18
0
        public FrameworkGroupVM Get(Guid id)
        {
            var vm = KnifeVirgo.CreateVM <FrameworkGroupVM>(id);

            return(vm);
        }
コード例 #19
0
        public FrameworkMenuVM2 Get(Guid id)
        {
            var vm = KnifeVirgo.CreateVM <FrameworkMenuVM2>(id);

            return(vm);
        }
コード例 #20
0
        public override async Task DoEditAsync(bool updateAllFields = false)
        {
            List <Guid> oldIDs = null;

            if (DpType == DpTypeEnum.User)
            {
                oldIDs = DC.Set <DataPrivilege>().Where(x => x.UserId == Entity.UserId && x.TableName == this.Entity.TableName).Select(x => x.ID).ToList();
            }
            else
            {
                oldIDs = DC.Set <DataPrivilege>().Where(x => x.GroupId == Entity.GroupId && x.TableName == this.Entity.TableName).Select(x => x.ID).ToList();
            }
            foreach (var oldid in oldIDs)
            {
                DataPrivilege dp = new DataPrivilege {
                    ID = oldid
                };
                DC.Set <DataPrivilege>().Attach(dp);
                DC.DeleteEntity(dp);
            }
            if (IsAll == true)
            {
                if (DpType == DpTypeEnum.User)
                {
                    DataPrivilege dp = new DataPrivilege();
                    dp.RelateId  = null;
                    dp.UserId    = Entity.UserId;
                    dp.TableName = this.Entity.TableName;
                    dp.DomainId  = this.Entity.DomainId;
                    DC.Set <DataPrivilege>().Add(dp);
                }
                else
                {
                    DataPrivilege dp = new DataPrivilege();
                    dp.RelateId  = null;
                    dp.GroupId   = Entity.GroupId;
                    dp.TableName = this.Entity.TableName;
                    dp.DomainId  = this.Entity.DomainId;
                    DC.Set <DataPrivilege>().Add(dp);
                }
            }
            else
            {
                if (SelectedItemsID != null)
                {
                    if (DpType == DpTypeEnum.User)
                    {
                        foreach (var id in SelectedItemsID)
                        {
                            DataPrivilege dp = new DataPrivilege();
                            dp.RelateId  = id;
                            dp.UserId    = Entity.UserId;
                            dp.TableName = this.Entity.TableName;
                            dp.DomainId  = this.Entity.DomainId;
                            DC.Set <DataPrivilege>().Add(dp);
                        }
                    }
                    else
                    {
                        foreach (var id in SelectedItemsID)
                        {
                            DataPrivilege dp = new DataPrivilege();
                            dp.RelateId  = id;
                            dp.GroupId   = Entity.GroupId;
                            dp.TableName = this.Entity.TableName;
                            dp.DomainId  = this.Entity.DomainId;
                            DC.Set <DataPrivilege>().Add(dp);
                        }
                    }
                }
            }
            await DC.SaveChangesAsync();

            if (DpType == DpTypeEnum.User)
            {
                await KnifeVirgo.RemoveUserCache(Entity.UserId.ToString());
            }
            else
            {
                var userids = DC.Set <FrameworkUserGroup>().Where(x => x.GroupId == Entity.GroupId).Select(x => x.UserId.ToString()).ToArray();
                await KnifeVirgo.RemoveUserCache(userids);
            }
        }
コード例 #21
0
        public override async Task DoDeleteAsync()
        {
            await base.DoDeleteAsync();

            await KnifeVirgo.RemoveUserCache(Entity.ID.ToString());
        }
コード例 #22
0
        public async Task <IActionResult> Login([FromForm] string userid, [FromForm] string password, [FromForm] bool rememberLogin = false, [FromForm] bool cookie = true)
        {
            var user = await KnifeVirgo.LoadUserFromDB(null, userid, password);

            //如果没有找到则输出错误
            if (user == null)
            {
                return(BadRequest(Localizer["LoginFailed"].Value));
            }
            KnifeVirgo.LoginUserInfo = user;

            if (cookie) // cookie auth
            {
                AuthenticationProperties properties = null;
                if (rememberLogin)
                {
                    properties = new AuthenticationProperties
                    {
                        IsPersistent = true,
                        ExpiresUtc   = DateTimeOffset.UtcNow.Add(TimeSpan.FromDays(30))
                    };
                }

                var principal = KnifeVirgo.LoginUserInfo.CreatePrincipal();
                // 在上面注册AddAuthentication时,指定了默认的Scheme,在这里便可以不再指定Scheme。
                await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, properties);

                List <SimpleMenu> ms     = new List <SimpleMenu>();
                LoginUserInfo     forapi = new LoginUserInfo();
                forapi.Id      = user.Id;
                forapi.ITCode  = user.ITCode;
                forapi.Name    = user.Name;
                forapi.Roles   = user.Roles;
                forapi.Groups  = user.Groups;
                forapi.PhotoId = user.PhotoId;
                var menus = KnifeVirgo.DC.Set <FunctionPrivilege>()
                            .Where(x => x.UserId == user.Id || (x.RoleId != null && user.Roles.Select(x => x.ID).Contains(x.RoleId.Value)))
                            .Select(x => x.MenuItem)
                            .Where(x => x.MethodName == null)
                            .OrderBy(x => x.DisplayOrder)
                            .Select(x => new SimpleMenu
                {
                    Id       = x.ID.ToString().ToLower(),
                    ParentId = x.ParentId.ToString().ToLower(),
                    Text     = x.PageName,
                    Url      = x.Url,
                    Icon     = x.ICon
                }).ToList();
                LocalizeMenu(menus);
                ms.AddRange(menus);

                List <string> urls = new List <string>();
                urls.AddRange(KnifeVirgo.DC.Set <FunctionPrivilege>()
                              .Where(x => x.UserId == user.Id || (x.RoleId != null && user.Roles.Select(x => x.ID).Contains(x.RoleId.Value)))
                              .Select(x => x.MenuItem)
                              .Where(x => x.MethodName != null)
                              .Select(x => x.Url)
                              );
                urls.AddRange(KnifeVirgo.GlobaInfo.AllModule.Where(x => x.IsApi == true).SelectMany(x => x.Actions).Where(x => (x.IgnorePrivillege == true || x.Module.IgnorePrivillege == true) && x.Url != null).Select(x => x.Url));
                forapi.Attributes = new Dictionary <string, object>();
                forapi.Attributes.Add("Menus", menus);
                forapi.Attributes.Add("Actions", urls);

                return(Ok(forapi));
            }
            else // jwt auth
            {
                // 在上面注册AddAuthentication时,指定了默认的Scheme,在这里便可以不再指定Scheme。
                await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,
                                              KnifeVirgo.LoginUserInfo.CreatePrincipal(),
                                              new AuthenticationProperties
                {
                    IsPersistent = true,
                    ExpiresUtc   = DateTimeOffset.UtcNow.Add(TimeSpan.FromDays(15))
                });

                var authService = HttpContext.RequestServices.GetService(typeof(ITokenService)) as ITokenService;

                var token = await authService.IssueTokenAsync(KnifeVirgo.LoginUserInfo);

                return(Content(JsonSerializer.Serialize(token), "application/json"));
            }
        }
コード例 #23
0
        public FrameworkRoleMDVM2 GetPageActions(Guid id)
        {
            var vm = KnifeVirgo.CreateVM <FrameworkRoleMDVM2>(id);

            return(vm);
        }
コード例 #24
0
        public string UnsetPages()
        {
            var vm = KnifeVirgo.CreateVM <FrameworkActionListVM>();

            return(vm.GetJson());
        }
コード例 #25
0
        public ActionLogVM Get(Guid id)
        {
            var vm = KnifeVirgo.CreateVM <ActionLogVM>(id);

            return(vm);
        }