Beispiel #1
0
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            if (CurrentUser.IsAdmin)
            {
                return(true);
            }

            try
            {
                CurrentUser user = CurrentUser.GetCurrentUser();
                // 得所有配置的权限
                var permissions = ActionPermission.GetAllPermission();

                bool validating = true;

                // 只有已配置的权限才是需要验证的权限,否则不验证
                if (permissions.ExistsPermissions(areaName, controllerName, actionName))
                {
                    validating = user.Permissions.ExistsPermissions(areaName, controllerName, actionName);
                }
            }
            catch
            {
                return(false);
            }

            //return validating;
            return(true);
        }
        public IViewComponentResult Invoke(string permissionId, bool enabled = true)
        {
            var dbRecord = _context.ApplicationAction_ApplicationPermission.Include(i => i.ApplicationAction).
                           Where(p => p.ApplicationPermissionId == permissionId).
                           Select(o => new ApplicationAction_ApplicationPermission
            {
                ApplicationAction   = o.ApplicationAction,
                AccessType          = o.AccessType,
                ApplicationActionId = o.ApplicationActionId
            }).ToList();

            var actionModels = _mapper.Map <List <ApplicationAction>, List <ApplicationActionModel> >(dbRecord.Select(p => p.ApplicationAction).ToList());

            foreach (var item in actionModels)
            {
                item.AccessType = dbRecord.Where(c => c.ApplicationActionId == item.Id).Select(s => s.AccessType).FirstOrDefault();
            }

            ActionPermission actionPermission = new ActionPermission
            {
                PermissinId = permissionId,
                Actions     = actionModels
            };

            ViewData["enabled"] = enabled;
            return(View(actionPermission));
        }
 public ActionResult ResetCache()
 {
     ActionPermission.ResetCache();
     return(this.JsonFormat(new ExtResult {
         success = true
     }));
 }
        public ActionResult SaveModule(IMS_UP_MK module)
        {
            Func <ExtResult> saveFun = () =>
            {
                if (string.IsNullOrEmpty(module.QY))
                {
                    module.URL = Url.Action(module.HDMC, module.KZMC);
                }
                else
                {
                    module.URL = Url.Action(module.HDMC, module.KZMC, new { area = module.QY });
                }

                dalModule.SaveOrUpdate(module);

                var  parentModule = dalModule.GetEntityByModuleID(module.FMKID);
                long pid          = -1;
                if (parentModule != null)
                {
                    pid = parentModule.ID;
                }

                ActionPermission.ResetCache();

                var ret = new ExtResult();
                ret.success  = true;
                ret.id       = pid;
                ret.parentid = module.FMKID;
                return(ret);
            };

            return(base.Save(saveFun));
        }
Beispiel #5
0
        private static void Method07()
        {
            var types = Assembly.Load("Mes.Demo.Web").GetTypes();
            var result = new List<ActionPermission>();
            foreach (var type in types)
            {
                // ReSharper disable once PossibleNullReferenceException
                if (type.BaseType.Name == "AdminBaseController")//如果是Controller
                {
                    var members = type.GetMethods();
                    foreach (var member in members)
                    {
                        if (member.ReturnType.Name == "ActionResult")//如果是Action
                        {

                            var ap = new ActionPermission();

                            ap.ActionName = member.Name;
                            Debug.Assert(member.DeclaringType != null, "member.DeclaringType != null");
                            ap.ControllerName = member.DeclaringType.Name.Substring(0, member.DeclaringType.Name.Length - 10); // 去掉“Controller”后缀

                            object[] attrs = member.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), true);
                            if (attrs.Length > 0)
                                ap.Description = (attrs[0] as System.ComponentModel.DescriptionAttribute).Description;
                            result.Add(ap);

                        }

                    }
                }
            }
            Console.ReadKey();
        }
