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("  "));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }