Example #1
0
        public async Task Invoke(HttpContext context, ITraffkTenantFinder traffkTenantFinder)
        {
            var authenticateInfo = await context.AuthenticateAsync("Bearer");

            var bearerTokenIdentity = authenticateInfo?.Principal;

            if (bearerTokenIdentity != null)
            {
                var currentTenantId = traffkTenantFinder.GetTenantIdAsync().ExecuteSynchronously();
                var tenantIdClaim   = bearerTokenIdentity.Claims.First(x => x.Properties.Values.Contains(JwtRegisteredClaimNames.Sub));
                var tenantIdInToken = int.Parse(tenantIdClaim.Value);

                if (tenantIdInToken == currentTenantId)
                {
                    context.User = bearerTokenIdentity;
                    await Next(context);

                    return;
                }

                context.Response.StatusCode = StatusCodes.Status401Unauthorized;
                return;
            }

            //No bearer token in use, move on
            await Next(context);
        }
Example #2
0
 public TrackingEmailer(IEmailer emailer, TraffkTenantModelDbContext rdb, ITraffkTenantFinder tenantFinder, ICommunicationBlastFinder blastFinder)
 {
     Inner        = emailer;
     Rdb          = rdb;
     TenantFinder = tenantFinder;
     BlastFinder  = blastFinder;
     TenantId     = tenantFinder.GetTenantIdAsync().ExecuteSynchronously();
 }
Example #3
0
 public TenantedBackgroundJobClient(TraffkGlobalDbContext gdb, ITraffkTenantFinder finder, IJobInfoFinder jobInfoFinder = null, ICurrentUser currentUser = null)
 {
     Inner               = new BackgroundJobClient();
     GDB                 = gdb;
     Finder              = finder;
     CurrentUser         = currentUser;
     RecurringJobManager = new RecurringJobManager();
     TenantId            = Finder.GetTenantIdAsync().ExecuteSynchronously();
     JobInfoFinder       = jobInfoFinder;
 }
Example #4
0
 public static int?GetTenantIdOrGlobal(this ITraffkTenantFinder finder)
 {
     Requires.NonNull(finder, nameof(finder));
     try
     {
         return(finder.GetTenantIdAsync().ExecuteSynchronously());
     }
     catch
     {
         return(null);
     }
 }
Example #5
0
        public OrchestraApiService(ICacher cache,
                                   OrchestraRxApiClient client,
                                   ITraffkTenantFinder tenantFinder,
                                   ILogger logger, IOptions <Config> options) : base(logger)
        {
            var tenantId = tenantFinder.GetTenantIdAsync().Result;

            ScopedCacher = cache.CreateScope(tenantId);
            Client       = client;

            var tokenResponse = this.FindOrCreateTokenResponseWithExpiration();

            Client.SetToken(tokenResponse);

            Options = options;
        }
 public CurrentContextServices(
     ConfigStringFormatter stringer,
     ITraffkTenantFinder tenantFinder,
     TraffkTenantModelDbContext rdb,
     IHttpContextAccessor httpContextAccessor,
     UserManager <ApplicationUser> userManager,
     IOptions <TableauSignInOptions> tableauSigninOptions,
     ITableauAuthorizationService tableauAuthorizationService
     )
     : base(tenantFinder, rdb)
 {
     TableauSignInOptions = tableauSigninOptions.Value;
     Stringer             = stringer;
     TenantFinder         = tenantFinder;
     Rdb = rdb;
     HttpContextAccessor         = httpContextAccessor;
     UserManager                 = userManager;
     TableauAuthorizationService = tableauAuthorizationService;
 }
Example #7
0
        public TokenController(IOptions <TokenProviderConfig> options,
                               UserManager <ApplicationUser> userManager,
                               SignInManager <ApplicationUser> signInManager,
                               IUserClaimsPrincipalFactory <ApplicationUser> userClaimsPrincipalFactory,
                               ITraffkTenantFinder traffkTenantFinder,
                               ILogger logger) : base(logger)
        {
            Options = options.Value;

            var signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(Options.SecretKey));

            SigningCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256);

            Requires.NonNull(Options.Issuer, nameof(Options.Issuer));
            Requires.NonNull(Options.Audience, nameof(Options.Audience));
            Requires.True(Options.Expiration > TimeSpan.Zero, nameof(Options.Expiration));

            UserManager   = userManager;
            SignInManager = signInManager;
            UserClaimsPrincipalFactory = userClaimsPrincipalFactory;
            TraffkTenantFinder         = traffkTenantFinder;
        }
 public CurrentTenantServices(ITraffkTenantFinder tenantFinder, TraffkTenantModelDbContext rdb)
 {
     TenantFinder = tenantFinder;
     Rdb          = rdb;
 }
Example #9
0
 public TableauTenantFinder(IOptions <TenantSettings> options, TraffkTenantModelDbContext rdb, ITraffkTenantFinder traffkTenantFinder)
 {
     TraffkTenantId = traffkTenantFinder.GetTenantIdAsync().Result;
     Options        = options;
     Rdb            = rdb;
 }
Example #10
0
 public SmtpSettingsAdaptor(ITraffkTenantFinder finder, TraffkTenantModelDbContext rdb)
 {
     Finder = finder;
     Rdb    = rdb;
 }
Example #11
0
 public TraffkUserStore(ITraffkTenantFinder tenantFinder, TraffkTenantModelDbContext context, IdentityErrorDescriber describer = null)
     : base(context, describer)
 {
     Requires.NonNull(tenantFinder, nameof(tenantFinder));
     TenantFinder = tenantFinder;
 }
Example #12
0
 public TraffkTenantModelDbContext(DbContextOptions <TraffkTenantModelDbContext> options, ITraffkTenantFinder tenantFinder, ConfigStringFormatter configger)
     : base(options)
 {
     TenantFinder = tenantFinder;
     Configger    = configger;
 }
 public ConfigStringFormatter(ITraffkTenantFinder finder)
 {
     Finder = finder;
 }
 public ConfigStringFormatter(ITraffkTenantFinder finder, IHostingEnvironment env)
     : this(finder)
 {
     Env = env;
 }