コード例 #1
0
ファイル: LoginAppService.cs プロジェクト: zanderzhg/Kard
        private ResultDto WxRegister(KuserEntity user)
        {
            var result = new ResultDto();

            var userEntity = _defaultRepository.FirstOrDefault <KuserEntity>(new { WxOpenId = user.WxOpenId });

            if (userEntity == null)
            {
                result.Result  = false;
                result.Message = $"用户{user.NickName}未登陆成功,注册失败";
                return(result);
            }

            userEntity.AvatarUrl = user.AvatarUrl;
            userEntity.NickName  = user.NickName;
            userEntity.City      = user.City;
            userEntity.Language  = user.Language;
            userEntity.AuditLastModification(_kardSession.UserId.Value);
            result = _defaultRepository.Update(userEntity);
            if (!result.Result)
            {
                result.Message = $"用户{user.NickName}注册失败";
                return(result);
            }

            result.Result  = true;
            result.Message = "注册成功";
            return(result);
        }
コード例 #2
0
        public bool AddUser(OAuthUserInfo oAuthUserInfo)
        {
            var kuserEntity = new KuserEntity();

            kuserEntity.UserType     = "WeChatApp";
            kuserEntity.KroleId      = 1;
            kuserEntity.AvatarUrl    = oAuthUserInfo.headimgurl;
            kuserEntity.NickName     = oAuthUserInfo.nickname;
            kuserEntity.City         = oAuthUserInfo.city;
            kuserEntity.Country      = oAuthUserInfo.country;
            kuserEntity.Gender       = oAuthUserInfo.sex;
            kuserEntity.CreationTime = DateTime.Now;


            var kuserWeChatEntity = new KuserWeChatEntity();

            kuserWeChatEntity.OpenId     = oAuthUserInfo.openid;
            kuserWeChatEntity.SessionKey = string.Empty;
            kuserWeChatEntity.UnionId    = oAuthUserInfo.unionid;
            return(_defaultRepository.TransExecute((conn, trans) =>
            {
                var createResult = conn.CreateAndGetId <KuserEntity, long>(kuserEntity, trans);
                if (!createResult.Result)
                {
                    return false;
                }
                kuserWeChatEntity.KuserId = createResult.Data;
                kuserWeChatEntity.AuditCreation(kuserWeChatEntity.KuserId);
                conn.CreateAndGetId <KuserWeChatEntity, int>(kuserWeChatEntity, trans);
                return true;
            }));
        }
コード例 #3
0
ファイル: LoginAppService.cs プロジェクト: zanderzhg/Kard
        public ResultDto <ClaimsIdentity> WxLogin(string code)
        {
            var result = new ResultDto <ClaimsIdentity>();
            var appid  = "wx109fc14b4956fc70";
            var secret = "a8e7f19d69cbde0272fd866fe7392874";
            var url    = "https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code";

            url = string.Format(url, appid, secret, code);
            var client    = new HttpClient();
            var json      = client.GetStringAsync(url).Result;
            var wxAuthDto = Serialize.FromJson <WxAuthDto>(json);

            if (wxAuthDto.errcode.HasValue && !string.IsNullOrEmpty(wxAuthDto.errmsg))
            {
                result.Result  = false;
                result.Message = $"{wxAuthDto.errcode}:{wxAuthDto.errmsg}";
                return(result);
            }



            var user = _defaultRepository.FirstOrDefault <KuserEntity>(new { WxOpenId = wxAuthDto.openid });

            if (user != null)
            {
                user.WxSessionKey = wxAuthDto.session_key;
                user.AuditLastModification(_kardSession.UserId.Value);
                var updateUserResultDto = _defaultRepository.Update(user);
                if (!updateUserResultDto.Result)
                {
                    result.Result  = false;
                    result.Message = $"用户{user.NickName}被带晕";
                    return(result);
                }
            }
            else
            {
                user              = new KuserEntity();
                user.WxOpenId     = wxAuthDto.openid;
                user.WxSessionKey = wxAuthDto.session_key;
                user.UserType     = "WeChatApp";
                user.KroleId      = 1;
                user.AuditCreation(_kardSession.UserId.Value);
                var createResult = _defaultRepository.CreateAndGetId <KuserEntity, long>(user);
                if (!createResult.Result)
                {
                    result.Result  = false;
                    result.Message = $"用户{user.NickName}被迷路";
                    return(result);
                }
            }



            result.Result  = true;
            result.Message = "login成功";
            result.Data    = AddSessionData(user, WeChatAppDefaults.AuthenticationScheme);

            return(result);
        }
