コード例 #1
0
        public void Hydrate(ExternalLoginProviderModel externalLoginProviderModel)
        {
            var configuration = m_dynamicModuleProvider.GetModuleConfigurations()
                                .FirstOrDefault(x => x.Name == externalLoginProviderModel.AuthenticationScheme);

            externalLoginProviderModel.Enable = configuration != null && configuration.Enable;
        }
コード例 #2
0
        private void SynchronizeMainLogo(ExternalLoginProviderModel externalLoginProvider, DynamicModuleModel dynamicModule)
        {
            var dynamicModuleMainLogo = dynamicModule.DynamicModuleBlobs.FirstOrDefault(
                x => x.Type == DynamicModuleBlobEnumModel.MainLogo
                );

            if (dynamicModuleMainLogo != null)
            {
                m_externalLoginProviderManager.UpdateLogo(externalLoginProvider, dynamicModuleMainLogo.File);
            }
        }
コード例 #3
0
 public DataResult <bool> UpdateLogo(ExternalLoginProviderModel externalLoginProvider, FileResourceModel file)
 {
     try
     {
         return(Success(
                    m_externalLoginProviderUoW.UpdateLogo(externalLoginProvider.Id, file.Id)
                    ));
     }
     catch (DatabaseException e)
     {
         m_logger.LogWarning(e);
         return(Error <bool>(e.Message));
     }
 }
コード例 #4
0
 public DataResult <bool> UpdateDynamicModule(ExternalLoginProviderModel externalLoginProvider, DynamicModuleModel dynamicModule)
 {
     try
     {
         return(Success(
                    m_externalLoginProviderUoW.UpdateDynamicModule(
                        externalLoginProvider.Id,
                        dynamicModule.Id
                        )
                    ));
     }
     catch (DatabaseException e)
     {
         m_logger.LogWarning(e);
         return(Error <bool>(e.Message));
     }
 }
        public IList <ExternalLoginProviderModel> GetExternalLogins(string returnUrl, bool generateState = false)
        {
            IEnumerable <AuthenticationDescription> descriptions = Request.GetOwinContext().Authentication.GetExternalAuthenticationTypes();
            IList <ExternalLoginProviderModel>      providers    = new List <ExternalLoginProviderModel>();

            string state;

            if (generateState)
            {
                const int strengthInBits = 256;
                state = RandomOAuthStateGenerator.Generate(strengthInBits);
            }
            else
            {
                state = null;
            }

            foreach (AuthenticationDescription description in descriptions)
            {
                var loginProvider = (ExternalLoginProvider)Enum.Parse(typeof(ExternalLoginProvider),
                                                                      description.Caption,
                                                                      ignoreCase: true);

                ExternalLoginProviderModel model = new ExternalLoginProviderModel
                {
                    Provider = loginProvider,
                    Url      = Url.Route("externalLogin", new
                    {
                        provider      = description.AuthenticationType,
                        response_type = "token",
                        client_id     = Startup.PublicClientId,
                        redirect_uri  = new Uri(Request.RequestUri, returnUrl).AbsoluteUri + Startup.ExternalAuthPageUrl,
                        state         = state
                    }),
                    State = state
                };

                providers.Add(model);
            }

            return(providers);
        }
コード例 #6
0
        public DataResult <bool> UpdateNames(
            ExternalLoginProviderModel externalLoginProvider,
            DynamicModuleModel dynamicModule,
            Type moduleInfoModuleConfigType
            )
        {
            var dynamicModuleConfiguration = dynamicModule.Configuration(moduleInfoModuleConfigType);

            if (string.IsNullOrEmpty(dynamicModuleConfiguration.Name))
            {
                var message = $"Property '{nameof(dynamicModuleConfiguration.Name)}' is required";

                m_logger.LogWarning(message);
                return(Error <bool>(message));
            }

            if (string.IsNullOrEmpty(dynamicModuleConfiguration.DisplayName))
            {
                var message = $"Property '{nameof(dynamicModuleConfiguration.DisplayName)}' is required";

                m_logger.LogWarning(message);
                return(Error <bool>(message));
            }

            try
            {
                return(Success(
                           m_externalLoginProviderUoW.UpdateNames(
                               externalLoginProvider.Id,
                               dynamicModuleConfiguration.Name,
                               dynamicModuleConfiguration.DisplayName
                               )
                           ));
            }
            catch (DatabaseException e)
            {
                m_logger.LogWarning(e);
                return(Error <bool>(e.Message));
            }
        }
コード例 #7
0
        public DataResult <int> AddDataSource(DataSourceEnumModel dataSourceEnumModel, ExternalLoginProviderModel externalLoginProvider)
        {
            var dataSourceEnum = m_mapper.Map <DataSourceEnum>(dataSourceEnumModel);

            var dataSource = new DataSourceEntity
            {
                DataSource = dataSourceEnum
            };

            try
            {
                var result = m_dataSourceUoW.AddDataSource(dataSource, externalLoginProvider.Id);
                return(Success(result));
            }
            catch (NoResultException <ExternalLoginProviderEntity> e)
            {
                m_logger.LogWarning(e);
                return(Error <int>(m_translator.Translate("invalid-external-login-provider-id"), DataResultErrorCode.ClaimNothingToRemove));
            }
            catch (DatabaseException e)
            {
                m_logger.LogWarning(e);
                return(Error <int>(e.Message));
            }
        }
コード例 #8
0
        public DataResult <DataSourceModel> GetDataSourceByDataSource(DataSourceEnumModel dataSourceEnumModel, ExternalLoginProviderModel externalLoginProvider)
        {
            try
            {
                var dataSourceEnum = m_mapper.Map <DataSourceEnum>(dataSourceEnumModel);

                var dataSource      = m_dataSourceUoW.GetDataSourceByDataSource(dataSourceEnum, externalLoginProvider.Id);
                var dataSourceModel = m_mapper.Map <DataSourceModel>(dataSource);

                return(Success(dataSourceModel));
            }
            catch (DatabaseException e)
            {
                m_logger.LogWarning(e);
                return(Error <DataSourceModel>(e.Message));
            }
        }
コード例 #9
0
 protected bool Equals(ExternalLoginProviderModel other)
 {
     return(Id == other.Id);
 }
コード例 #10
0
        public string GetExternalLogins(string returnUrl, bool generateState = false)
        {
            var descriptions =
                Request.GetOwinContext().Authentication.GetExternalAuthenticationTypes();
            IList<ExternalLoginProviderModel> providers = new List<ExternalLoginProviderModel>();

            string state;

            if (generateState)
            {
                const int strengthInBits = 256;
                state = RandomOAuthStateGenerator.Generate(strengthInBits);
            }
            else
            {
                state = null;
            }

            foreach (var description in descriptions)
            {
                var loginProvider = (ExternalLoginType) Enum.Parse(typeof (ExternalLoginType),
                    description.Caption, true);

                var model = new ExternalLoginProviderModel
                {
                    Provider = loginProvider,
                    Url = Url.Action("ExternalLinkLogin", "Account", new
                    {
                        provider = description.AuthenticationType,
                        client_id = Startup.PublicClientId,
                        redirect_uri = new Uri(Request.Url, returnUrl).AbsoluteUri + "/Account/GetExternalLogin",
                        state
                    }),
                    State = state
                };

                providers.Add(model);
            }

            return JsonConvert.SerializeObject(providers, new StringEnumConverter());
        }