Exemplo n.º 1
0
        /// <summary>
        /// 用户角色关系是否有模块权限
        /// 2015-12-15 吉日嘎拉 优化参数化
        /// </summary>
        /// <param name="systemCode">系统编号</param>
        /// <param name="roleId">角色主键</param>
        /// <param name="permissionCode">权限编号</param>
        /// <returns>有角色权限</returns>
        public bool CheckPermissionByRole(string systemCode, string roleId, string permissionCode)
        {
            // 判断当前判断的权限是否存在,否则很容易出现前台设置了权限,后台没此项权限
            // 需要自动的能把前台判断过的权限,都记录到后台来
            var permissionId = string.Empty;

#if (DEBUG)
            if (string.IsNullOrEmpty(permissionId))
            {
                var permissionEntity = new BaseModuleEntity();
                permissionEntity.Code        = permissionCode;
                permissionEntity.Name        = permissionCode;
                permissionEntity.IsScope     = 0;
                permissionEntity.IsPublic    = 0;
                permissionEntity.IsMenu      = 0;
                permissionEntity.IsVisible   = 1;
                permissionEntity.AllowDelete = 1;
                permissionEntity.AllowEdit   = 1;
                permissionEntity.Deleted     = 0;
                permissionEntity.Enabled     = 1;
                // 这里是防止主键重复?
                // permissionEntity.ID = BaseUtil.NewGuid();
                var moduleManager = new BaseModuleManager();
                moduleManager.AddEntity(permissionEntity);
            }
            else
            {
                // 更新最后一次访问日期,设置为当前服务器日期
                var sqlBuilder = new SqlBuilder(DbHelper);
                sqlBuilder.BeginUpdate(CurrentTableName);
                sqlBuilder.SetDbNow(BaseModuleEntity.FieldLastCall);
                sqlBuilder.SetWhere(BaseModuleEntity.FieldId, permissionId);
                sqlBuilder.EndUpdate();
            }
#endif

            permissionId = new BaseModuleManager().GetIdByCodeByCache(systemCode, permissionCode);
            // 没有找到相应的权限
            if (string.IsNullOrEmpty(permissionId))
            {
                return(false);
            }

            var resourceCategory = systemCode + "Role";
            return(CheckResourcePermission(systemCode, resourceCategory, roleId, permissionId));
        }