Exemple #1
0
        void bindingKeyCommand()
        {
            if (string.IsNullOrEmpty(this.UserID))
            {
                this.ShowDialog("提示信息", "请先登录", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning);
                return;
            }

            if (string.IsNullOrEmpty(this.PrivateKey))
            {
                this.ShowDialog("提示信息", "私有Key", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning);
                return;
            }

            if (string.IsNullOrEmpty(this.PublicKey))
            {
                this.ShowDialog("提示信息", "没有公有Key", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning);
                return;
            }

            var keyInfo = new KeyBodyInfo()
            {
                public_key  = PublicKey,
                secret_type = (byte)this.SelectSecretType
            };

            WebAPI.Instance.SetSecret(keyInfo, CacheManager.Instance.LoginUser.AccessToken);
        }
Exemple #2
0
        public Tuple <bool, string, string> SetSecret(KeyBodyInfo secretInfo, string token)
        {
            var url  = $"{LoginUrl}&method={Method_Secrets}&access_token={token}";
            var body = Newtonsoft.Json.JsonConvert.SerializeObject(secretInfo);

            return(this.PostString(url, body));
        }
Exemple #3
0
        public Tuple <bool, string> SetSecret(KeyBodyInfo secretInfo, string token)
        {
            var url = $"{LoginUrl}&method={Method_Secrets}&access_token={token}";

            var message = Newtonsoft.Json.JsonConvert.SerializeObject(secretInfo);

            var response = _easyHttpClient.Post(url, message, HttpContentTypes.ApplicationJson);

            string result = null;

            bool resultBool = false;

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                var responseInfo = Newtonsoft.Json.JsonConvert.DeserializeObject <ResponseInfo>(response.RawText);
                if (responseInfo.code == 20000)
                {
                    resultBool = true;
                }
                else
                {
                    List <MessageInfo> messageInfo;
                    try
                    {
                        messageInfo = Newtonsoft.Json.JsonConvert.DeserializeObject <List <MessageInfo> >(responseInfo.msg);
                        StringBuilder stringBuilder = new StringBuilder();
                        messageInfo?.ForEach(mi =>
                        {
                            stringBuilder.AppendLine($"({mi.ErrorCode}){mi.Description}");
                        });

                        result = stringBuilder.ToString();
                    }
                    catch
                    {
                        result = $"{responseInfo.msg}";
                    }
                    resultBool = false;
                }
            }
            else
            {
                resultBool = false;
            }
            return(Tuple.Create <bool, string>(resultBool, result));
        }
        public static bool SignCheck()
        {
            // 注册Key.
            var keyInfo = new KeyBodyInfo()
            {
                public_key  = CacheManager.Instance.LoginUser.PublickKey,
                secret_type = (int)SecretTypeEnum.RSA2
            };

            var secret = WebAPI.Instance.SetSecret(keyInfo, CacheManager.Instance.LoginUser.AccessToken);

            if (!secret.Item1)
            {
                CustomControl.DialogWindowHelper.ShowDialog("提示信息", secret.Item2, CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning);

                System.Diagnostics.Process.Start(System.IO.Path.Combine(Environment.CurrentDirectory, "Client.exe"));

                DispatcherHelper.CheckBeginInvokeOnUI(() =>
                {
                    Environment.Exit(0);
                });
            }
            return(secret.Item1);
        }
