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)); } }
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)); } }
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(); }
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(); }
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); }
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); } }
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); } }
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); } }
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)); }
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); }
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"; } } }