/// <summary>
        /// 权限更新
        /// </summary>
        /// <param name="broker"></param>
        /// <param name="entity"></param>
        /// <returns></returns>
        public static int FiltededUpdate(this IPersistBroker broker, BaseEntity entity)
        {
            var sysEntity = EntityCache.GetEntity(entity.EntityName);

            AssertUtil.CheckBoolean <InvalidCredentialException>(!AuthAccess.CheckWriteAccess(sysEntity.Id), $"用户没有实体[{sysEntity.name}]的更新权限", "451FC4BA-46B2-4838-B8D0-69617DFCAF39");
            return(broker.Update(entity));
        }
        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);
            }
        }
Esempio n. 3
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);
        }