public UserController(IUserRepository userRepository, IOrganizationRepository organizationRepository, ITokenRepository tokenRepository, ICacheClient cacheClient, IMailer mailer, IMapper mapper, IQueryValidator validator, IntercomOptions intercomOptions, ILoggerFactory loggerFactory) : base(userRepository, mapper, validator, loggerFactory) { _organizationRepository = organizationRepository; _tokenRepository = tokenRepository; _cache = new ScopedCacheClient(cacheClient, "User"); _mailer = mailer; _intercomOptions = intercomOptions; }
public static AppOptions ReadFromConfiguration(IConfiguration config) { var options = new AppOptions(); options.BaseURL = config.GetValue <string>(nameof(options.BaseURL))?.TrimEnd('/'); options.InternalProjectId = config.GetValue(nameof(options.InternalProjectId), "54b56e480ef9605a88a13153"); options.ExceptionlessApiKey = config.GetValue <string>(nameof(options.ExceptionlessApiKey)); options.ExceptionlessServerUrl = config.GetValue <string>(nameof(options.ExceptionlessServerUrl)); options.AppMode = config.GetValue(nameof(options.AppMode), AppMode.Production); options.AppScope = config.GetValue(nameof(options.AppScope), options.AppMode.ToScope()); options.RunJobsInProcess = config.GetValue(nameof(options.RunJobsInProcess), options.AppMode == AppMode.Development); options.JobsIterationLimit = config.GetValue(nameof(options.JobsIterationLimit), -1); options.BotThrottleLimit = config.GetValue(nameof(options.BotThrottleLimit), 25).NormalizeValue(); options.ApiThrottleLimit = config.GetValue(nameof(options.ApiThrottleLimit), options.AppMode == AppMode.Development ? Int32.MaxValue : 3500).NormalizeValue(); options.EnableArchive = config.GetValue(nameof(options.EnableArchive), true); options.EnableSampleData = config.GetValue(nameof(options.EnableSampleData), options.AppMode != AppMode.Development); options.EventSubmissionDisabled = config.GetValue(nameof(options.EventSubmissionDisabled), false); options.DisabledPipelineActions = config.GetValueList(nameof(options.DisabledPipelineActions)); options.DisabledPlugins = config.GetValueList(nameof(options.DisabledPlugins)); options.MaximumEventPostSize = config.GetValue(nameof(options.MaximumEventPostSize), 200000).NormalizeValue(); options.MaximumRetentionDays = config.GetValue(nameof(options.MaximumRetentionDays), 180).NormalizeValue(); options.GoogleGeocodingApiKey = config.GetValue <string>(nameof(options.GoogleGeocodingApiKey)); options.MaxMindGeoIpKey = config.GetValue <string>(nameof(options.MaxMindGeoIpKey)); options.BulkBatchSize = config.GetValue(nameof(options.BulkBatchSize), 1000); options.EnableRepositoryNotifications = config.GetValue(nameof(options.EnableRepositoryNotifications), true); options.EnableWebSockets = config.GetValue(nameof(options.EnableWebSockets), true); try { var versionInfo = FileVersionInfo.GetVersionInfo(typeof(AppOptions).Assembly.Location); options.Version = versionInfo.FileVersion; options.InformationalVersion = versionInfo.ProductVersion; } catch { } options.CacheOptions = CacheOptions.ReadFromConfiguration(config, options); options.MessageBusOptions = MessageBusOptions.ReadFromConfiguration(config, options); options.MetricOptions = MetricOptions.ReadFromConfiguration(config); options.QueueOptions = QueueOptions.ReadFromConfiguration(config, options); options.StorageOptions = StorageOptions.ReadFromConfiguration(config, options); options.EmailOptions = EmailOptions.ReadFromConfiguration(config, options); options.ElasticsearchOptions = ElasticsearchOptions.ReadFromConfiguration(config, options); options.IntercomOptions = IntercomOptions.ReadFromConfiguration(config); options.SlackOptions = SlackOptions.ReadFromConfiguration(config); options.StripeOptions = StripeOptions.ReadFromConfiguration(config); options.AuthOptions = AuthOptions.ReadFromConfiguration(config); return(options); }
public ViewCurrentUser(User user, IntercomOptions options) { Id = user.Id; OrganizationIds = user.OrganizationIds; FullName = user.FullName; EmailAddress = user.EmailAddress; EmailNotificationsEnabled = user.EmailNotificationsEnabled; IsEmailAddressVerified = user.IsEmailAddressVerified; IsActive = user.IsActive; Roles = user.Roles; Hash = HMACSHA256HashString(user.Id, options); HasLocalAccount = !String.IsNullOrWhiteSpace(user.Password); OAuthAccounts = user.OAuthAccounts; }
private string HMACSHA256HashString(string value, IntercomOptions options) { if (!options.EnableIntercom) { return(null); } byte[] secretKey = Encoding.UTF8.GetBytes(options.IntercomSecret); byte[] bytes = Encoding.UTF8.GetBytes(value); using (var hmac = new HMACSHA256(secretKey)) { hmac.ComputeHash(bytes); byte[] data = hmac.Hash; var builder = new StringBuilder(); for (int i = 0; i < data.Length; i++) { builder.Append(data[i].ToString("x2")); } return(builder.ToString()); } }