Beispiel #6
0
        public Form2()
        {
            InitializeComponent();
            User[]       user = ReadXml();
            ListViewItem item;

            if (user != null)
            {
                for (int i = 0; i < user.Length; i++)
                {
                    var ip = user[i].ip;
                    item = new ListViewItem(new string[] { Convert.ToString(i), ip });
                    var permissions = new ActionPermission();
                    permissions.value1 = user[i].rights[0];
                    permissions.value2 = user[i].rights[1];
                    permissions.value3 = user[i].rights[2];
                    permissions.value4 = user[i].rights[3];
                    permissions.value5 = user[i].rights[4];
                    permissions.value6 = user[i].rights[5];
                    permissions.value7 = user[i].rights[6];
                    permissions.value8 = user[i].rights[7];
                    Permissions.Add(ip, permissions);
                    item.Tag = permissions;
                    listView1.Items.Add(item);
                }
            }
        }
Beispiel #7
0
        public void addip(string ip)
        {
            var          id         = listView1.Items.Count;
            ListViewItem item       = new ListViewItem(new string[] { Convert.ToString(id), ip });
            var          permisions = new ActionPermission();

            item.Tag = permisions;
            listView1.Items.Add(item);
            this.Permissions.Add(ip, permisions);
            showPermissions(permisions);
        }
Beispiel #8
0
        public virtual ActionResult GetPermissionFunction(string actionName)
        {
            //ViewContext.RouteData.DataTokens["area"].ToString().ToLower();
            //ControllerContext.RouteData.DataTokens["area"]


            var areaName       = Convert.ToString(ControllerContext.RouteData.DataTokens["area"]);
            var controllerName = this.RouteData.Values["controller"].ToString();

            //var actionName = this.RouteData.Values["action"].ToString();

            if (string.Equals(controllerName, "Account", StringComparison.CurrentCultureIgnoreCase))
            {
                return(JavaScript(""));
            }


            var user = CurrentUser.GetCurrentUser();

            var userFunList = user.Permissions.GetFunctionList(areaName, controllerName, actionName);

            if (userFunList == null)
            {
                userFunList = new List <Entities.TabelEntities.IMS_UP_MKGN>();
            }

            // 得所有配置的权限
            var permissions = ActionPermission.GetAllPermission();

            var allFunList = permissions.GetFunctionList(areaName, controllerName, actionName);

            //var controlsDisabledDictionary = new Dictionary<string, bool>();

            if (allFunList == null)
            {
                return(JavaScript(""));
            }

            StringBuilder scriptBuilder = new StringBuilder();

            foreach (var fun in allFunList)
            {
                // 为true时禁用按钮。
                var disabled = !userFunList.Exists(n => n.GNID == fun.GNID);
                //controlsDisabledDictionary.Add(fun.KJID, disabled);

                if (disabled)
                {
                    scriptBuilder.AppendFormat("$('{0}').hide();\r\n", fun.KJID);
                }
            }

            return(JavaScript(scriptBuilder.ToString()));
        }
