protected override void InitVM()
        {
            TableNames = new List <ComboSelectListItem>();
            if (ControllerName.Contains("/api") == false)
            {
                AllGroups  = DC.Set <FrameworkGroup>().GetSelectListItems(Wtm, x => x.GroupName, x => x.GroupCode);
                TableNames = Wtm.DataPrivilegeSettings.ToListItems(x => x.PrivillegeName, x => x.ModelName);
            }
            SelectedItemsID = new List <string>();
            List <string> rids = null;

            if (DpType == DpTypeEnum.User)
            {
                rids = DC.Set <DataPrivilege>().Where(x => x.TableName == Entity.TableName && x.UserCode == Entity.UserCode).Select(x => x.RelateId).ToList();
            }
            else
            {
                rids = DC.Set <DataPrivilege>().Where(x => x.TableName == Entity.TableName && x.GroupCode == Entity.GroupCode).Select(x => x.RelateId).ToList();
            }
            if (rids.Contains(null))
            {
                IsAll = true;
            }
            else
            {
                SelectedItemsID.AddRange(rids.Select(x => x));
            }
        }
Exemple #2
0
        protected override void InitVM()
        {
            TableNames = new List <ComboSelectListItem>();
            if (ControllerName.Contains("WalkingTec.Mvvm.Mvc.Admin.Controllers"))
            {
                AllGroups  = DC.Set <FrameworkGroup>().GetSelectListItems(LoginUserInfo.DataPrivileges, null, x => x.GroupName);
                TableNames = ConfigInfo.DataPrivilegeSettings.ToListItems(x => x.PrivillegeName, x => x.ModelName);
            }
            SelectedItemsID = new List <string>();
            List <string> rids = null;

            if (DpType == DpTypeEnum.User)
            {
                rids = DC.Set <DataPrivilege>().Where(x => x.TableName == Entity.TableName && x.UserId == Entity.UserId).Select(x => x.RelateId).ToList();
            }
            else
            {
                rids = DC.Set <DataPrivilege>().Where(x => x.TableName == Entity.TableName && x.GroupId == Entity.GroupId).Select(x => x.RelateId).ToList();
            }
            if (rids.Contains(null))
            {
                IsAll = true;
            }
            else
            {
                SelectedItemsID.AddRange(rids.Select(x => x));
            }
        }
Exemple #3
0
 public override void DoAdd()
 {
     if (ControllerName.Contains("WalkingTec.Mvvm.Mvc.Admin.Controllers"))
     {
         if (SelectedRolesIDs != null)
         {
             foreach (var roleid in SelectedRolesIDs)
             {
                 Entity.UserRoles.Add(new FrameworkUserRole {
                     RoleId = roleid
                 });
             }
         }
         if (SelectedGroupIDs != null)
         {
             foreach (var groupid in SelectedGroupIDs)
             {
                 Entity.UserGroups.Add(new FrameworkUserGroup {
                     GroupId = groupid
                 });
             }
         }
     }
     Entity.IsValid  = true;
     Entity.Password = Utils.GetMD5String(Entity.Password);
     base.DoAdd();
 }
Exemple #4
0
 public override async Task DoAddAsync()
 {
     if (ControllerName.Contains("/api") == false)
     {
         Entity.UserRoles  = new List <FrameworkUserRole>();
         Entity.UserGroups = new List <FrameworkUserGroup>();
         if (SelectedRolesIDs != null)
         {
             foreach (var roleid in SelectedRolesIDs)
             {
                 Entity.UserRoles.Add(new FrameworkUserRole {
                     RoleId = roleid
                 });
             }
         }
         if (SelectedGroupIDs != null)
         {
             foreach (var groupid in SelectedGroupIDs)
             {
                 Entity.UserGroups.Add(new FrameworkUserGroup {
                     GroupId = groupid
                 });
             }
         }
     }
     Entity.IsValid  = true;
     Entity.Password = Utils.GetMD5String(Entity.Password);
     await base.DoAddAsync();
 }
