示例#1
0
        private async Task <LoginSocialDto> LoginSocialReturn(string userIDSocial, LoginSocialDto model)
        {
            var responseModel = new LoginSocialDto();

            responseModel.Email         = model.Email;
            responseModel.LoginProvider = model.LoginProvider;
            responseModel.ProviderKey   = model.ProviderKey;
            if (!String.IsNullOrEmpty(userIDSocial))
            {
                var appUser = _userManager.Users.SingleOrDefault(r => r.Id == userIDSocial);
                responseModel.Email = model.Email;
                var lstRole = await _userManager.GetRolesAsync(appUser);

                //responseModel.Role = lstRole.Count > 0 ? string.Join(",", lstRole) : "";
                var jwt = await GenerateJwtToken(model.Email, appUser);

                responseModel.JWT = jwt.ToString();
                responseModel.Id  = appUser.Id;
                return(responseModel);
            }
            else
            {
                responseModel.ErrorCode = "005";
                responseModel.Message   = ConstMessage.GetMsgConst("005");
                return(responseModel);
            }
        }
示例#2
0
        private async Task <object> LoginBySocial([FromBody] LoginSocialDto model)
        {
            var responseModel = new LoginSocialDto();

            responseModel.Email         = model.Email;
            responseModel.LoginProvider = model.LoginProvider;
            responseModel.ProviderKey   = model.ProviderKey;
            if (Util.IsPhoneNumber(model.Email))
            {
                model.Email = $"{model.Email}@hanoma.vn";
            }
            //Check input Email Pass
            if (String.IsNullOrEmpty(model.Email))
            {
                responseModel.ErrorCode = "ACC006";
                responseModel.Message   = ConstMessage.GetMsgConst("ACC006");
                return(responseModel);
            }
            else
            {
                //Check exists User
                var userIDSocial =
                    _repositoryWrapper.AspNetUsers.CheckExistsUserSocial(model.LoginProvider, model.ProviderKey);
                if (userIDSocial != null)
                {
                    return(LoginSocialReturn(userIDSocial, model));
                }
                else
                {
                    if (Util.IsPhoneNumber(model.Email))
                    {
                        model.Email = $"{model.Email}@hanoma.vn";
                    }
                    var user = new ApplicationUser
                    {
                        UserName = model.Email,
                        Email    = model.Email
                    };
                    var result = await _userManager.CreateAsync(user);

                    if (result.Succeeded)
                    {
                        _logger.LogInfo($"[AccountController] Đăng ký thành công {model.Email} ");
                        try
                        {
                            _repositoryWrapper.AspNetUsers.CreateNewUserProfile(user.Id, user.Email, null, 1);
                            //Create Social
                            _repositoryWrapper.AspNetUsers.CreateUserSocial(model.LoginProvider, model.ProviderKey, user.Id);
                            //return
                            return(LoginSocialReturn(user.Id, model));
                        }
                        catch (Exception ex)
                        {
                            _logger.LogError($"[Account Controller] {ex}");
                            return(LoginSocialReturn(null, model));
                        }
                    }
                    else
                    {
                        _logger.LogError($"[Account Controller] Error with Create Account Social");
                        return(LoginSocialReturn(null, model));
                    }
                }
            }
        }