public async Task <User> LoginAsync(string username, string password)
        {
            try
            {
                var ses = await Gitee.Api.SDK.LoginAsync(username, password);

                var userdetail = await ses.GetUserAsync();

                var user = new Shared.User()
                {
                    Detail = userdetail, Session = ses, Username = username
                };
                return(user);
            }
            catch (WebException we)
            {
                OutputWindowHelper.ExceptionWriteLine($"LoginAsync:{we.Message}", we);
                throw we;
            }
            catch (Exception ex)
            {
                OutputWindowHelper.ExceptionWriteLine($"LoginAsync:{ex.Message}", ex);
                throw ex;
            }
        }
Example #2
0
 public void Erase()
 {
     _user = null;
     EraseCredential("git:https://gitee.com");
     EraseCredential("access_token:https://gitee.com");
     EraseCredential("refresh_token:https://gitee.com");
     File.Delete(_path);
 }
Example #3
0
        private void SaveToken(Shared.User user)
        {
            var key = "access_token:https://gitee.com";

            using (var credential = new Credential(user.Username, user.Session.Token.access_token, key))
            {
                credential.Description = user.Session.Token.Expires.ToString("yyyy-MM-dd HH:mm:ss");
                credential.Save();
            }
            var refkey = "refresh_token:https://gitee.com";

            using (var credential = new Credential(user.Username, user.Session.Token.refresh_token, refkey))
            {
                credential.Save();
            }
        }
Example #4
0
        private async Task LoadUserAsync()
        {
            try
            {
                Gitee.Api.SDK.client_id     = Gitee.Api.SdkConfig.client_id;
                Gitee.Api.SDK.client_secret = Gitee.Api.SdkConfig.client_secret;
                var token = GetAccessToken();
                _user = new User();
                if (string.IsNullOrEmpty(token.access_token) || DateTime.Now > token.exp)
                {
                    if (!string.IsNullOrEmpty(token.refresh_token))
                    {
                        try
                        {
                            _user.Session = await SDK.RefreshToken(token.refresh_token);

                            SaveToken(_user);
                        }
                        catch (Exception)
                        {
                            _user.Session = null;
                        }
                    }
                }
                else
                {
                    _user.Session = SDK.ContinueByToken(token.refresh_token, token.access_token, token.exp);
                }
                if (_user.Session != null)
                {
                    _user.Username = token.username;
                    if (_user.Detail == null)
                    {
                        _user.Detail = await _user.Session.GetUserAsync();
                    }
                }
            }
            catch (Exception ex)
            {
                _user.Session = null;
            }
            try
            {
                if (_user.Session == null)
                {
                    var key = "git:https://gitee.com";
                    using (var credential = new Credential())
                    {
                        credential.Target = key;
                        credential.Load();
                        _user.Username = credential.Username;
                        _user.Session  = await SDK.LoginAsync(credential.Username, credential.Password);

                        SaveToken(_user);
                        _user.Detail = await _user.Session.GetUserAsync();
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("用户登录凭证无效,请重新登陆", ex);
            }
            finally
            {
                if (_user?.Session == null || _user?.Detail == null)
                {
                    _user = null;
                }
            }
        }
Example #5
0
 public void SaveUser(User user, string password)
 {
     SavePassword(user.Email, password);
     SaveToken(user);
     _user = user;
 }