Exemple #5
0
 public override void DoEdit(bool updateAllFields = false)
 {
     if (ControllerName.Contains("WalkingTec.Mvvm.Mvc.Admin.Controllers"))
     {
         if (SelectedRolesIDs == null || SelectedRolesIDs.Count == 0)
         {
             FC.Add("Entity.SelectedRolesIDs.DONOTUSECLEAR", "true");
         }
         else
         {
             Entity.UserRoles = new List <FrameworkUserRole>();
             SelectedRolesIDs.ForEach(x => Entity.UserRoles.Add(new FrameworkUserRole {
                 ID = Guid.NewGuid(), UserId = Entity.ID, RoleId = x
             }));
         }
         if (SelectedGroupIDs == null || SelectedGroupIDs.Count == 0)
         {
             FC.Add("Entity.SelectedGroupIDs.DONOTUSECLEAR", "true");
         }
         else
         {
             SelectedGroupIDs.ForEach(x => Entity.UserGroups.Add(new FrameworkUserGroup {
                 ID = Guid.NewGuid(), UserId = Entity.ID, GroupId = x
             }));
         }
     }
     base.DoEdit(updateAllFields);
 }
Exemple #6
0
        protected override void InitVM()
        {
            SelectedRolesIDs.AddRange(DC.Set <FunctionPrivilege>().Where(x => x.MenuItemId == Entity.ID && x.RoleId != null && x.Allowed == true).Select(x => x.RoleId.Value).ToList());
            SelectedUsersID.AddRange(DC.Set <FunctionPrivilege>().Where(x => x.MenuItemId == Entity.ID && x.UserId != null && x.Allowed == true).Select(x => x.UserId.Value).ToList());
            SelectedRolesID2.AddRange(DC.Set <FunctionPrivilege>().Where(x => x.MenuItemId == Entity.ID && x.RoleId != null && x.Allowed == false).Select(x => x.RoleId.Value).ToList());
            SelectedUsersID2.AddRange(DC.Set <FunctionPrivilege>().Where(x => x.MenuItemId == Entity.ID && x.UserId != null && x.Allowed == false).Select(x => x.UserId.Value).ToList());

            var data    = DC.Set <FrameworkMenu>().ToList();
            var topMenu = data.Where(x => x.ParentId == null).ToList().FlatTree(x => x.DisplayOrder);
            var pids    = Entity.GetAllChildrenIDs(DC);

            AllParents = topMenu.Where(x => x.ID != Entity.ID && !pids.Contains(x.ID)).ToList().ToListItems(y => y.PageName, x => x.ID);
            foreach (var p in AllParents)
            {
                Guid temp = Guid.Parse(p.Value);
                var  m    = topMenu.Where(x => x.ID == temp).SingleOrDefault();
                if (m != null && m.ActionId != null)
                {
                    p.Text = p.Text + "(" + m.ModuleName + ")";
                }
            }
            if (ControllerName.Contains("WalkingTec.Mvvm.Mvc.Admin.Controllers"))
            {
                AllModules = DC.Set <FrameworkModule>().Where(x => x.NameSpace != "WalkingTec.Mvvm.Admin.Api").GetSelectListItems(LoginUserInfo.DataPrivileges, null, y => y.ModuleName);
            }
            if (Entity.ModuleId != null)
            {
                AllActions = DC.Set <FrameworkAction>().GetSelectListItems(LoginUserInfo.DataPrivileges, x => x.ModuleId == Entity.ModuleId, y => y.ActionName);
            }
        }
Exemple #7
0
 protected override void ReInitVM()
 {
     if (ControllerName.Contains("WalkingTec.Mvvm.Mvc.Admin.Controllers"))
     {
         AllRoles  = DC.Set <FrameworkRole>().GetSelectListItems(LoginUserInfo.DataPrivileges, null, y => y.RoleName);
         AllGroups = DC.Set <FrameworkGroup>().GetSelectListItems(LoginUserInfo.DataPrivileges, null, y => y.GroupName);
     }
 }
 protected override void ReInitVM()
 {
     TableNames = new List <ComboSelectListItem>();
     AllItems   = new List <ComboSelectListItem>();
     TableNames = Wtm.DataPrivilegeSettings.ToListItems(x => x.PrivillegeName, x => x.ModelName);
     if (ControllerName.Contains("/api") == false)
     {
         AllGroups = DC.Set <FrameworkGroup>().GetSelectListItems(Wtm, x => x.GroupName, x => x.GroupCode);
     }
 }
Exemple #9
0
 protected override void InitVM()
 {
     if (ControllerName.Contains("WalkingTec.Mvvm.Mvc.Admin.Controllers"))
     {
         SelectedRolesIDs = Entity.UserRoles.Select(x => x.RoleId).ToList();
         AllRoles         = DC.Set <FrameworkRole>().GetSelectListItems(LoginUserInfo.DataPrivileges, null, y => y.RoleName);
         SelectedGroupIDs = Entity.UserGroups.Select(x => x.GroupId).ToList();
         AllGroups        = DC.Set <FrameworkGroup>().GetSelectListItems(LoginUserInfo.DataPrivileges, null, y => y.GroupName);
     }
 }
