public IActionResult NewConnection() { var model = new TfsConnectionItemViewModel { Id = Guid.NewGuid(), ConnectionTypes = TfsConnectionTypes.Items, ConnectionType = TfsConnectionTypes.AzureDevOpsToken, UseDefaultCredentials = false }; return(PartialView(ConnectionItemViewName, model)); }
private async Task <TfsKnownConnection> ValidateConnection(TfsConnectionItemViewModel viewModel) { if (viewModel.ConnectionType == TfsConnectionTypes.AzureDevOpsToken) { if (string.IsNullOrEmpty(viewModel.PersonalAccessToken)) { ModelState.AddModelError( nameof(viewModel.PersonalAccessToken), "Personal Access Token is required"); } if (viewModel.UseDefaultCredentials) { ModelState.AddModelError( nameof(viewModel.UseDefaultCredentials), "Use default credentials is not applicable with personal access tokens"); } } else if (viewModel.ConnectionType == TfsConnectionTypes.TfsNTLM) { if (!string.IsNullOrEmpty(viewModel.PersonalAccessToken)) { ModelState.AddModelError( nameof(viewModel.PersonalAccessToken), "Personal Access Token is not applicable when using credentials"); } if (viewModel.UseDefaultCredentials && (!string.IsNullOrEmpty(viewModel.Username) || !string.IsNullOrEmpty(viewModel.Password))) { ModelState.AddModelError( nameof(viewModel.UseDefaultCredentials), "Username and password are not applicable when using default credentials"); } } if (!ModelState.IsValid) { return(null); } var knownConn = viewModel.ToKnownConnection(); viewModel.ValidationResult = await this.settingsService.Validate(knownConn); if (viewModel.ValidationResult.IsError) { ModelState.AddModelError(string.Empty, viewModel.ValidationResult.Message); return(null); } return(knownConn); }
public static TfsConnectionItemViewModel ToViewModel(this TfsKnownConnection knownConn) { var vm = new TfsConnectionItemViewModel { ConnectionType = knownConn.ConnectionType, ConnectionTypes = TfsConnectionTypes.Items, Id = knownConn.Id, Name = knownConn.Name, Password = knownConn.Password, PersonalAccessToken = knownConn.PersonalAccessToken, Url = knownConn.Url, UseDefaultCredentials = knownConn.UseDefaultCredentials, Username = knownConn.Username }; return(vm); }
public static TfsKnownConnection ToKnownConnection(this TfsConnectionItemViewModel viewModel) { // TODO: Consider AutoMapper if mapping grows much. var knownConn = new TfsKnownConnection { ConnectionType = viewModel.ConnectionType, Id = viewModel.Id, Name = viewModel.Name, Password = viewModel.Password, PersonalAccessToken = viewModel.PersonalAccessToken, Url = viewModel.Url, UseDefaultCredentials = viewModel.UseDefaultCredentials, Username = viewModel.Username }; return(knownConn); }
public async Task <IActionResult> SaveConnection(TfsConnectionItemViewModel viewModel) { viewModel.ConnectionTypes = TfsConnectionTypes.Items; var knownConn = await ValidateConnection(viewModel); if (!ModelState.IsValid) { viewModel.TestMode = false; return(PartialView(ConnectionItemViewName, viewModel)); } if (!viewModel.TestMode) { await this.settingsService.Save(knownConn); await this.reportHistoryService.Clear(); viewModel.ValidationResult.Message = $"Settings saved. {viewModel.ValidationResult.Message}"; } viewModel.TestMode = false; return(PartialView(ConnectionItemViewName, viewModel)); }