コード例 #1
0
        public AccountSignResult CreateNew(ClientDevice entity)
        {
            var result = new AccountSignResult();

            result.SignStatus = SignStatus.None;

            if (null == entity ||
                string.IsNullOrEmpty(entity.DeviceKey) ||
                string.IsNullOrEmpty(entity.Product) ||
                string.IsNullOrEmpty(entity.Brand))
            {
                this.ReturnPreconditionFailedMessage();
            }

            var account = AccountAuthentication.CreateNew(entity);

            if (null != account)
            {
                result.SignStatus = SignStatus.Success;
                result.Account    = new AccountEntity(account, null);

                WriteTokenToBrowser(result);
            }
            else
            {
                result.SignStatus = SignStatus.Error;
            }

            return(result);
        }
コード例 #2
0
        public AccountSignResult BindThirdPassport(ThirdPassport entity)
        {
            if (null == entity || string.IsNullOrEmpty(entity.Platform) || string.IsNullOrEmpty(entity.PlatformPassportId))
            {
                return(null);
            }
            var account = MvcContext.Current.ClientAccount;

            if (null == account)
            {
                return(null);
            }

            var          signStatus   = SignStatus.Error;
            UserPassport userPassport = AccountAuthentication.BindThirdPassport(entity, out signStatus);

            var result = new AccountSignResult();

            result.SignStatus = signStatus;
            if (result.SignStatus == SignStatus.Success)
            {
                result.Account = new AccountEntity(account, userPassport);
                WriteTokenToBrowser(result);
            }
            else
            {
                result.ErrorMessage = "绑定账号失败";
            }
            return(result);
        }
コード例 #3
0
        public AccountSignResult ShortcutSignIn(AccountSign entity)
        {
            if (null == entity || string.IsNullOrEmpty(entity.MobilePhone) || string.IsNullOrEmpty(entity.ValidationCode))
            {
                return(null);
            }
            var account = MvcContext.Current.ClientAccount;

            if (null == account)
            {
                return(null);
            }

            var passportId = UserPassport.FindIdByMobilePhone(entity.MobilePhone);

            if (passportId == 0)
            {
                entity.Password = HashHelper.ComputeHash(entity.MobilePhone, HashAlgorithmName.SHA1).Substring(0, 6);
                return(SignUp(entity));
            }

            var isValid = MessageHelper.CheckSMSValidationCode(entity.MobilePhone, entity.ValidationCode);

            if (MvcContext.Current.Test && entity.ValidationCode == AppEnvironment.TestValidationCode)
            {
                isValid = true;
            }
            if (false == isValid)
            {
                return(new AccountSignResult()
                {
                    SignStatus = SignStatus.InvalidValidationCode,
                    ErrorMessage = "验证码无效,请重新获取"
                });
            }
            if (!string.IsNullOrEmpty(entity.InviteCode))
            {
                System.Web.HttpContext.Current.Items.Add(WorkplaceApplication.InviteCodeKey, entity.InviteCode);
            }
            UserPassport userPassport = null;
            var          isSignIn     = AccountAuthentication.SignIn(passportId, new SignedInLog(), out userPassport);

            var result = new AccountSignResult();

            result.SignStatus = isSignIn ? SignStatus.Success : SignStatus.InvalidPassword;
            if (result.SignStatus == SignStatus.Success)
            {
                result.Account          = new AccountEntity(account, userPassport);
                result.AdditionalAction = ProcessAdditionalAction(entity.AdditionalAction);

                WriteTokenToBrowser(result);
            }
            else
            {
                result.ErrorMessage = "用户名或密码错误";
            }
            return(result);
        }
コード例 #4
0
        private void WriteTokenToBrowser(AccountSignResult signResult)
        {
            if (null == signResult || signResult.SignStatus != SignStatus.Success)
            {
                return;
            }

            if (null != this.Request.Headers.UserAgent)
            {
                if (signResult.Account.PassportId > 0)
                {
                    CookieHelper.SetCookie(AccountAuthentication.TokenKey, signResult.Account.Token.AccessToken);
                }
                else
                {
                    CookieHelper.SetCookie(AccountAuthentication.TokenKey, signResult.Account.Token.AccessToken, DateTime.MaxValue);
                }
            }
        }
