public void LoginModeTracksAvailableConnections()
        {
            var connectionManager    = Substitute.For <IConnectionManager>();
            var connections          = new ObservableCollectionEx <IConnection>();
            var gitHubLogin          = Substitute.For <ILoginToGitHubViewModel>();
            var enterpriseLogin      = Substitute.For <ILoginToGitHubForEnterpriseViewModel>();
            var gitHubConnection     = Substitute.For <IConnection>();
            var enterpriseConnection = Substitute.For <IConnection>();

            connectionManager.Connections.Returns(connections);
            gitHubConnection.HostAddress.Returns(HostAddress.GitHubDotComHostAddress);
            enterpriseConnection.HostAddress.Returns(HostAddress.Create("https://enterprise.url"));
            gitHubConnection.IsLoggedIn.Returns(true);
            enterpriseConnection.IsLoggedIn.Returns(true);

            var loginViewModel = new LoginCredentialsViewModel(connectionManager, gitHubLogin, enterpriseLogin);

            Assert.Equal(LoginMode.DotComOrEnterprise, loginViewModel.LoginMode);

            connections.Add(enterpriseConnection);
            Assert.Equal(LoginMode.DotComOnly, loginViewModel.LoginMode);

            connections.Add(gitHubConnection);
            Assert.Equal(LoginMode.None, loginViewModel.LoginMode);

            connections.RemoveAt(0);
            Assert.Equal(LoginMode.EnterpriseOnly, loginViewModel.LoginMode);
        }
        public CredentialPromptResult ShowCredentialPrompt(string enterpriseUrl, bool showBasic, bool showOAuth, out string username, out string password)
        {
            username = null;
            password = null;

            var viewModel = new LoginCredentialsViewModel(showBasic, showOAuth)
            {
                GitHubEnterpriseUrl = enterpriseUrl
            };

            bool valid = _gui.ShowDialogWindow(viewModel, () => new LoginCredentialsView());

            if (viewModel.UseBrowserLogin)
            {
                return(CredentialPromptResult.OAuthAuthentication);
            }

            if (valid)
            {
                username = viewModel.UsernameOrEmail;
                password = viewModel.Password.ToUnsecureString();
                return(CredentialPromptResult.BasicAuthentication);
            }

            return(CredentialPromptResult.Cancel);
        }
        public void LoginModeIgnoresAvailableConnections()
        {
            // We always want to option to log-in to GitHub or GitHub Enterprise

            var connectionManager    = Substitute.For <IConnectionManager>();
            var connections          = new ObservableCollectionEx <IConnection>();
            var gitHubLogin          = Substitute.For <ILoginToGitHubViewModel>();
            var enterpriseLogin      = Substitute.For <ILoginToGitHubForEnterpriseViewModel>();
            var gitHubConnection     = Substitute.For <IConnection>();
            var enterpriseConnection = Substitute.For <IConnection>();

            connectionManager.Connections.Returns(connections);
            gitHubConnection.HostAddress.Returns(HostAddress.GitHubDotComHostAddress);
            enterpriseConnection.HostAddress.Returns(HostAddress.Create("https://enterprise.url"));
            gitHubConnection.IsLoggedIn.Returns(true);
            enterpriseConnection.IsLoggedIn.Returns(true);

            var loginViewModel = new LoginCredentialsViewModel(connectionManager, gitHubLogin, enterpriseLogin);

            Assert.That(LoginMode.DotComOrEnterprise, Is.EqualTo(loginViewModel.LoginMode));

            connections.Add(enterpriseConnection);
            Assert.That(LoginMode.DotComOrEnterprise, Is.EqualTo(loginViewModel.LoginMode));

            connections.Add(gitHubConnection);
            Assert.That(LoginMode.DotComOrEnterprise, Is.EqualTo(loginViewModel.LoginMode));

            connections.RemoveAt(0);
            Assert.That(LoginMode.DotComOrEnterprise, Is.EqualTo(loginViewModel.LoginMode));
        }
        public async Task AllowsLoginFromEnterpriseAfterGitHubLoginHasFailed()
        {
            var connectionManager = Substitute.For <IConnectionManager>();
            var connection        = Substitute.For <IConnection>();

            var gitHubLogin        = Substitute.For <ILoginToGitHubViewModel>();
            var gitHubLoginCommand = ReactiveCommand.CreateAsyncObservable(_ =>
                                                                           Observable.Return <IConnection>(null));

            gitHubLogin.Login.Returns(gitHubLoginCommand);

            var enterpriseLogin        = Substitute.For <ILoginToGitHubForEnterpriseViewModel>();
            var enterpriseLoginCommand = ReactiveCommand.CreateAsyncObservable(_ =>
                                                                               Observable.Return(connection));

            enterpriseLogin.Login.Returns(enterpriseLoginCommand);

            var loginViewModel = new LoginCredentialsViewModel(connectionManager, gitHubLogin, enterpriseLogin);
            var success        = false;

            loginViewModel.Done
            .OfType <IConnection>()
            .Where(x => x != null)
            .Subscribe(_ => success = true);

            await gitHubLoginCommand.ExecuteAsync();

            await enterpriseLoginCommand.ExecuteAsync();

            Assert.True(success);
        }
Beispiel #5
0
 private void ShowCredentials(object sender, RoutedEventArgs e)
 {
     var model = new LoginCredentialsViewModel(true, true);
     var view = new LoginCredentialsView();
     var window = new DialogWindow(model, view);
     Gui.ShowDialog(window, Handle);
 }
Beispiel #6
0
        public LoginCredential()
        {
            InitializeComponent();
            _LVM             = new LoginCredentialsViewModel();
            this.DataContext = _LVM;


            textUser.Text = "";
            UserName      = textUser;
        }
        public async Task FailedGitHubLoginDoesNotSignalDoneAsync()
        {
            var connectionManager = Substitute.For <IConnectionManager>();

            var gitHubLogin     = CreateLoginToHostViewModel <ILoginToGitHubViewModel>();
            var enterpriseLogin = CreateLoginToHostViewModel <ILoginToGitHubForEnterpriseViewModel>();
            var loginViewModel  = new LoginCredentialsViewModel(connectionManager, gitHubLogin, enterpriseLogin);
            var signalled       = false;

            loginViewModel.Done.Subscribe(_ => signalled = true);
            await gitHubLogin.Login.Execute();

            Assert.False(signalled);
        }
Beispiel #8
0
        public ActionResult Login(LoginCredentialsViewModel loginInfo)
        {
            // TODO: return the correct view for successful/failed login
            bool successful = false;

            try
            {
                successful = _accountService.Login(loginInfo);
            }
            catch (Exception)
            {
                successful = false;
            }
            // Instead of creating the view, redirect to another controller on login success/fail.
            return(Content($"Login result: {successful}"));
        }
        public async Task <JObject> Login([FromBody] LoginCredentialsViewModel credentials)
        {
            if (!ModelState.IsValid)
            {
                throw new ValidationException(ModelState.ToString());
            }

            var user = await UserManager.FindAsync(credentials.Username, credentials.Password);

            if (user == null)
            {
                throw new UnauthorizedAccessException("The provided username and password are invalid.");
            }

            var tokenReponse = GenerateLocalAccessTokenResponse(user.UserName);

            return(tokenReponse);
        }
Beispiel #10
0
        public async Task SucessfulGitHubLoginSignalsDoneAsync()
        {
            using (TestUtils.WithScheduler(Scheduler.CurrentThread))
            {
                var connectionManager = Substitute.For <IConnectionManager>();
                var connection        = Substitute.For <IConnection>();

                var gitHubLogin     = CreateLoginToHostViewModel <ILoginToGitHubViewModel>(connection);
                var enterpriseLogin = CreateLoginToHostViewModel <ILoginToGitHubForEnterpriseViewModel>();
                var loginViewModel  = new LoginCredentialsViewModel(connectionManager, gitHubLogin, enterpriseLogin);
                var signalled       = false;

                loginViewModel.Done.Subscribe(_ => signalled = true);
                await gitHubLogin.Login.Execute();

                Assert.True(signalled);
            }
        }
        private void ShowCredentials(object sender, RoutedEventArgs e)
        {
            var model = new LoginCredentialsViewModel(useBasic.IsChecked ?? false, useOAuth.IsChecked ?? false, usePat.IsChecked ?? false);

            if (!string.IsNullOrWhiteSpace(enterpriseUrl.Text))
            {
                model.GitHubEnterpriseUrl = enterpriseUrl.Text;
            }

            if (!string.IsNullOrWhiteSpace(username.Text))
            {
                model.UsernameOrEmail = username.Text;
            }

            var view   = new LoginCredentialsView();
            var window = new DialogWindow(model, view);

            Gui.ShowDialog(window, Handle);
        }
        public async Task FailedGitHubLoginDoesNotSignalDone()
        {
            var connectionManager = Substitute.For <IConnectionManager>();

            var gitHubLogin        = Substitute.For <ILoginToGitHubViewModel>();
            var gitHubLoginCommand = ReactiveCommand.CreateAsyncObservable(_ =>
                                                                           Observable.Return <IConnection>(null));

            gitHubLogin.Login.Returns(gitHubLoginCommand);
            var enterpriseLogin = Substitute.For <ILoginToGitHubForEnterpriseViewModel>();

            var loginViewModel = new LoginCredentialsViewModel(connectionManager, gitHubLogin, enterpriseLogin);
            var signalled      = false;

            loginViewModel.Done.Subscribe(_ => signalled = true);
            await gitHubLoginCommand.ExecuteAsync();

            Assert.False(signalled);
        }