Exemple #5
0
        /// <summary>
        /// 登录验证
        /// </summary>
        /// <param name="obj">登录窗口</param>
        void loginCommand(object obj)
        {
            Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

            string loginUrl     = cfa.AppSettings.Settings["xy:login.address"].Value;
            string loginPort    = cfa.AppSettings.Settings["xy:login.port"].Value;
            string loginVersion = cfa.AppSettings.Settings["xy:login.version"].Value;
            string loginPath    = $"{loginUrl}:{loginPort}";

            WebAPI.Instance.SetLoginFactory(loginPath, loginVersion);

            LoginWindow win      = obj as LoginWindow;
            string      password = win.pb_password.Password;

            if (string.IsNullOrEmpty(password))
            {
                this.ShowDialog("提示信息", "密码为空!", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning);
                return;
            }

            if (string.IsNullOrEmpty(this.UserName))
            {
                this.ShowDialog("提示信息", "用户名不能为空!", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning);
                return;
            }

            if (this.IsRemember)
            {
                // 记录用户名
                usernameFile.CombineCurrentDirectory().SerializeObjectToJson(this.UserName);
            }

            if (this.IsRememberPassWord)
            {
                // 记录密码
                "password.info".CombineCurrentDirectory().SerializeObjectToJson(password);
            }

            base.ShowLoading = true;

            Task.Run(() =>
            {
                var userInfo = new LoginInfo()
                {
                    user_name = this.UserName,
                    password  = password
                };

                return(WebAPI.Instance.Login(userInfo));
            }).ContinueWith(r =>
            {
                this.ShowLoading = false;

                if (r.Result.Item1)
                {
                    CacheManager.Instance.LoginUser = new Models.User()
                    {
                        ID          = r.Result.Item2.user_id,
                        UserName    = r.Result.Item2.user_name,
                        AccessToken = r.Result.Item2.access_token,
                        MixKey      = r.Result.Item2.mix_key,
                        PassWord    = password
                    };

                    string key = $"{CacheManager.Instance.LoginUser.UserName}.key";

                    // 检查IP地址
                    if (System.IO.File.Exists(lastAdress.CombineCurrentDirectory()))
                    {
                        string check_url  = cfa.AppSettings.Settings["xy:address"].Value;
                        string check_port = cfa.AppSettings.Settings["xy:port"].Value;
                        string check_path = $"{check_url}:{check_port}";

                        var lassAdress = lastAdress.CombineCurrentDirectory().DeSerializeObjectFromJson <string>();

                        if (!lassAdress.Equals(check_path))
                        {
                            System.IO.File.Delete(key.CombineCurrentDirectory());
                        }
                    }

                    // 检查本地是否有(密钥和公钥)
                    if (System.IO.File.Exists(key.CombineCurrentDirectory()))
                    {
                        // 0-公钥,1-私钥
                        List <string> keys = key.CombineCurrentDirectory().DeSerializeObjectFromJson <List <string> >();
                        CacheManager.Instance.LoginUser.PublickKey = keys[0];
                        CacheManager.Instance.LoginUser.PrivateKey = keys[1];
                    }
                    else
                    {
                        // 1.生成密钥
                        List <string> keys = new List <string>();

                        keys = RSAUtil.GenerateSuiteKeys()?.ToList();

                        CacheManager.Instance.LoginUser.PublickKey = keys[0];
                        CacheManager.Instance.LoginUser.PrivateKey = keys[1];

                        key.CombineCurrentDirectory().SerializeObjectToJson(keys);

                        var keyInfo = new KeyBodyInfo()
                        {
                            public_key  = keys[0],
                            secret_type = (int)SecretTypeEnum.RSA2
                        };

                        // 2.绑定密钥
                        var secret = WebAPI.Instance.SetSecret(keyInfo, CacheManager.Instance.LoginUser.AccessToken);
                        if (!secret.Item1)
                        {
                            DispatcherHelper.CheckBeginInvokeOnUI(() =>
                            {
                                var dialog = this.ShowDialog("提示信息", secret.Item2, CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning);
                            });
                            return;
                        }
                    }

                    #region 设置排课连接

                    string url     = cfa.AppSettings.Settings["xy:address"].Value;
                    string port    = cfa.AppSettings.Settings["xy:port"].Value;
                    string version = cfa.AppSettings.Settings["xy:version"].Value;
                    string path    = $"{url}:{port}";

                    WebAPI.Instance.SetFactory(path, version, CacheManager.Instance.LoginUser.ID);

                    lastAdress.CombineCurrentDirectory().SerializeObjectToJson(path);

                    #endregion

                    var isAnnual = WebAPI.Instance.GetAnnual();
                    if (isAnnual.Item1)
                    {
                        CacheManager.Instance.LoginUser.IsAnnual = isAnnual.Item2;
                    }

                    //Messenger.Default.Send<string>("refresh");

                    DispatcherHelper.CheckBeginInvokeOnUI(() =>
                    {
                        win.DialogResult = true;
                    });
                }
                else
                {
                    DispatcherHelper.CheckBeginInvokeOnUI(() =>
                    {
                        this.ShowDialog("提示信息", r.Result.Item3, CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning);
                    });
                }
            });
        }