Example #1
0
        public IActionResult NewConnection()
        {
            var model = new TfsConnectionItemViewModel
            {
                Id = Guid.NewGuid(),
                ConnectionTypes       = TfsConnectionTypes.Items,
                ConnectionType        = TfsConnectionTypes.AzureDevOpsToken,
                UseDefaultCredentials = false
            };

            return(PartialView(ConnectionItemViewName, model));
        }
Example #2
0
        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);
        }
Example #5
0
        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));
        }