Esempio n. 1
0
        /// <summary>
        /// 同步至Consul
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <BaseOutput> SyncApiGatewayConfigurationToConsul(SyncApiGatewayConfigurationInput input)
        {
            var configInfo = await _configDbRepository.GetFirstAsync(it => it.GatewayId == input.GatewayId);

            if (configInfo != null)
            {
                var data = await GetGatewayData(input.GatewayId);

                await _serviceDiscovery.KeyValuePutAsync(configInfo.GatewayKey, Json.ToJson(data));
            }
            return(new BaseOutput {
            });
        }
Esempio n. 2
0
        /// <summary>
        /// 微信小程序登陆
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <WxMiniLoginOutput> WxMiniLogin(WxMiniLoginInput input)
        {
            var openInfo = await _wxRepository.QueryOpenIdAsync(input.Code, input.AppId);

            var authInfo = await _oauthDbRepository.GetFirstAsync(it => it.OpenId == openInfo.OpenId && it.AuthServer == "WxMini");

            if (authInfo == null)
            {
                return new WxMiniLoginOutput {
                           Data = null
                }
            }
            ;
            var uid   = authInfo.Uid;
            var token = _authRepository.CreateAccessToken(new Dto.Auth.UserTokenDto
            {
                Email    = string.Empty,
                Id       = uid,
                Mobile   = "test",
                RealName = "test"
            }, new List <string>());

            return(new WxMiniLoginOutput
            {
                Data = new
                {
                    AccessToken = $"Bearer {token}",
                    Expire = DateTimeOffset.Now.AddHours(4).ToUnixTimeSeconds(),
                    RealName = "test",
                    Mobile = "test",
                    Id = uid
                }
            });
        }
    }
Esempio n. 3
0
        /// <summary>
        /// 用户密码登陆
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <LoginOutput> LoginAsync(LoginInput input)
        {
            var rediscontect = _config.StringGet("RedisDefaultServer");
            var redis        = _redisClient.GetDatabase(rediscontect, 5);
            var kv           = await redis.StringGetAsync($"ImgCode:{input.Guid}");

            if (kv.IsNullOrEmpty || kv.ToString().ToLower() != input.ImgCode.ToLower())
            {
                throw new BucketException("GO_2003", "图形验证码错误");
            }
            // 用户验证
            var userInfo = await _userDbRepository.GetFirstAsync(it => it.UserName == input.UserName);

            if (userInfo == null)
            {
                throw new BucketException("GO_0004007", "账号不存在");
            }
            if (userInfo.State != 1)
            {
                throw new BucketException("GO_0004008", "账号状态异常");
            }
            if (userInfo.Password != Encrypt.SHA256(input.Password + userInfo.Salt))
            {
                throw new BucketException("GO_4009", "账号或密码错误");
            }
            // 用户角色
            //_userDbRepository.AsQueryable().Context.Queryable<>()
            var roleList = await _userDbRepository.AsQueryable().Context.Queryable <RoleInfo, UserRoleInfo>((role, urole) => new object[] { JoinType.Inner, role.Id == urole.RoleId })
                           .Where((role, urole) => urole.Uid == userInfo.Id)
                           .Where((role, urole) => role.IsDel == false)
                           .Select((role, urole) => new { role.Key })
                           .ToListAsync();

            // token返回
            var token = _authRepository.CreateAccessToken(new UserTokenDto
            {
                Email    = userInfo.Email,
                Id       = userInfo.Id,
                Mobile   = userInfo.Mobile,
                RealName = userInfo.RealName,
            }, roleList.Select(it => it.Key).ToList());

            return(new LoginOutput
            {
                Data = new
                {
                    AccessToken = $"Bearer {token}",
                    Expire = DateTimeOffset.Now.AddHours(4).ToUnixTimeSeconds(),
                    RealName = userInfo.RealName.SafeString(),
                    Mobile = userInfo.Mobile.SafeString(),
                    userInfo.Id
                }
            });
        }