コード例 #1
0
        private async void NavigateUserOnSignedInResult(LogOnResult result)
        {
            if (result.SignedIn)
            {
                IsSignInInvalid = false;

                switch (result.AccountStatus)
                {
                case UserAccountStatus.Activated:
                    _navigationService.ClearHistory();
                    _navigationService.Navigate(ViewNames.Dashboard, null);
                    break;

                case UserAccountStatus.NotActivated:
                    _navigationService.Navigate(ViewNames.ConfirmRegistration, null);
                    break;

                case UserAccountStatus.Blocked:
                    await _alertMessageService.ShowAsync(_resourceLoader.GetString("AccountBlockedByAdmin"), string.Empty,
                                                         DialogCommands.CloseDialogCommand);

                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                Close();
            }
            else
            {
                IsSignInInvalid = true;

                await _alertMessageService.ShowAsync(_resourceLoader.GetString("InvalidUserNameOrPassword"), _resourceLoader.GetString("Error"), DialogCommands.CloseDialogCommand);
            }
        }
コード例 #2
0
        public static LogOnResult IntegerToLoginResult(int value)
        {
            LogOnResult res = LogOnResult.Fail;

            switch (value)
            {
            case 0:
                res = LogOnResult.None;
                break;

            case 1:
                res = LogOnResult.Ok;
                break;

            case 2:
                res = LogOnResult.LockUser;
                break;

            case 3:
                res = LogOnResult.Fail;
                break;

            case 1001:
                res = LogOnResult.Admin;
                break;

            case 1002:
                res = LogOnResult.Administrative;
                break;
            }

            return(res);
        }
コード例 #3
0
ファイル: MainWindow.xaml.cs プロジェクト: justplus/doubanFM1
        /// <summary>
        /// 用户登陆
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void loginButton_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (string.IsNullOrEmpty(userName.Text.Trim()))
            {
                errorMessage.Content = "用户名不能为空";
            }
            else if (string.IsNullOrEmpty(userPassword.Password.Trim()))
            {
                errorMessage.Content = "密码不能为空";
            }
            else if (string.IsNullOrEmpty(userCaptcha.Text.Trim()))
            {
                errorMessage.Content = "验证码不能为空";
            }
            else
            {
                Parameters parameters = new Parameters();
                parameters.Add("source", "radio");
                parameters.Add("alias", userName.Text.Trim());
                parameters.Add("form_password", userPassword.Password.Trim());
                parameters.Add("captcha_solution", userCaptcha.Text.Trim());
                parameters.Add("captcha_id", CaptchaID);
                parameters.Add("from", "mainsite");
                parameters.Add("remember", "on");
                string LogOnJson = "";
                await Task.Run(() =>
                {
                    LogOnJson = new ConnectionBase().Post("http://douban.fm/j/login", Encoding.UTF8.GetBytes(parameters.ToString()));
                });

                if (LogOnJson == string.Empty)
                {
                    errorMessage.Content = "网络连接错误";
                    return;
                }
                else
                {
                    LogOnResult logonresult = LogOnResult.FromJson(LogOnJson);
                    if (logonresult.r == 1)
                    {
                        errorMessage.Content = logonresult.err_msg;
                        return;
                    }
                    else if (logonresult.r == 0)
                    {
                        loginCanvas.Visibility   = Visibility.Collapsed;
                        loginedCanvas.Visibility = Visibility.Visible;
                        loginedName.Content      = logonresult.user_info.name;
                        loginedPlayed.Content    = logonresult.user_info.play_record.played + "首";
                        loginedLiked.Content     = logonresult.user_info.play_record.liked + "首";
                        loginedBanned.Content    = logonresult.user_info.play_record.banned + "首";
                        loginTitle.Content       = "用户";
                        LoginState    = 1;
                        loginUserName = logonresult.user_info.name;
                    }
                }
            }
        }
