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); }
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); }
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); }
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); }
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); }
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()); }
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); }
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); }