public Task RemoveSnsInfoAsync(GreenspotUser user)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            _userSnsInfoRepository.Delete(user.Id);
            return(Task.FromResult(0));
        }
        public Task AddSnsInfoAsync(GreenspotUser user, GreenspotUserSnsInfo snsInfo)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            if (!user.SnsInfos.Values.Any(x => x.SnsName == snsInfo.SnsName && x.InfoKey == snsInfo.InfoKey))
            {
                user.SnsInfos.Add(snsInfo.InfoKey, snsInfo);


                _userSnsInfoRepository.Insert(user.Id, snsInfo);
            }
            return(Task.FromResult(0));
        }
Пример #3
0
        public async Task <ActionResult> WeChatMpLoginCallback(string returnUrl)
        {
            var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();

            if (loginInfo == null)
            {
                StallApplication.BizErrorFormat("[MSG]failed to get login info");
                return(View("Error"));
            }

            // Sign in the user with this external login provider if the user already has a login
            var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent : false);

            switch (result)
            {
            case SignInStatus.Success:
                StallApplication.SysInfoFormat(string.Format("[MSG]signIn succeed, redirec to {0}", returnUrl));
                return(Redirect(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = false }));

            case SignInStatus.Failure:
            default:
                // If the user does not have an account, then prompt the user to create an account
                ViewBag.ReturnUrl     = returnUrl;
                ViewBag.LoginProvider = loginInfo.Login.LoginProvider;

                GreenspotUser user = new GreenspotUser()
                {
                    UserName = ""
                };
                var rslt = await UserManager.CreateAsync(loginInfo, user);

                if (rslt.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    return(Redirect(returnUrl));
                }
                return(Redirect(returnUrl));
            }
        }
 // This is the extension method.
 // The first parameter takes the "this" modifier
 // and specifies the type for which the method is defined.
 public static bool HasSubscribed(this GreenspotUser user)
 {
     return(bool.Parse(user.SnsInfos[WeChatClaimTypes.Subscribed].InfoValue));
 }