コード例 #4
0
ファイル: UserAssistant.cs プロジェクト: sammygd/DoubanFMFix
        ///// <summary>
        ///// 验证码ID
        ///// </summary>
        //private string captchaId;

        #endregion

        #region 成员方法

        ///// <summary>
        ///// 更新验证码
        ///// </summary>
        //public void UpdateCaptcha()
        //{
        //    HasCaptcha = true;
        //    captchaId = null;
        //    CaptchaUrl = null;
        //    ThreadPool.QueueUserWorkItem(new WaitCallback((state) =>
        //        {
        //            captchaId = new ConnectionBase().Get("http://douban.fm/j/new_captcha");
        //            Dispatcher.BeginInvoke(new Action(() =>
        //                {
        //                    if (string.IsNullOrEmpty(captchaId))
        //                    {
        //                        HasCaptcha = false;
        //                        captchaId = null;
        //                        CaptchaUrl = null;
        //                    }
        //                    else
        //                    {
        //                        captchaId = captchaId.Trim('\"');
        //                        HasCaptcha = true;
        //                        CaptchaUrl = @"http://douban.fm/misc/captcha?size=m&id=" + captchaId;
        //                    }
        //                }));
        //        }));
        //}

        ///// <summary>
        ///// 根据douban.fm的主页的HTML代码更新登录状态
        ///// </summary>
        ///// <param name="html">HTML文件</param>
        //internal void Update(string html)
        //{
        //    if (!string.IsNullOrEmpty(html))
        //    {
        //        //获取昵称和播放记录
        //        Match match2 = Regex.Match(html, @"""user_name""[^<>]*?>(?!{{)([^<>]*?)\s*<", RegexOptions.Singleline);

        //        string nickname = match2.Groups[1].Value;
        //        Match match3 = Regex.Match(html, @"累积收听.*?(\d+).*?首");
        //        int played = 0;
        //        int.TryParse(match3.Groups[1].Value, out played);
        //        Match match4 = Regex.Match(html, @"加红心.*?(\d+).*?首");
        //        int liked = 0;
        //        int.TryParse(match4.Groups[1].Value, out liked);
        //        Match match5 = Regex.Match(html, @"(\d+).*?首不再播放");
        //        int banned = 0;
        //        int.TryParse(match5.Groups[1].Value, out banned);

        //        //更改属性
        //        Dispatcher.Invoke(new Action(() =>
        //        {
        //            /*System.Diagnostics.Debug.WriteLine("**********************************************************************");
        //            System.Diagnostics.Debug.WriteLine(DateTime.Now + " 以下是本次“登录/注销”返回的结果页面");
        //            System.Diagnostics.Debug.Indent();
        //            System.Diagnostics.Debug.WriteLine(html);
        //            System.Diagnostics.Debug.Unindent();
        //            System.Diagnostics.Debug.WriteLine("**********************************************************************");
        //            */
        //            if (!string.IsNullOrEmpty(nickname))
        //            {
        //                Settings.User.Nickname = nickname;
        //                Settings.User.Played = played;
        //                Settings.User.Liked = liked;
        //                Settings.User.Banned = banned;
        //                System.Diagnostics.Debug.WriteLine("已登录");
        //                CurrentState = State.LoggedOn;
        //            }
        //            else
        //            {
        //                Settings.User.Nickname = string.Empty;
        //                System.Diagnostics.Debug.WriteLine("已注销");
        //                CurrentState = State.LoggedOff;
        //            }
        //        }));
        //    }
        //    else
        //        Dispatcher.Invoke(new Action(() =>
        //            {
        //                if (CurrentState == State.LoggingOn) CurrentState = State.LoggedOff;
        //                else if (CurrentState == State.LoggingOff) CurrentState = State.LoggedOn;
        //                else if (CurrentState == State.Unknown) CurrentState = State.LoggedOff;
        //                else CurrentState = State.LoggedOff;
        //            }));
        //}
        /// <summary>
        /// 根据服务器返回的登录结果更新登录状态
        /// </summary>
        private void UpdateWhenLogOn(LogOnResult result)
        {
            Debug.Assert(result != null, "result != null");
            string errorMessage = null;

            if (!result.r)
            {
                Settings.User.UserID   = result.user_id;
                Settings.User.Token    = result.token;
                Settings.User.Expire   = result.expire;
                Settings.User.Nickname = result.user_name;
                Settings.User.Email    = result.email;

                UpdateUserInfo();
            }
            else
            {
                Debug.WriteLine(result.err);
                switch (result.err)
                {
                case "invalid_username":
                    errorMessage = Resources.Resources.InvalidUsername;
                    break;

                case "wrong_password":
                    errorMessage = Resources.Resources.WrongPassword;
                    break;

                case null:
                case "":
                case "unknown_error":
                    errorMessage = Resources.Resources.UnknownError;
                    break;

                default:
                    errorMessage = result.err;
                    break;
                }
            }
            Dispatcher.Invoke(new Action(() =>
            {
                LogOnFailedMessage = errorMessage;
                if (!string.IsNullOrEmpty(Settings.User.Token))
                {
                    CurrentState = State.LoggedOn;
                }
                else
                {
                    ResetUser();
                }
            }));
        }
コード例 #5
0
ファイル: UserAssistant.cs プロジェクト: sammygd/DoubanFMFix
        /// <summary>
        /// 登录
        /// </summary>
        public void LogOn()
        {
            if (CurrentState != State.LoggedOff)
            {
                return;
            }
            CurrentState = State.LoggingOn;
            var username = Settings.User.Username ?? string.Empty;
            var password = Settings.User.Password ?? string.Empty;

            ThreadPool.QueueUserWorkItem(state =>
            {
                LogOnResult result          = null;
                List <string> errorMessages = new List <string>();
                if (Regex.Match(username, @"^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$", RegexOptions.IgnoreCase).Success)
                {
                    var resultEmail = LogOnWithEmail(username, password);
                    if (resultEmail != null)
                    {
                        if (!resultEmail.r)
                        {
                            result = resultEmail;
                        }
                        else
                        {
                            errorMessages.Add(resultEmail.err);
                        }
                    }
                }
                if (result == null)
                {
                    var resultUsername = LogOnWithUsername(username, password);
                    if (resultUsername != null)
                    {
                        if (!resultUsername.r)
                        {
                            result = resultUsername;
                        }
                        else
                        {
                            errorMessages.Add(resultUsername.err);
                        }
                    }
                }
                if (result == null)
                {
                    result = new LogOnResult {
                        r = true
                    };
                    var invalidUsername = new[] { "invalid_user_name", "invalidate_email", "wrong_email" };
                    errorMessages       =
                        (from message in errorMessages
                         where !string.IsNullOrEmpty(message)
                         select invalidUsername.Contains(message) ? "invalid_username" : message).Distinct().ToList();
                    if (errorMessages.Count == 0)
                    {
                        result.err = "unknown_error";
                    }
                    else
                    {
                        result.err = errorMessages.FirstOrDefault(message => message != "invalid_username") ??
                                     errorMessages[0];
                    }
                }
                UpdateWhenLogOn(result);
            });
        }