Exemple #10
0
        protected override void InitVM()
        {
            SelectedRolesIDs.AddRange(DC.Set<FunctionPrivilege>().Where(x => x.MenuItemId == Entity.ID && x.RoleId != null && x.Allowed == true).Select(x => x.RoleId.Value).ToList());

            var data = DC.Set<FrameworkMenu>().ToList();
            var topMenu = data.Where(x => x.ParentId == null).ToList().FlatTree(x=>x.DisplayOrder);
            var pids = Entity.GetAllChildrenIDs(DC);
            AllParents = topMenu.Where(x => x.ID != Entity.ID && !pids.Contains(x.ID) && x.FolderOnly == true).ToList().ToListItems(y => y.PageName, x => x.ID);
            foreach (var p in AllParents)
            {
                Guid temp = Guid.Parse(p.Value);
                var m = topMenu.Where(x => x.ID == temp).SingleOrDefault();
                if (m != null && m.ActionId != null)
                {
                    p.Text = p.Text + "(" + m.ModuleName + ")";
                }
            }
            var modules = GlobalServices.GetRequiredService<GlobalData>().AllModule;

            if (ControllerName.Contains("WalkingTec.Mvvm.Mvc.Admin.Controllers"))
            {
                var m = DC.Set<FrameworkModule>().Include(x=>x.Area).Where(x => x.NameSpace != "WalkingTec.Mvvm.Admin.Api").ToList();
                List<FrameworkModule> toremove = new List<FrameworkModule>();
                foreach (var item in m)
                {
                    var f = modules.Where(x => x.ClassName == item.ClassName && x.Area?.AreaName == item.Area?.AreaName).FirstOrDefault();
                    if (f?.IgnorePrivillege == true)
                    {
                        toremove.Add(item);
                    }
                }
                toremove.ForEach(x => m.Remove(x));
                AllModules = m.ToListItems(y => y.ModuleName, y=>y.ID);
            }
            if (Entity.ModuleId != null)
            {
                var m = DC.Set<FrameworkAction>().Include(x=>x.Module.Area).Where(x => x.ModuleId == Entity.ModuleId && x.MethodName != "Index").ToList();
                List<FrameworkAction> toremove = new List<FrameworkAction>();
                foreach (var item in m)
                {
                    var f = modules.Where(x => x.ClassName == item.Module.ClassName && x.Area?.AreaName == item.Module.Area?.AreaName).FirstOrDefault();
                    var a = f?.Actions.Where(x => x.MethodName == item.MethodName).FirstOrDefault();
                    if (a?.IgnorePrivillege == true)
                    {
                        toremove.Add(item);
                    }
                }
                toremove.ForEach(x => m.Remove(x));
                AllActions = m.ToListItems(y => y.ActionName, y => y.ID);
                SelectedActionIDs = DC.Set<FrameworkMenu>().Where(x => x.ModuleId == this.Entity.ModuleId && x.ActionId != null).Select(x => x.ActionId.Value).ToList();
            }


        }
        public override IOrderedQueryable <FrameworkAction_ListView> GetSearchQuery()
        {
            var newdc = DC as FrameworkContext;
            List <FrameworkAction_ListView> actions = new List <FrameworkAction_ListView>();
            var urls = newdc.BaseFrameworkMenus.Where(y => y.IsInside == true && y.FolderOnly == false).Select(y => y.Url).Distinct().ToList();

            if (ControllerName.Contains("/api") == false)
            {
                actions = Wtm.GlobaInfo.AllModule.SelectMany(x => x.Actions)
                          .Where(x => urls.Contains(x.Url) == false)
                          .Select(x => new FrameworkAction_ListView
                {
                    ID         = x.ID,
                    ModuleID   = x.ModuleId,
                    ModuleName = x.Module.ModuleName,
                    ActionName = x.ActionName,
                    ClassName  = x.Module.ClassName,
                    MethodName = x.MethodName,
                    AreaName   = x.Module.Area?.AreaName
                }).ToList();
            }
            else
            {
                actions = Wtm.GlobaInfo.AllModule.SelectMany(x => x.Actions)
                          .Where(x => x.Module.IsApi == true && urls.Contains(x.Url) == false)
                          .Select(x => new FrameworkAction_ListView
                {
                    ID         = x.ID,
                    ModuleID   = x.ModuleId,
                    ModuleName = x.Module.ModuleName,
                    ActionName = x.ActionName,
                    ClassName  = x.Module.ClassName,
                    MethodName = x.MethodName,
                    AreaName   = x.Module.Area?.AreaName
                }).ToList();
            }

            var modules = Wtm.GlobaInfo.AllModule;
            List <FrameworkAction_ListView> toremove = new List <FrameworkAction_ListView>();

            foreach (var item in actions)
            {
                var m = modules.Where(x => x.ClassName == item.ClassName && x.Area?.AreaName == item.AreaName).FirstOrDefault();
                var a = m?.Actions.Where(x => x.MethodName == item.MethodName).FirstOrDefault();
                if (m?.IgnorePrivillege == true || a?.IgnorePrivillege == true)
                {
                    toremove.Add(item);
                }
            }
            toremove.ForEach(x => actions.Remove(x));
            return(actions.AsQueryable().OrderBy(x => x.AreaName).ThenBy(x => x.ModuleName).ThenBy(x => x.MethodName));
        }
