コード例 #1
0
        /// <summary>写日志</summary>
        /// <param name="type">类型</param>
        /// <param name="action">操作</param>
        /// <param name="remark">备注</param>
        public virtual void WriteLog(Type type, String action, String remark)
        {
            if (!Config.GetConfig <Boolean>("NewLife.CommonEntity.WriteEntityLog", true))
            {
                return;
            }

            if (type == null)
            {
                type = this.GetType();
            }

            var user = Current;

            var factory = ManageProvider.Get <ILog>();
            var log     = factory.Create(type, action);

            if (user != null)
            {
                log.UserID   = user.ID;
                log.UserName = user.ToString();
            }

            log.Remark = remark;
            log.Save();
        }
コード例 #2
0
ファイル: 管理员.Biz.cs プロジェクト: yuyu2you/X_NET20
        /// <summary>根据权限名(权限路径)找到权限菜单实体</summary>
        /// <param name="name">名称</param>
        /// <returns></returns>
        public IMenu FindPermissionMenu(string name)
        {
            var factory = ManageProvider.Get <IMenu>();
            // 优先使用当前页,除非当前页与权限名不同
            var entity = factory.Current;

            if (entity != null && entity.Permission == name)
            {
                return(entity);
            }

            // 根据权限名找
            return(factory.FindForPerssion(name));
        }
コード例 #3
0
        /// <summary>初始化时执行必要的权限检查,以防万一管理员无法操作</summary>
        static void CheckRole()
        {
            //var rs = Meta.Cache.Entities;
            // InitData中用缓存将会导致二次调用InitData,从而有一定几率死锁
            var rs   = FindAll();
            var list = rs.ToList();

            // 如果某些菜单已经被删除,但是角色权限表仍然存在,则删除
            var factory = ManageProvider.Get <IMenu>();
            var eop     = ManageProvider.GetFactory <IMenu>();
            var ids     = eop.FindAllWithCache().GetItem <Int32>("ID").ToArray();

            foreach (var role in rs)
            {
                if (!role.CheckValid(ids))
                {
                    XTrace.WriteLine("删除[{0}]中的无效资源权限!", role);
                    role.Save();
                }
            }

            var sys = list.FirstOrDefault(e => e.IsSystem);

            if (sys == null)
            {
                return;
            }

            // 如果没有任何角色拥有权限管理的权限,那是很悲催的事情
            var count = 0;
            var nes   = factory.GetType().GetValue("Necessaries", false) as Int32[];

            foreach (var item in nes)
            {
                if (!list.Any(e => e.Has(item, PermissionFlags.All)))
                {
                    count++;
                    sys.Set(item, PermissionFlags.All);
                }
            }
            if (count > 0)
            {
                XTrace.WriteLine("共有{0}个必要菜单,没有任何角色拥有权限,准备授权第一系统角色[{1}]拥有其完全管理权!", count, sys);
                sys.Save();
            }
        }