コード例 #4
0
 public ResultDto Register(KuserEntity user)
 {
     user.UserType  = "WebAccount";
     user.KroleId   = 1;
     user.City      = "广州";
     user.AvatarUrl = @"user\id\avatar.jpg";
     user.CoverPath = "";
     user.AuditCreation(1);
     return(_loginAppService.Register("accountRegister", user));
 }
コード例 #5
0
        //public ResultDto<ClaimsIdentity> WxLogin(string code, WeChatUserDto userInfo)
        //{
        //    var result = new ResultDto<ClaimsIdentity>();
        //    var appid = "wx109fc14b4956fc70";
        //    var secret = "a8e7f19d69cbde0272fd866fe7392874";
        //    var url = $"https://api.weixin.qq.com/sns/jscode2session?appid={appid}&secret={secret}&js_code={code}&grant_type=authorization_code";

        //    var client = new HttpClient();
        //    var json = client.GetStringAsync(url).Result;
        //    var wxAuthDto = Serialize.FromJson<WxAuthDto>(json);
        //    if (wxAuthDto.errcode.HasValue && !string.IsNullOrEmpty(wxAuthDto.errmsg))
        //    {
        //        result.Result = false;
        //        result.Message = $"{wxAuthDto.errcode}:{wxAuthDto.errmsg}";
        //        return result;
        //    }



        //    var user = _defaultRepository.FirstOrDefaultByPredicate<KuserEntity>(new { WxOpenId = wxAuthDto.openid });
        //    if (user != null)
        //    {
        //        user.WxSessionKey = wxAuthDto.session_key;
        //        user.AvatarUrl = userInfo.AvatarUrl;
        //        user.NickName = userInfo.NickName;
        //        user.City = userInfo.City;
        //        user.Country = userInfo.Language;
        //        user.Gender = userInfo.Gender;

        //        var updateUserResultDto = _defaultRepository.Update(user);
        //        if (!updateUserResultDto.Result)
        //        {
        //            result.Result = false;
        //            result.Message = $"用户{user.NickName}被带晕";
        //            return result;
        //        }
        //    }
        //    else
        //    {
        //        user = new KuserEntity();
        //        user.WxOpenId = wxAuthDto.openid;
        //        user.WxSessionKey = wxAuthDto.session_key;
        //        user.UserType = "WeChatApp";
        //        user.KroleId = 1;
        //        user.AvatarUrl = userInfo.AvatarUrl;
        //        user.NickName = userInfo.NickName;
        //        user.City = userInfo.City;
        //        user.Country = userInfo.Language;
        //        user.Gender = userInfo.Gender;
        //        user.CreationTime = DateTime.Now;

        //        var createResult = _defaultRepository.CreateAndGetId<KuserEntity, long>(user);
        //        if (!createResult.Result)
        //        {
        //            result.Result = false;
        //            result.Message = $"用户{user.NickName}被迷路";
        //            return result;
        //        }
        //    }



        //    result.Result = true;
        //    result.Message = "login成功";
        //    result.Data = AddSessionData(user, WeChatAppDefaults.AuthenticationScheme);

        //    return result;
        //}


        public ResultDto Register(string registerType, KuserEntity user)
        {
            var resultDto = new ResultDto();

            switch (registerType)
            {
            case "accountRegister": resultDto = AccountRegister(user); break;
                //case "wxRegister": resultDto = WxRegister(user); break;
            }
            return(resultDto);
        }
コード例 #6
0
ファイル: UserController.cs プロジェクト: zanderzhg/Kard
        private KuserEntity GetUser(long?userId)
        {
            string      cacheKey    = $"user[{userId}]";
            KuserEntity kuserEntity = _memoryCache.GetOrCreate(cacheKey, (cacheEntry) =>
            {
                cacheEntry.SetAbsoluteExpiration(DateTime.Now.Date.AddDays(60));

                return(_defaultRepository.FirstOrDefault <KuserEntity, long>(_kardSession.UserId.Value));
            });

            return(kuserEntity);
        }
コード例 #7
0
ファイル: WxController.cs プロジェクト: zanderzhg/Kard
        public ResultDto Register([FromBody] KuserEntity user)
        {
            //var ssss=HttpContext.Session.GetString("ssss");
            if (string.IsNullOrEmpty(_kardSession.WxOpenId))
            {
                return(new ResultDto {
                    Result = false, Message = "未找到open"
                });
            }
            user.WxOpenId = _kardSession.WxOpenId;

            var result = _loginAppService.Register("wxRegister", user);

            return(result);
        }