Beispiel #9
0
 public void showPermissions(ActionPermission p)
 {
     checkBox1.Checked = p.value1;
     checkBox2.Checked = p.value2;
     checkBox3.Checked = p.value3;
     checkBox4.Checked = p.value4;
     checkBox5.Checked = p.value5;
     checkBox6.Checked = p.value6;
     checkBox7.Checked = p.value7;
     checkBox8.Checked = p.value8;
 }
        public void VerifyPermission(ActionPermission actionPermission, User user)
        {
            try
            {
                if (user.Administrador)
                {
                    return;
                }

                var function = user.UserFunctions.First(item => item.Controlador == controllerName);
                switch (actionPermission)
                {
                case ActionPermission.Post:
                {
                    if (!function.PermiteInserir)
                    {
                        throw new Exception();
                    }

                    break;
                }

                case ActionPermission.Put:
                {
                    if (!function.PermiteEditar)
                    {
                        throw new Exception();
                    }

                    break;
                }

                case ActionPermission.Delete:
                {
                    if (!function.PermiteExcluir)
                    {
                        throw new Exception();
                    }

                    break;
                }

                default: throw new Exception();
                }
            }
            catch
            {
                throw new Exception("403 - Usuário não possui permissão para executar esta ação.");
            }
        }
        public ActionResult SaveFunction(IMS_UP_MKGN module)
        {
            Func <ExtResult> saveFun = () =>
            {
                dalFunction.SaveOrUpdate(module);

                ActionPermission.ResetCache();
                ExtResult ret = new ExtResult();
                ret.success = true;
                return(ret);
            };

            return(base.Save(saveFun));
        }
        public async Task <IActionResult> AssociateAction(ActionPermission model)
        {
            foreach (var item in model.Actions.Where(m => m.Selected))
            {
                _context.Add(new ApplicationAction_ApplicationPermission
                {
                    AccessType              = Enums.AccessType.User,
                    ApplicationActionId     = item.Id,
                    ApplicationPermissionId = model.PermissinId
                });
            }
            await _context.SaveChangesAsync();

            return(PartialView("_BootstrapModalAction", ActionPermissionModalAction(model.PermissinId)));
        }
        public IActionResult LookupActionRecord(string permissionId, string search = "")
        {
            var dbRecord           = _context.ApplicationPermission.Include(p => p.ApplicationAction_ApplicationPermissions).SingleOrDefault(p => p.Id == permissionId);
            ActionPermission model = new ActionPermission {
                PermissinId = permissionId
            };

            if (dbRecord != null)
            {
                var listApplicationActions = dbRecord.ApplicationAction_ApplicationPermissions.Select(l => l.ApplicationActionId).ToList();
                var actions = _context.ApplicationAction.Where(p => p.ApplicationAction_Id.Contains(search) && !listApplicationActions.Contains(p.Id)).ToList();
                model.Actions = _mapper.Map <IList <ApplicationAction>, IList <ApplicationActionModel> >(actions).ToList();
            }
            return(PartialView("_ActionRecord", model));
        }
        public ActionResult RemoveModule(long id)
        {
            try
            {
                dalModule.Delete(id);

                ActionPermission.ResetCache();
                return(this.JsonFormat(new { success = true }));
            }
            catch (Exception ex)
            {
                return(this.JsonFormat(new ExtResult {
                    success = false, msg = ex.Message
                }));
            }
        }
Beispiel #15
0
        public void TestGetResourceId_ToString()
        {
            var argumentName   = "id";
            var resourceType   = "type";
            var permissionName = "name";

            var actionPermission = new ActionPermission
            {
                ArgumentName   = argumentName,
                ResourceType   = resourceType,
                PermissionName = permissionName
            };

            var expectedString = String.Format("Permission Name:  [{0}], Resource Type:  [{1}],  Action Argument:  [{2}]", permissionName, resourceType, argumentName);

            Assert.AreEqual(expectedString, actionPermission.ToString());
        }
        public ActionResult RemoveFunction(long id)
        {
            try
            {
                dalFunction.Delete(id);

                ActionPermission.ResetCache();
                return(Json(new ExtResult {
                    success = true
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ExtResult {
                    success = false, msg = ex.Message
                }));
            }
        }
Beispiel #17
0
        private IEnumerable <ActionPermission> GetAllActionByAssembly()
        {
            var result = new List <ActionPermission>();

            var types = Assembly.Load("MvcApp").GetTypes();

            foreach (var type in types)
            {
                if (type.BaseType == null)
                {
                    continue;
                }

                if (!type.IsGenericType && type.BaseType.Name.Contains("BaseController"))//如果是Controller
                {
                    var members = type.GetMethods();
                    foreach (var member in members)
                    {
                        if (member.ReturnType.Name == "ActionResult")//如果是Action
                        {
                            var ap = new ActionPermission();

                            ap.actionName     = member.Name;
                            ap.controllerName = member.DeclaringType.Name.Substring(0, member.DeclaringType.Name.Length - 10); // 去掉“Controller”后缀

                            object[] attrs = member.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), true);
                            if (attrs.Length > 0)
                            {
                                ap.description = (attrs[0] as System.ComponentModel.DescriptionAttribute).Description;
                            }
                            else
                            {
                                ap.description = "默认权限";
                            }

                            result.Add(ap);
                        }
                    }
                }
            }
            return(result);
        }