Exemple #12
0
        protected override void InitVM()
        {
            SelectedRolesIDs.AddRange(DC.Set <FunctionPrivilege>().Where(x => x.MenuItemId == Entity.ID && x.RoleId != null && x.Allowed == true).Select(x => x.RoleId.Value).ToList());

            var data    = DC.Set <FrameworkMenu>().ToList();
            var topMenu = data.Where(x => x.ParentId == null).ToList().FlatTree(x => x.DisplayOrder);
            var pids    = Entity.GetAllChildrenIDs(DC);

            AllParents = topMenu.Where(x => x.ID != Entity.ID && !pids.Contains(x.ID) && x.FolderOnly == true).ToList().ToListItems(y => y.PageName, x => x.ID);

            var modules = GlobalServices.GetRequiredService <GlobalData>().AllModule;

            if (ControllerName.Contains("WalkingTec.Mvvm.Mvc.Admin.Controllers"))
            {
                var m = modules.Where(x => x.NameSpace != "WalkingTec.Mvvm.Admin.Api").ToList();
                List <FrameworkModule> toremove = new List <FrameworkModule>();
                foreach (var item in m)
                {
                    var f = modules.Where(x => x.ClassName == item.ClassName && x.Area?.AreaName == item.Area?.AreaName).FirstOrDefault();
                    if (f?.IgnorePrivillege == true)
                    {
                        toremove.Add(item);
                    }
                }
                toremove.ForEach(x => m.Remove(x));
                AllModules = m.ToListItems(y => y.ModuleName, y => y.FullName);
            }
            if (Entity.Url != null)
            {
                if (ControllerName.Contains("WalkingTec.Mvvm.Mvc.Admin.Controllers"))
                {
                    SelectedModule = modules.Where(x => x.IsApi == false).SelectMany(x => x.Actions).Where(x => x.Url == Entity.Url).FirstOrDefault().Module.FullName;
                }
                else
                {
                    SelectedModule = modules.Where(x => x.IsApi == true).SelectMany(x => x.Actions).Where(x => x.Url == Entity.Url).FirstOrDefault().Module.FullName;
                }
                var m = modules.Where(x => x.FullName == SelectedModule).SelectMany(x => x.Actions).Where(x => x.MethodName != "Index" && x.IgnorePrivillege == false).ToList();
                AllActions        = m.ToListItems(y => y.ActionName, y => y.Url);
                SelectedActionIDs = DC.Set <FrameworkMenu>().Where(x => AllActions.Select(y => y.Value).Contains(x.Url) && x.IsInside == true && x.FolderOnly == false).Select(x => x.Url).ToList();
            }
        }
 public override void DoEdit(bool updateAllFields = false)
 {
     if (ControllerName.Contains("WalkingTec.Mvvm.Mvc.Admin.Controllers"))
     {
         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
             }));
         }
     }
     base.DoEdit(updateAllFields);
 }