コード例 #8
0
        //private ResultDto WxRegister(KuserEntity user)
        //{
        //    var result = new ResultDto();

        //    var userEntity = _defaultRepository.FirstOrDefaultByPredicate<KuserEntity>(new { WxOpenId = user.WxOpenId });
        //    if (userEntity == null)
        //    {
        //        result.Result = false;
        //        result.Message = $"用户{user.NickName}未登陆成功,注册失败";
        //        return result;
        //    }

        //    userEntity.AvatarUrl = user.AvatarUrl;
        //    userEntity.NickName = user.NickName;
        //    userEntity.City = user.City;
        //    userEntity.Language = user.Language;
        //    userEntity.AuditLastModification(_kardSession.UserId.Value);
        //    result = _defaultRepository.Update(userEntity);
        //    if (!result.Result)
        //    {
        //        result.Message = $"用户{user.NickName}注册失败";
        //        return result;
        //    }

        //    result.Result = true;
        //    result.Message = "注册成功";
        //    return result;
        //}

        private ClaimsIdentity AddSessionData(KuserEntity user, string scheme = CookieAuthenticationDefaults.AuthenticationScheme)
        {
            user.AuthenticationType = scheme;
            var caimsIdentity = new ClaimsIdentity(user);

            //caimsIdentity.AddClaim(new Claim(KardClaimTypes.IsLogin, (user.Id > 0).ToString()));

            if (user.Id > 0)
            {
                caimsIdentity.AddClaim(new Claim(KardClaimTypes.UserId, user.Id.ToString()));
            }

            //if (!user.WxOpenId.IsNullOrEmpty())
            //{
            //    caimsIdentity.AddClaim(new Claim(KardClaimTypes.WxUnionId, user.WxOpenId));
            //}

            //if (!user.WxSessionKey.IsNullOrEmpty())
            //{
            //    caimsIdentity.AddClaim(new Claim(KardClaimTypes.WxSessionKey, user.WxSessionKey));
            //}


            if (!user.Name.IsNullOrEmpty())
            {
                caimsIdentity.AddClaim(new Claim(KardClaimTypes.Name, user.Name));
            }

            //if (!user.NickName.IsNullOrEmpty())
            //{
            //    caimsIdentity.AddClaim(new Claim(KardClaimTypes.NickName, user.NickName));
            //}


            //if (!user.Phone.IsNullOrEmpty())
            //{
            //    caimsIdentity.AddClaim(new Claim(KardClaimTypes.Phone, user.Phone));
            //}


            //if (!user.Email.IsNullOrEmpty())
            //{
            //    caimsIdentity.AddClaim(new Claim(KardClaimTypes.Email, user.Email));
            //}

            return(caimsIdentity);
        }
コード例 #9
0
        private ResultDto AccountRegister(KuserEntity user)
        {
            var resultDto     = new ResultDto();
            var existUserList = _repositoryFactory.GetRepository <IKuserRepository>().GetExistUser(user.Name, user.Phone, user.NickName);
            var existName     = existUserList.Where(u => u.Name == user.Name).Any();
            var existPhone    = existUserList.Where(u => u.Phone == user.Phone).Any();
            var existNickName = existUserList.Where(u => u.NickName == user.NickName).Any();

            if (existName || existPhone || existNickName)
            {
                resultDto.Result  = false;
                resultDto.Message = $"{(existName ? "邮箱 " : "")}{(existPhone ? "手机 " : "")}{(existNickName ? "昵称 " : "")}已被注册";
                return(resultDto);
            }

            //newEntity.AppId = _defaultRepository.FirstOrDefault<RetailerEntity, string>(newEntity.RetailerId)?.AppId;
            //var result = _passwordValidator.ValidateAsync(_userManager, user, user.Password).Result;
            //if (!result.Succeeded)
            //{
            //    resultDto.Result = false;
            //    resultDto.Message = $"密码{ string.Join(";", result.Errors)}";
            //    return resultDto;
            //}

            user.Password = _passwordHasher.HashPassword(user, user.Password);



            //resultDto.Result = _defaultRepository.CreateAccountUser(user);
            //resultDto.Message = resultDto.Result?"注册成功": "注册失败";
            //return resultDto;
            var createResultDto = _defaultRepository.CreateAndGetId <KuserEntity, long>(user);

            resultDto.Result  = createResultDto.Result;
            resultDto.Message = createResultDto.Message;
            return(resultDto);
        }