private void CreateOrUpdateMenu(IPersistBroker broker, classification data)
        {
            var menu = broker.Retrieve <sys_menu>("SELECT * FROM sys_menu WHERE router = @code", new Dictionary <string, object>()
            {
                { "@code", $"blogs/{data.code}" }
            });

            if (menu != null)
            {
                menu.menu_Index = data.index;
                menu.name       = data.name;
                broker.Update(menu);
            }
            else
            {
                menu = new sys_menu()
                {
                    Id            = Guid.NewGuid().ToString(),
                    name          = data.name,
                    parentid      = "8201EFED-76E2-4CD1-A522-4803D52D4D92",
                    parentIdName  = "博客管理",
                    router        = $"blogs/{data.code}",
                    menu_Index    = data.index,
                    stateCode     = 1,
                    stateCodeName = "启用"
                };
                broker.Create(menu);
            }
        }
        /// <summary>
        /// 权限查询
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="broker"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public static T FilteredRetrieve <T>(this IPersistBroker broker, string id) where T : BaseEntity, new()
        {
            var sysEntity = EntityCache.GetEntity(new T().EntityName);

            AssertUtil.CheckBoolean <InvalidCredentialException>(!AuthAccess.CheckReadAccess(sysEntity.Id), $"用户没有实体[{sysEntity.name}]的查询权限", "451FC4BA-46B2-4838-B8D0-69617DFCAF39");
            return(broker.Retrieve <T>(id));
        }
Esempio n. 3
0
        /// <summary>
        /// 获取配置值
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static object GetValue <T>() where T : ISysConfig, new()
        {
            var sql  = @"
select * from sys_config where code = @code;
";
            var t    = new T();
            var data = broker.Retrieve <sys_config>(sql, new Dictionary <string, object>()
            {
                { "@code", t.Code }
            });

            // 数据库里不存在该配置,则创建一条配置记录
            if (data == null)
            {
                var model = new sys_config()
                {
                    name  = t.Name,
                    code  = t.Code,
                    value = t.DefaultValue?.ToString()
                };
                broker.Create(model);
                return(t.DefaultValue);
            }
            return(data.value);
        }
Esempio n. 4
0
        /// <summary>
        /// 更新用户信息
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="broker"></param>
        private void UpdateAuthInfo(BaseEntity entity, IPersistBroker broker)
        {
            var sql      = @"
SELECT * FROM auth_user
WHERE user_infoid = @id
";
            var authInfo = broker.Retrieve <auth_user>(sql, new Dictionary <string, object>()
            {
                { "@id", entity["user_infoId"]?.ToString() }
            });

            AssertUtil.CheckNull <SpException>(authInfo, "用户Id不能为空", "C37CCF94-6B27-4BF4-AF29-DBEDC9E53E5D");
            authInfo.name       = entity["name"]?.ToString();
            authInfo.roleid     = entity["roleid"]?.ToString();
            authInfo.roleidName = entity["roleidName"]?.ToString();
            new AuthUserService(broker).UpdateData(authInfo);
        }
Esempio n. 5
0
        /// <summary>
        /// 获取角色
        /// </summary>
        /// <param name="roleName"></param>
        /// <returns></returns>
        public sys_role GetSysRole()
        {
            var key = $"{ROLE_PREFIX}_{RoleName}";

            return(MemoryCacheUtil.GetOrAddCacheItem(key, () =>
            {
                var role = Broker.Retrieve <sys_role>("select * from sys_role where name = @name", new Dictionary <string, object>()
                {
                    { "@name", Role.GetDescription() }
                });
                if (role == null)
                {
                    role = new sys_role()
                    {
                        Id = Guid.NewGuid().ToString(),
                        name = Role.GetDescription(),
                        is_basic = true
                    };
                    Broker.Create(role);
                }
                return role;
            }, DateTime.Now.AddHours(12)));
        }
Esempio n. 6
0
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public LoginResponse Login(LoginRequest model)
        {
            var code      = model.code;
            var pwd       = model.password;
            var publicKey = model.publicKey;

            UserIdentityUtil.SetCurrentUser(UserIdentityUtil.GetSystem());

            var authUser = Broker.Retrieve <auth_user>("SELECT * FROM auth_user WHERE lower(code) = lower(@code)", new Dictionary <string, object>()
            {
                { "@code", code }
            });

            if (authUser == null)
            {
                return(new LoginResponse()
                {
                    result = false, message = "用户名或密码错误"
                });
            }

            if (authUser.is_lock)
            {
                return(new LoginResponse()
                {
                    result = false, message = "用户已被锁定,请联系管理员"
                });
            }

            if (string.IsNullOrEmpty(pwd) ||
                string.IsNullOrEmpty(publicKey) ||
                !string.Equals(authUser.password, RSAUtil.Decrypt(pwd, publicKey))
                )
            {
                var message = "用户名或密码错误";
                if (!authUser.try_times.HasValue)
                {
                    authUser.try_times = 1;
                }
                else
                {
                    authUser.try_times += 1;
                    if (authUser.try_times > 1)
                    {
                        message = $"用户名或密码已连续错误{authUser.try_times}次,超过五次账号锁定";
                    }
                }

                if (authUser.try_times >= 5)
                {
                    authUser.is_lock = true;
                    message          = $"用户已被锁定,请联系管理员";
                }

                Broker.Update(authUser);
                return(new LoginResponse()
                {
                    result = false, message = message
                });
            }

            if (authUser.try_times > 0)
            {
                authUser.try_times = 0;
            }
            authUser.last_login_time = DateTime.Now;
            Broker.Update(authUser);

            // 返回登录结果、用户信息、用户验证票据信息
            var oUser = new LoginResponse
            {
                result   = true,
                userName = code,
                token    = JwtHelper.CreateToken(new JwtTokenModel()
                {
                    Code = authUser.code, Name = authUser.name, Role = authUser.code, Uid = authUser.Id
                }),
                userId  = authUser.user_infoid,
                message = "登录成功"
            };

            return(oUser);
        }