Exemple #14
0
        public override async Task DoEditAsync(bool updateAllFields = false)
        {
            if (ControllerName.Contains("WalkingTec.Mvvm.Mvc.Admin.Controllers"))
            {
                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 LoginUserInfo.RemoveUserCache(Entity.ID.ToString());
        }
        /*
         * /// <summary>
         * /// check authentication attributes for the class
         * /// </summary>
         * protected virtual void MapClassAuth()
         * {
         *  object[] attributes = GetType().GetCustomAttributes(true);
         *  foreach (object attribute in attributes)
         *  {
         *      if (attribute.GetType() == typeof (AuthenticatorAttribute))
         *          AddAuthAttribute(ClassMethodName, attribute);
         *      if (attribute.GetType() == typeof (AuthenticationRequiredAttribute))
         *          AddCheckAuthAttribute(ClassMethodName, attribute);
         *  }
         * }
         */
        /// <summary>
        /// This method goes through all methods in the controller and
        /// adds them to a dictionary. They are later used to invoke
        /// the correct method depending on the Uri.
        /// </summary>
        /// <exception cref="InvalidOperationException">Authentication validator have already been specified.</exception>
        private void MapMethods()
        {
            lock (_methods)
            {
                // already mapped.
                if (_methods.Count > 0)
                {
                    return;
                }

                object[] controllerNameAttrs = GetType().GetCustomAttributes(typeof(ControllerNameAttribute), false);
                if (controllerNameAttrs.Length > 0)
                {
                    ControllerName = ((ControllerNameAttribute)controllerNameAttrs[0]).Name;
                }
                else
                {
                    ControllerName = GetType().Name;
                    if (ControllerName.Contains("Controller"))
                    {
                        ControllerName = ControllerName.Replace("Controller", "");
                    }
                    ControllerName = ControllerName.ToLower();
                }

                MethodInfo[] methods =
                    GetType().GetMethods(BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Instance);
                foreach (MethodInfo info in methods)
                {
                    ParameterInfo[] parameters = info.GetParameters();

                    // find regular render methods
                    if (parameters.Length == 0 && info.ReturnType == typeof(string))
                    {
                        string name = info.Name.ToLower();
                        if (name.Length > 3 && (name.Substring(0, 4) == "get_" || name.Substring(0, 4) == "set_"))
                        {
                            continue;
                        }
                        if (name == "tostring")
                        {
                            continue;
                        }

                        // Add authenticators
                        object[] authAttributes = info.GetCustomAttributes(true);
                        foreach (object attribute in authAttributes)
                        {
                            if (attribute.GetType() == typeof(AuthRequiredAttribute))
                            {
                                _authMethods.Add(info.Name.ToLower(), ((AuthRequiredAttribute)attribute).Level);
                            }
                        }
                        _methods.Add(info.Name.ToLower(), info);
                    }

                    // find raw handlers
                    object[] attributes = info.GetCustomAttributes(typeof(RawHandlerAttribute), true);
                    if (attributes.Length >= 1 && info.ReturnType == typeof(void) && parameters.Length == 0)
                    {
                        // Add authenticators
                        object[] authAttributes = info.GetCustomAttributes(true);
                        foreach (object attribute in authAttributes)
                        {
                            if (attribute.GetType() == typeof(AuthRequiredAttribute))
                            {
                                _authMethods.Add(info.Name.ToLower(), ((AuthRequiredAttribute)attribute).Level);
                            }
                        }
                        _binaryMethods.Add(info.Name.ToLower(), info);
                    }
                } //foreach

                methods = GetType().GetMethods(BindingFlags.Instance | BindingFlags.NonPublic);
                foreach (MethodInfo info in methods)
                {
                    ParameterInfo[] parameters = info.GetParameters();

                    // find before filters.
                    if (parameters.Length != 0 || info.ReturnType != typeof(bool))
                    {
                        continue;
                    }

                    object[] authAttributes = info.GetCustomAttributes(true);
                    foreach (object attribute in authAttributes)
                    {
                        if (attribute.GetType() == typeof(AuthenticationValidatorAttribute))
                        {
                            if (_authValidator != null)
                            {
                                throw new InvalidOperationException("Authentication validator have already been specified.");
                            }
                            _authValidator = info;
                        }
                        else if (attribute.GetType() == typeof(BeforeFilterAttribute))
                        {
                            BeforeFilterAttribute       attr = (BeforeFilterAttribute)attribute;
                            LinkedListNode <MethodInfo> node = new LinkedListNode <MethodInfo>(info);


                            switch (attr.Position)
                            {
                            case FilterPosition.First:
                                _beforeFilters.AddFirst(node);
                                break;

                            case FilterPosition.Last:
                                _beforeFilters.AddLast(node);
                                break;

                            default:
                                if (_lastMiddleFilter == null)
                                {
                                    _beforeFilters.AddLast(node);
                                }
                                else
                                {
                                    _beforeFilters.AddAfter(_lastMiddleFilter, node);
                                }
                                _lastMiddleFilter = node;
                                break;
                            }
                        }
                    }
                }

                // Map index method.
                MethodInfo mi = GetType().GetMethod("Index", BindingFlags.Public | BindingFlags.Instance);
                if (mi != null && mi.ReturnType == typeof(string) && mi.GetParameters().Length == 0)
                {
                    DefaultMethod = "Index";
                }
            }
        }