Beispiel #18
0
        public void TestGetResourceId()
        {
            var value          = 1;
            var argumentName   = "id";
            var resourceType   = "type";
            var permissionName = "name";

            var actionPermission = new ActionPermission
            {
                ArgumentName   = argumentName,
                ResourceType   = resourceType,
                PermissionName = permissionName
            };

            var dictionary = new Dictionary <string, object>
            {
                { argumentName, value }
            };

            Assert.AreEqual(value, actionPermission.GetResourceId(dictionary));
        }
Beispiel #19
0
        public void TestGetResourceId_ValueIsNotAnInt()
        {
            var value          = "S";
            var argumentName   = "id";
            var resourceType   = "type";
            var permissionName = "name";

            var actionPermission = new ActionPermission
            {
                ArgumentName   = argumentName,
                ResourceType   = resourceType,
                PermissionName = permissionName
            };

            var dictionary = new Dictionary <string, object>
            {
                { argumentName, value }
            };

            actionPermission.Invoking(x => x.GetResourceId(dictionary))
            .ShouldThrow <NotSupportedException>()
            .WithMessage("The action argument must be an integer.");
        }
Beispiel #20
0
        public void TestGetResourceId_ActionArgumentIsInDictionary()
        {
            var value          = 1;
            var argumentName   = "id";
            var resourceType   = "type";
            var permissionName = "name";

            var actionPermission = new ActionPermission
            {
                ArgumentName   = argumentName,
                ResourceType   = resourceType,
                PermissionName = permissionName
            };

            var dictionary = new Dictionary <string, object>
            {
                { "abc", value }
            };
            var message = "The argument named [{0}] was not found in the given action arguments.  "
                          + "If you did not specify an argument name then the default argument name [{1}] is assumed.  Either specify an argument name or refactor the argument name to the default.";
            var expectedExceptionMessage = String.Format(message, argumentName, ResourceAuthorizeAttribute.DEFAULT_ID_ARGUMENT_NAME);

            actionPermission.Invoking(x => x.GetResourceId(dictionary)).ShouldThrow <NotSupportedException>().WithMessage(expectedExceptionMessage);
        }
