public async Task <IActionResult> Create(AuthenticationViewModel model) { if (ModelState.IsValid) { OAuthOptions oAuthOptions; if (HandlerHelper.GetProviderName(model.HandlerType) == "Google") { oAuthOptions = new GoogleOptions(); } else { oAuthOptions = new OAuthOptions(); } oAuthOptions.ClientId = model.ClientId; oAuthOptions.ClientSecret = model.ClientSecret; oAuthOptions.CallbackPath = "/signin-" + model.Scheme; await _manager.AddAsync(new SchemeDefinition { Scheme = model.Scheme, DisplayName = model.DisplayName, HandlerType = _manager.ManagedHandlerType.First(t => t.Name == model.HandlerType), Options = oAuthOptions }); return(RedirectToAction("List")); } return(View(model)); }
public async Task Assertions() { Assert.Throws <ArgumentNullException>(() => new NoPersistentDynamicManager <FakeSchemeDefinition>(null, null, null)); var schemeProviderMock = new Mock <IAuthenticationSchemeProvider>().Object; Assert.Throws <ArgumentNullException>(() => new NoPersistentDynamicManager <FakeSchemeDefinition>(schemeProviderMock, null, null)); var serviceProviderMock = new Mock <IServiceProvider>().Object; var factory = new OptionsMonitorCacheWrapperFactory(serviceProviderMock); Assert.Throws <ArgumentNullException>(() => new NoPersistentDynamicManager <FakeSchemeDefinition>(schemeProviderMock, factory, null)); var storeMock = new Mock <IDynamicProviderStore <FakeSchemeDefinition> >().Object; var manager = new PersistentDynamicManager <FakeSchemeDefinition>(schemeProviderMock, factory, storeMock, new List <Type>()); await Assert.ThrowsAsync <ArgumentNullException>(() => manager.AddAsync(null)); await Assert.ThrowsAsync <ArgumentNullException>(() => manager.UpdateAsync(null)); await Assert.ThrowsAsync <ArgumentException>(() => manager.RemoveAsync(null)); await Assert.ThrowsAsync <ArgumentException>(() => manager.RemoveAsync("")); await Assert.ThrowsAsync <ArgumentException>(() => manager.RemoveAsync(" ")); await Assert.ThrowsAsync <ArgumentException>(() => manager.FindBySchemeAsync(null)); await Assert.ThrowsAsync <ArgumentException>(() => manager.FindBySchemeAsync("")); await Assert.ThrowsAsync <ArgumentException>(() => manager.FindBySchemeAsync(" ")); }
public async Task <ExternalProvider> CreateAsync(ExternalProvider entity, CancellationToken cancellationToken = default) { await _manager.AddAsync(CreateSchemeDefinition(entity), cancellationToken).ConfigureAwait(false); await _providerClient.ProviderAddedAsync(entity.Id, cancellationToken).ConfigureAwait(false); return(entity); }
internal static void SeedProviders(IConfiguration configuration, PersistentDynamicManager <SchemeDefinition> persistentDynamicManager) { var googleDefinition = persistentDynamicManager.FindBySchemeAsync("Google").GetAwaiter().GetResult(); if (googleDefinition == null) { var options = new Microsoft.AspNetCore.Authentication.Google.GoogleOptions { ClientId = configuration.GetValue <string>("Google:ClientId"), ClientSecret = configuration.GetValue <string>("Google:ClientSecret"), }; persistentDynamicManager.AddAsync(new SchemeDefinition { Scheme = "Google", DisplayName = "Google", HandlerType = persistentDynamicManager.ManagedHandlerType.First(t => t.Name == "GoogleHandler"), Options = options }).ConfigureAwait(false); } }
public async Task <ExternalProvider> CreateAsync(ExternalProvider entity, CancellationToken cancellationToken = default) { var handlerType = _serializer.DeserializeType(entity.SerializedHandlerType); var options = _serializer.DeserializeOptions(entity.SerializedOptions, handlerType.GetAuthenticationSchemeOptionsType()); SanetizeCallbackPath(entity, options); await _manager.AddAsync(new SchemeDefinition { DisplayName = entity.DisplayName, HandlerType = handlerType, Options = options, Scheme = entity.Id }, cancellationToken).ConfigureAwait(false); if (_providerClient != null) { await _providerClient.ProviderAdded(entity.Id, cancellationToken).ConfigureAwait(false); } return(entity); }