예제 #1
0
        public async Task <Client> LoginAccount(GitHubAccount account)
        {
            //Create the client
            Client client = null;

            if (!string.IsNullOrEmpty(account.OAuth))
            {
                client = Client.BasicOAuth(account.OAuth, account.Domain ?? Client.DefaultApi);
            }
            else if (account.IsEnterprise || !string.IsNullOrEmpty(account.Password))
            {
                client = Client.Basic(account.Username, account.Password, account.Domain ?? Client.DefaultApi);
            }

            var data = await client.ExecuteAsync(client.AuthenticatedUser.GetInfo());

            var userInfo = data.Data;

            account.Username  = userInfo.Login;
            account.AvatarUrl = userInfo.AvatarUrl;
            client.Username   = userInfo.Login;

            if (_accounts.Exists(account))
            {
                _accounts.Update(account);
            }
            else
            {
                _accounts.Insert(account);
            }
            return(client);
        }
        public async Task <IActionResult> LogInCallBack()
        {
            if (!(await _accountsService.Exists(User.GetNameIdentifier())))
            {
                Account account = new Account
                {
                    Id             = Guid.NewGuid(),
                    NameIdentifier = User.GetNameIdentifier(),
                    Name           = User.GetName(),
                    Email          = User.GetEmail(),
                    Picture        = User.GetProfileImage()
                };

                await _accountsService.CreateAccount(account);
            }

            return(Redirect(TempData["returnUrl"].ToString()));
        }