コード例 #5
0
        public AccountSignResult SignIn(AccountSign entity)
        {
            if (null == entity || string.IsNullOrEmpty(entity.MobilePhone) || string.IsNullOrEmpty(entity.Password))
            {
                return(null);
            }
            var account = MvcContext.Current.ClientAccount;

            if (null == account)
            {
                return(null);
            }

            if (!string.IsNullOrEmpty(entity.InviteCode))
            {
                System.Web.HttpContext.Current.Items.Add(WorkplaceApplication.InviteCodeKey, entity.InviteCode);
            }
            UserPassport userPassport = null;
            var          isSignIn     = AccountAuthentication.SignIn(entity.MobilePhone, entity.Password, new SignedInLog(), out userPassport);

            var result = new AccountSignResult();

            result.SignStatus = isSignIn ? SignStatus.Success : SignStatus.InvalidPassword;
            if (result.SignStatus == SignStatus.Success)
            {
                result.Account          = new AccountEntity(account, userPassport);
                result.AdditionalAction = ProcessAdditionalAction(entity.AdditionalAction);

                WriteTokenToBrowser(result);
            }
            else
            {
                result.ErrorMessage = "用户名或密码错误";
            }
            return(result);
        }
コード例 #6
0
        public AccountSignResult SignUp(AccountSign entity)
        {
            if (null == entity || string.IsNullOrEmpty(entity.MobilePhone) || string.IsNullOrEmpty(entity.Password) ||
                string.IsNullOrEmpty(entity.ValidationCode) || ProfileType.None == entity.SelectedProfileType)
            {
                this.ReturnPreconditionFailedMessage();
            }
            var account = MvcContext.Current.ClientAccount;

            if (null == account)
            {
                this.ReturnPreconditionFailedMessage();
            }

            var isValid = MessageHelper.CheckSMSValidationCode(entity.MobilePhone, entity.ValidationCode);

            if (MvcContext.Current.Test && entity.ValidationCode == AppEnvironment.TestValidationCode)
            {
                isValid = true;
            }
            if (false == isValid)
            {
                return(new AccountSignResult()
                {
                    SignStatus = SignStatus.InvalidValidationCode,
                    ErrorMessage = "验证码无效,请重新获取"
                });
            }
            if (!string.IsNullOrEmpty(entity.InviteCode))
            {
                System.Web.HttpContext.Current.Items.Add(WorkplaceApplication.InviteCodeKey, entity.InviteCode);
            }

            var signStatus = SignStatus.Error;

            var signedUpInfo = new SignedUpInfo()
            {
                InviteCode    = entity.InviteCode,
                SignedUpIp    = this.Request.GetClientIP(),
                HttpUserAgent = this.Request.GetUserAgent(),
                HttpReferer   = null == this.Request.Headers.Referrer ? "" : this.Request.Headers.Referrer.ToString()
            };
            var userPassport = AccountAuthentication.SignUp(entity.MobilePhone, entity.Password, entity.SelectedProfileType, signedUpInfo, out signStatus);

            var result = new AccountSignResult();

            result.SignStatus = signStatus;
            if (result.SignStatus == SignStatus.Success)
            {
                result.CreatedNewPassport = true;
                result.Account            = new AccountEntity(account, userPassport);
                result.AdditionalAction   = ProcessAdditionalAction(entity.AdditionalAction);

                WriteTokenToBrowser(result);
            }
            else
            {
                if (result.SignStatus == SignStatus.DuplicateMobilePhone)
                {
                    result.ErrorMessage = "手机号已经注册";
                }
                else
                {
                    result.ErrorMessage = "注册失败";
                }
            }

            return(result);
        }