Beispiel #21
0
        public static List <ActionPermission> GetActionPermission()
        {
            List <ActionPermission> aps;

            Type[] types;

            aps   = new List <ActionPermission>();
            types = Assembly.Load("OnlineLearningSystem").GetTypes();

            foreach (var type in types)
            {
                if (type.BaseType.Name == "OLSController")//如果是Controller
                {
                    var members = type.GetMethods();
                    foreach (var member in members)
                    {
                        if (member.ReturnType.Name == "ActionResult" ||
                            member.ReturnType.Name == "JsonResult")   //如果是Action
                        {
                            var ap = new ActionPermission();

                            ap.ActionName     = member.Name;
                            ap.ControllerName = member.DeclaringType.Name.Substring(0, member.DeclaringType.Name.Length - 10); // 去掉“Controller”后缀

                            object[] attrs = member.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), true);
                            if (attrs.Length > 0)
                            {
                                ap.Description = (attrs[0] as System.ComponentModel.DescriptionAttribute).Description;
                                aps.Add(ap);
                            }
                        }
                    }
                }
            }
            return(aps);
        }
        public PartialViewResult _MenuPartial()
        {
            var menuList = new List <IMS_UP_MK>();

            var rootModuleList = dalModule.GetRootModule();

            if (rootModuleList == null)
            {
                return(PartialView(null));
            }

            var rootMenus = rootModuleList.OrderBy(n => n.PXID);

            PermissionViewModule permissionModule = null;

            if (CurrentUser.IsAdmin)
            {
                //dalPermission.GetAllEntites

                permissionModule = ActionPermission.GetAllPermission();
            }
            else
            {
                if (!User.Identity.IsAuthenticated)
                {
                    permissionModule = null;
                }
                else
                {
                    var user = CurrentUser.GetCurrentUser();
                    permissionModule = user.Permissions;
                }
            }


            if (permissionModule == null)
            {
                return(PartialView(menuList));
            }

            foreach (var m in rootMenus)
            {
                var perList = permissionModule.Modules.Where(n => n.FMKID == m.MKID).OrderBy(n => n.PXID);

                //var userPermissionList = user.Permissions.Modules.Where(n => n.ParentID == m.ModuleID);

                // 有子项菜单才需要显示
                if (perList.Count() > 0)
                {
                    menuList.Add(m);
                    menuList.AddRange(perList);
                    //foreach (var p in perList)
                    //    menuList.Add(p);
                }

                //var x = dalModule.GetChildModuleList(m.ModuleID);
                //menuList.AddRange(x);
            }

            foreach (var m in menuList)
            {
                // 根节点不需要url地址
                if (m.FMKID == -1)
                {
                    continue;
                }

                if (string.IsNullOrEmpty(m.QY))
                {
                    m.URL = Url.Action(m.HDMC, m.KZMC);
                }
                else
                {
                    m.URL = Url.Action(m.HDMC, m.KZMC, new { area = m.QY });
                }
            }

            return(PartialView(menuList));
        }
Beispiel #23
0
 public bool CheckOwnership(ISecured secured, ActionPermission permission)
 {
     using (new TransactionScope(TransactionScopeOption.Suppress))
     {
         var c = new XODBC(ApplicationConnectionString,null);
         var verified = new System.Data.Objects.ObjectParameter("verified", typeof(byte));
         c.X_SP_GetSecuredRight(secured.OwnerContactID, secured.OwnerApplicationID, secured.OwnerTableType, secured.OwnerReferenceID, secured.OwnerField,
             secured.CanRead || ((ActionPermission.Read & permission) == ActionPermission.Read)
             , secured.CanCreate || ((ActionPermission.Create & permission) == ActionPermission.Create)
             , secured.CanUpdate || ((ActionPermission.Update & permission) == ActionPermission.Update)
             , secured.CanDelete || ((ActionPermission.Delete & permission) == ActionPermission.Delete)
             , verified);
         return (bool)verified.Value;
     }
 }
Beispiel #24
0
        private static void Method07()
        {
            var types = Assembly.Load("Mes.Demo.Web").GetTypes();
            var result = new List<ActionPermission>();
            foreach (var type in types)
            {
                // ReSharper disable once PossibleNullReferenceException
                if (type.BaseType.Name == "AdminBaseController")//如果是Controller
                {
                    var members = type.GetMethods();
                    foreach (var member in members)
                    {
                        if (member.ReturnType.Name == "ActionResult")//如果是Action
                        {

                            var ap = new ActionPermission();

                            ap.ActionName = member.Name;
                            Debug.Assert(member.DeclaringType != null, "member.DeclaringType != null");
                            ap.ControllerName = member.DeclaringType.Name.Substring(0, member.DeclaringType.Name.Length - 10); // 去掉“Controller”后缀

                            object[] attrs = member.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), true);
                            if (attrs.Length > 0)
                                ap.Description = (attrs[0] as System.ComponentModel.DescriptionAttribute).Description;
                            result.Add(ap);

                        }

                    }
                }
            }
            Console.ReadKey();
        }