Beispiel #13
0
        public SendEmailResponse SendLoginCredentials(LoginCredentialsViewModel model, string loginLink)
        {
            var message = new MimeMessage();

            var htmlContent = "";
            var body        = EmailMessages.FirstLoginCredentials(model.Language);

            htmlContent += "<h1 style = 'font-weight: 500;'><span style = 'color: #0078d7;'>Corfu</span><span style = 'color: #5db2ff;'> Cruises</span></h1>";
            htmlContent += "<p>" + body[0] + model.Displayname + "!</p>";
            htmlContent += "<p>" + body[1] + "</p>";
            htmlContent += "<p>" + body[2] + model.UserName + "</p>";
            htmlContent += "<p>" + body[3] + model.Password + "</p>";
            htmlContent += "<br>";
            htmlContent += "<a style = 'font-variant: petite-caps; color: #ffffff; margin: 1rem; background-color: #55828B; padding: 1rem; border-radius: 5px; text-decoration: none;' href=" + loginLink + ">" + body[7] + "</a>";
            htmlContent += "<br>";
            htmlContent += "<br>";
            htmlContent += "<p style = 'color: #ff0000;'>" + body[4] + "</p>";
            htmlContent += "<p style = 'color: #ff0000;'>" + body[5] + "</p>";
            htmlContent += "<p style = 'color: #ff0000;'>" + body[6] + "</p>";
            htmlContent += "<br>";
            htmlContent += "<p>" + body[8] + "</p>";
            htmlContent += "<br>";
            htmlContent += "<p>" + body[9] + "</p>";
            htmlContent += "<p>Corfu Cruises " + DateTime.Now.ToString("yyyy") + "</p>";

            message.From.Add(new MailboxAddress(settings.From, settings.UserName));
            message.To.Add(new MailboxAddress(model.Displayname, model.Email));
            message.Subject = body[10];
            message.Body    = new TextPart("html")
            {
                Text = htmlContent
            };

            using (var client = new MailKit.Net.Smtp.SmtpClient()) {
                client.Connect(settings.SmtpClient, settings.Port, false);
                client.Authenticate(settings.UserName, settings.Password);
                client.Send(message);
                client.Disconnect(true);
            }

            return(new SendEmailResponse());
        }
Beispiel #14
0
        public bool Login(LoginCredentialsViewModel loginInfo)
        {
            _accountRepository.UnitOfWork = _unitOfWork;
            return(_accountRepository.Login(loginInfo.UserName, loginInfo.Password));

            //_unitOfWork.Begin();
            //try
            //{
            //    _accountRepository.Login(loginInfo.UserName, loginInfo.Password);

            //    _unitOfWork.Commit();
            //}
            //catch(Exception ex)
            //{
            //    _unitOfWork.Rollback();
            //    throw;
            //}

            //return false;
        }
        public async Task AllowsLoginFromEnterpriseAfterGitHubLoginHasFailedAsync()
        {
            var connectionManager = Substitute.For <IConnectionManager>();
            var connection        = Substitute.For <IConnection>();

            var gitHubLogin     = CreateLoginToHostViewModel <ILoginToGitHubViewModel>();
            var enterpriseLogin = CreateLoginToHostViewModel <ILoginToGitHubForEnterpriseViewModel>(connection);
            var loginViewModel  = new LoginCredentialsViewModel(connectionManager, gitHubLogin, enterpriseLogin);
            var success         = false;

            loginViewModel.Done
            .OfType <IConnection>()
            .Where(x => x != null)
            .Subscribe(_ => success = true);

            await gitHubLogin.Login.Execute();

            await enterpriseLogin.Login.Execute();

            Assert.True(success);
        }
Beispiel #16
0
        public CredentialPromptResult ShowCredentialPrompt(
            string enterpriseUrl, bool showBasic, bool showOAuth, bool showPat,
            ref string username, out string password, out string token)
        {
            password = null;
            token    = null;

            var viewModel = new LoginCredentialsViewModel(showBasic, showOAuth, showPat)
            {
                GitHubEnterpriseUrl = enterpriseUrl,
                UsernameOrEmail     = username
            };

            bool valid = _gui.ShowDialogWindow(viewModel, () => new LoginCredentialsView());

            switch (viewModel.SelectedAuthType)
            {
            case CredentialPromptResult.BasicAuthentication:
                if (valid)
                {
                    username = viewModel.UsernameOrEmail;
                    password = viewModel.Password.ToUnsecureString();
                    return(CredentialPromptResult.BasicAuthentication);
                }
                break;

            case CredentialPromptResult.OAuthAuthentication:
                return(CredentialPromptResult.OAuthAuthentication);

            case CredentialPromptResult.PersonalAccessToken:
                if (valid)
                {
                    token = viewModel.Token.ToUnsecureString();
                    return(CredentialPromptResult.PersonalAccessToken);
                }
                break;
            }

            return(CredentialPromptResult.Cancel);
        }