Esempio n. 1
0
        public void Execute(PersistBrokerPluginContext context)
        {
            if (context.EntityName != "sys_entity")
            {
                return;
            }

            var broker = context.Broker;

            switch (context.Action)
            {
            case EntityAction.PostCreate:
                // 创建权限
                new SysRolePrivilegeService(broker).CreateRoleMissingPrivilege();
                // 重新注册权限并清除缓存
                UserPrivilegesCache.Clear(broker);
                break;

            case EntityAction.PostDelete:
                var privileges = new SysRolePrivilegeService(broker).GetPrivileges(context.Entity.Id).ToArray();
                broker.Delete(privileges);
                UserPrivilegesCache.Clear(broker);
                break;

            default:
                break;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 检查权限
        /// </summary>
        /// <param name="objectid"></param>
        /// <param name="operationType"></param>
        /// <returns></returns>
        private static bool CheckAccess(string objectid, OperationType operationType, string userId)
        {
            var data = UserPrivilegesCache.GetUserPrivileges(string.IsNullOrEmpty(userId) ? UserIdentityUtil.GetCurrentUser()?.Id : userId)
                       .Where(item => item.objectid == objectid)
                       .FirstOrDefault();

            return(data != null && (data.privilege & (int)operationType) == (int)operationType);
        }
Esempio n. 3
0
        public static IEnumerable <sys_menu> Filter(this IEnumerable <sys_menu> sysMenus)
        {
            var privileges = UserPrivilegesCache.GetUserPrivileges(UserIdentityUtil.GetCurrentUserId()).Where(item => item.object_type == nameof(sys_menu));

            return(sysMenus.Where(item =>
            {
                var data = privileges.FirstOrDefault(e => e.objectid == item.sys_menuId);
                return data != null && data.privilege > 0;
            }));
        }