Пример #1
0
 protected MongoDbBaseRepository(IMongoDatabase mongoDb, ITenantIdProvider tenantIdProvider,
                                 string collectionName)
 {
     _mongoDb          = mongoDb;
     _tenantIdProvider = tenantIdProvider;
     _collectionName   = collectionName;
 }
Пример #2
0
 public TenantAccessChecker(
     ITenantIdProvider tenantIdProvider,
     ILogger <TenantEntityAccessChecker> logger)
 {
     _tenantIdProvider = tenantIdProvider;
     _logger           = logger;
 }
Пример #3
0
 public InspectionController(
     IInspectionService inspectionService,
     ITenantIdProvider tenantIdProvider
     )
 {
     _tenantIdProvider  = tenantIdProvider;
     _inspectionService = inspectionService;
 }
Пример #4
0
 public TestController(
     ITestService testService,
     ITenantIdProvider tenantIdProvider
     )
 {
     _tenantIdProvider = tenantIdProvider;
     _testService      = testService;
 }
Пример #5
0
 public ShardResolver(ITenantIdProvider tenantIdProvider,
                      IServiceProvider serviceProvider, IMemoryCache cache, IConfiguration config)
 {
     _tenantIdProvider = tenantIdProvider;
     _serviceProvider  = serviceProvider;
     _cache            = cache;
     _config           = config;
 }
Пример #6
0
 public PsaSummaryService(
     IPsaSummaryRepository psaSummaryRepository,
     ITenantEntityAccessChecker tenantEntityAccessChecker,
     ITenantIdProvider tenantIdProvider)
 {
     _psaSummaryRepository      = psaSummaryRepository;
     _tenantEntityAccessChecker = tenantEntityAccessChecker;
     _tenantIdProvider          = tenantIdProvider;
 }
Пример #7
0
 public EmployeeController(
     IEmployeeService employeeService,
     ITenantIdProvider tenantIdProvider,
     ILogger <EmployeeController> logger)
 {
     _tenantIdProvider = tenantIdProvider;
     _employeeService  = employeeService;
     _logger           = logger;
 }
Пример #8
0
 public PositionController(
     IService <Position> positionService,
     ITenantIdProvider tenantIdProvider,
     ILogger <PositionController> logger)
 {
     _tenantIdProvider = tenantIdProvider;
     _positionService  = positionService;
     _logger           = logger;
 }
        public void Setup()
        {
            LogHelper.ConfigureConsoleLogger();

            _newId        = Guid.NewGuid();
            _tenantMockId = Guid.NewGuid();

            _roleService      = Substitute.For <IRestrictedRoleService>();
            _tenantIdProvider = Substitute.For <ITenantIdProvider>();
            _tenantIdProvider.GetTenantId().Returns(_tenantMockId);
        }
        public void Setup()
        {
            LogHelper.ConfigureConsoleLogger();

            StaticStartup.Startup();

            _newId            = Guid.NewGuid();
            _tenantId         = Guid.NewGuid();
            _testService      = Substitute.For <ITestService>();
            _tenantIdProvider = Substitute.For <ITenantIdProvider>();
            _tenantIdProvider.GetTenantId().Returns(_tenantId);
        }
Пример #11
0
 public PolicyManagementService(
     ITenantIdProvider tenantProvider,
     IAuthorizationPolicyCommands commands,
     IAuthorizationPolicyQueries queries,
     ILogger <PolicyManagementService> logger
     )
 {
     _tenantProvider = tenantProvider;
     _commands       = commands;
     _queries        = queries;
     _log            = logger;
 }
 public DepartmentController(
     IService <Department> departmentService,
     IEmployeeService employeeService,
     IWorkplaceCredentialsService workplaceCredentialsService,
     ITenantIdProvider tenantIdProvider,
     ILogger <DepartmentController> logger)
 {
     _tenantIdProvider            = tenantIdProvider;
     _departmentService           = departmentService;
     _employeeService             = employeeService;
     _workplaceCredentialsService = workplaceCredentialsService;
     _logger = logger;
 }
 public DynamicAuthorizationPolicyProvider(
     IOptions <AuthorizationOptions> options,
     IOptions <PolicyManagementOptions> managementOptionsAccessor,
     ITenantIdProvider tenantIdResolver,
     IHttpContextAccessor httpContextAccessor,
     IConfiguration configuration
     ) : base(options)
 {
     _policyOptions    = managementOptionsAccessor.Value;
     _tenantIdResolver = tenantIdResolver;
     _contextAccessor  = httpContextAccessor;
     _configuration    = configuration;
 }
 public BranchOfficeController(
     IService <BranchOffice> branchOfficeService,
     ITimeService timeService,
     IWorkplaceCredentialsService workplaceCredentialsService,
     ITenantIdProvider tenantIdProvider,
     ILogger <BranchOfficeController> logger)
 {
     _timeService                 = timeService;
     _tenantIdProvider            = tenantIdProvider;
     _branchOfficeService         = branchOfficeService;
     _workplaceCredentialsService = workplaceCredentialsService;
     _logger = logger;
 }
        public WorkplaceCredentialsService(
            IOpenIddictApplicationManager oidcAppManager,
            AuthorityDbContext authorityDbContext,
            AutoMapperConfig autoMapperConfig,
            ITenantIdProvider tenantIdProvider
            )
        {
            _rngCsp = new RNGCryptoServiceProvider();

            _oidcAppManager     = oidcAppManager;
            _tenantIdProvider   = tenantIdProvider;
            _authorityDbContext = authorityDbContext;
            _mapper             = autoMapperConfig.CreateMapper();
        }
Пример #16
0
 public LocalUsersController(ApplicationContext db, AdminContext adminDb,
                             IModelMetadataProvider metadataProvider, ILogger <LocalUsersController> logger,
                             IStringLocalizer <LocalUsersController> localizer, IMapper mapper, ITenantIdProvider tenantIdProvider,
                             ITenantUserInfoAccessor tenantInfo, IBlobService blobService) : base(logger, localizer, mapper)
 {
     _db               = db;
     _adminDb          = adminDb;
     _tenantIdProvider = tenantIdProvider;
     _metadataProvider = metadataProvider;
     _logger           = logger;
     _localizer        = localizer;
     _mapper           = mapper;
     _tenantInfo       = tenantInfo;
     _blobService      = blobService;
 }
Пример #17
0
        public PsaReportService(
            IPsaSummaryService summaryService,
            IOrgStructureReference orgStructReference,
            //IPsaReportRepository reportRepository,
            ITenantEntityAccessChecker tenantEntityAccessChecker,
            ITenantIdProvider tenantIdProvider,
            ITimeService timeService
            )
        {
            _summaryService = summaryService;
//      _reportRepository = reportRepository;
            _orgStructReference        = orgStructReference;
            _tenantEntityAccessChecker = tenantEntityAccessChecker;
            _tenantId    = tenantIdProvider.GetTenantId();
            _timeService = timeService;
        }
Пример #18
0
 public RestrictedAccountManager(
     AuthorityDbContext context,
     MultitenantUserManager <ApplicationUser> userManager,
     IRestrictedRoleService roleService,
     IUserOrgStructureReferencesValidator userReferencesValidator,
     ITenantIdProvider tenantIdProvider,
     ITenantEntityAccessChecker accessChecker,
     IAccessScopeFilter accessScopeFilter,
     IEmailService emailService,
     AutoMapperConfig autoMapperConfig)
     : base(context, userManager, roleService, userReferencesValidator, emailService, autoMapperConfig)
 {
     _accessScopeFilter = accessScopeFilter;
     _accessChecker     = accessChecker;
     _tenantIdProvider  = tenantIdProvider;
 }
Пример #19
0
 public RolesController(
     IRestrictedAccountManager accountManager,
     IRestrictedRoleService roleService,
     IClaimsService claimsService,
     IAuthorizationService authorizationService,
     ITenantIdProvider tenantIdProvider,
     AutoMapperConfig autoMapperConfig
     )
 {
     _roleService          = roleService;
     _claimsService        = claimsService;
     _accountManager       = accountManager;
     _authorizationService = authorizationService;
     _tenantIdProvider     = tenantIdProvider;
     _mapper = autoMapperConfig.CreateMapper();
 }
Пример #20
0
        public void Setup()
        {
            LogHelper.ConfigureConsoleLogger();

            StaticStartup.Startup();

            _newId               = Guid.NewGuid();
            _tenantId            = Guid.NewGuid();
            _branchOfficeService = Substitute.For <IService <BranchOffice> >();
            _tenantIdProvider    = Substitute.For <ITenantIdProvider>();
            _logger              = Substitute.For <ILogger <BranchOfficeController> >();
            _timeService         = Substitute.For <ITimeService>();

            _credentialsService = Substitute.For <IWorkplaceCredentialsService>();
            _tenantIdProvider.GetTenantId().Returns(_tenantId);
            _timeService.CheckTimeZoneId(Arg.Any <string>()).Returns(true);
        }
        public void Setup()
        {
            LogHelper.ConfigureConsoleLogger();

            StaticStartup.Startup();

            _newId             = Guid.NewGuid();
            _tenantId          = Guid.NewGuid();
            _inspectionService = Substitute.For <IInspectionService>();
            _inspectionService.When(s => s.BeginInspectionAsync(Arg.Any <Inspection>()))
            .Do(v => ((Inspection)v[0]).Id = _newId);
            _inspectionService.BeginInspectionAsync(Arg.Any <Inspection>()).ReturnsForAnyArgs(_newId);
            _tenantIdProvider = Substitute.For <ITenantIdProvider>();
            _tenantIdProvider.GetTenantId().Returns(_tenantId);

            _incompleteInspection = new Inspection()
            {
            };
        }
Пример #22
0
 public AppDbContext(ITenantIdProvider tenantIdProvider)
 {
     _tenantIdProvider = tenantIdProvider;
 }
Пример #23
0
 public static bool HasTenantId(this ITenantIdProvider tenantIdProvider)
 {
     return(tenantIdProvider.GetTenantId() != null);
 }
Пример #24
0
 // Constructor
 public ApplicationContext(IShardResolver shardProvider, ITenantIdProvider tenantIdProvider, IUserProvider userIdProvider, ITenantUserInfoAccessor accessor) :
     base(CreateDbContextOptions(shardProvider, tenantIdProvider, userIdProvider, accessor))
 {
     _tenantIdProvider = tenantIdProvider;
 }
Пример #25
0
 public TenantScopeFilter(
     ITenantIdProvider tenantIdProvider,
     ILogger <TenantScopeFilter> logger)
 {
     _tenantIdProvider = tenantIdProvider;
 }
Пример #26
0
        /// <summary>
        /// This trick makes it possible to injected the ApplicationContext into other components via DI as usual
        /// but it automatically configures itself with the correct options. Inspired from this Microsoft sample: https://bit.ly/2TIEFMA
        /// </summary>
        /// <param name="shardResolver">The service that resolves the shard connection string</param>
        /// <param name="tenantIdProvider">The service that retrieves tenants Ids from the headers</param>
        /// <returns></returns>
        private static DbContextOptions <ApplicationContext> CreateDbContextOptions(
            IShardResolver shardResolver, ITenantIdProvider tenantIdProvider,
            IUserProvider userService, ITenantUserInfoAccessor accessor)
        {
            // Prepare the options based on the connection created with the shard manager
            var    optionsBuilder   = new DbContextOptionsBuilder <ApplicationContext>();
            string connectionString = shardResolver.GetShardConnectionString();

            if (tenantIdProvider is DesignTimeTenantIdProvider)
            {
                // Only for design time when running "ef migrations" command from the CLI
                optionsBuilder = optionsBuilder.UseSqlServer(connectionString);
            }
            else
            {
                int tenantId = tenantIdProvider.GetTenantId() ?? throw new Controllers.Misc.BadRequestException("Tenant Id was not supplied");

                // Unless this is a fake design time resolver, apply row level security and pass context info
                SqlConnection sqlConnection = new SqlConnection(connectionString);

                SqlCommand cmd = sqlConnection.CreateCommand();
                cmd.CommandText = @"
    -- Set the global values of the session context
    EXEC sp_set_session_context @key=N'TenantId', @value=@TenantId;
    EXEC sp_set_session_context @key=N'Culture', @value=@Culture;
    EXEC sp_set_session_context @key=N'NeutralCulture', @value=@NeutralCulture;

    -- Get the User Id
    DECLARE 
        @UserId INT, 
        @ExternalId NVARCHAR(450), 
        @Email NVARCHAR(255), 
        @SettingsVersion UNIQUEIDENTIFIER, 
        @PermissionsVersion UNIQUEIDENTIFIER,
        @ViewsAndSpecsVersion UNIQUEIDENTIFIER,
        @UserSettingsVersion UNIQUEIDENTIFIER,
        @PrimaryLanguageId NVARCHAR(255),
        @PrimaryLanguageSymbol NVARCHAR(255),
        @SecondaryLanguageId NVARCHAR(255),
        @SecondaryLanguageSymbol NVARCHAR(255)
;

    SELECT
        @UserId = Id,
        @ExternalId = ExternalId,
        @Email = Email,
        @PermissionsVersion = PermissionsVersion,
        @UserSettingsVersion = UserSettingsVersion
    FROM [dbo].[LocalUsers] 
    WHERE TenantId = @TenantId AND IsActive = 1 AND (ExternalId = @ExternalUserId OR Email = @UserEmail);

    -- Set LastAccess (Works only if @UserId IS NOT NULL)
    UPDATE [dbo].[LocalUsers] SET LastAccess = SYSDATETIMEOFFSET() WHERE Id = @UserId;

    -- Get hashes
    SELECT 
        @SettingsVersion = SettingsVersion,
        @ViewsAndSpecsVersion = ViewsAndSpecsVersion,
        @PrimaryLanguageId = PrimaryLanguageId,
        @PrimaryLanguageSymbol = PrimaryLanguageSymbol,
        @SecondaryLanguageId = SecondaryLanguageId,
        @SecondaryLanguageSymbol = SecondaryLanguageSymbol
    FROM [dbo].[Settings]
    WHERE TenantId = @TenantId 

    -- Set the User Id
    EXEC sp_set_session_context @key=N'UserId', @value=@UserId;

    -- Return the user information
    SELECT 
        @UserId AS userId, 
        @ExternalId AS ExternalId, 
        @Email AS Email, 
        @SettingsVersion AS SettingsVersion, 
        @PermissionsVersion AS PermissionsVersion,
        @UserSettingsVersion AS UserSettingsVersion,
        @ViewsAndSpecsVersion AS ViewsAndSpecsVersion,
        @PrimaryLanguageId AS PrimaryLanguageId,
        @PrimaryLanguageSymbol AS PrimaryLanguageSymbol,
        @SecondaryLanguageId AS SecondaryLanguageId,
        @SecondaryLanguageSymbol AS SecondaryLanguageSymbol;
";
                cmd.Parameters.AddWithValue("@TenantId", tenantId);
                cmd.Parameters.AddWithValue("@ExternalUserId", userService.GetUserId());
                cmd.Parameters.AddWithValue("@UserEmail", userService.GetUserEmail());
                cmd.Parameters.AddWithValue("@Culture", CultureInfo.CurrentUICulture.Name);
                cmd.Parameters.AddWithValue("@NeutralCulture", CultureInfo.CurrentUICulture.IsNeutralCulture ? CultureInfo.CurrentUICulture.Name : CultureInfo.CurrentUICulture.Parent.Name);

                sqlConnection.Open();
                using (var reader = cmd.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        int i    = 0;
                        var info = new TenantUserInfo
                        {
                            UserId                  = reader.IsDBNull(i) ? (int?)null : reader.GetInt32(i++),
                            ExternalId              = reader.IsDBNull(i) ? null : reader.GetString(i++),
                            Email                   = reader.IsDBNull(i) ? null : reader.GetString(i++),
                            SettingsVersion         = reader.IsDBNull(i) ? null : reader.GetGuid(i++).ToString(),
                            PermissionsVersion      = reader.IsDBNull(i) ? null : reader.GetGuid(i++).ToString(),
                            UserSettingsVersion     = reader.IsDBNull(i) ? null : reader.GetGuid(i++).ToString(),
                            ViewsAndSpecsVersion    = reader.IsDBNull(i) ? null : reader.GetGuid(i++).ToString(),
                            PrimaryLanguageId       = reader.IsDBNull(i) ? null : reader.GetString(i++),
                            PrimaryLanguageSymbol   = reader.IsDBNull(i) ? null : reader.GetString(i++),
                            SecondaryLanguageId     = reader.IsDBNull(i) ? null : reader.GetString(i++),
                            SecondaryLanguageSymbol = reader.IsDBNull(i) ? null : reader.GetString(i++),
                        };

                        // Provide the user throughout the current session
                        accessor.SetInfo(tenantId, info);
                    }
                    else
                    {
                        throw new Controllers.Misc.BadRequestException("Something went wrong while querying the user ID from the Database");
                    }
                }

                // Prepare the options based on the connection created with the shard manager
                optionsBuilder = optionsBuilder.UseSqlServer(sqlConnection);
            }

            return(optionsBuilder
                   .ReplaceService <IMigrationsSqlGenerator, CustomSqlServerMigrationsSqlGenerator>()
                   .Options);
        }
Пример #27
0
 public TenantUserInfoAccessor(IHttpContextAccessor contextAccessor, ITenantIdProvider tenantIdProvider)
 {
     _contextAccessor  = contextAccessor;
     _tenantIdProvider = tenantIdProvider;
 }
Пример #28
0
 public MongoDbTestRepository(IMongoDatabase mongoDb, ITenantIdProvider tenantIdProvider,
                              string collectionName) : base(mongoDb, tenantIdProvider, collectionName)
 {
 }
 private IAccessChecker GetAccessCheckerInstance(ITenantIdProvider siteUserTenantIdProvider)
 {
     return(new TenantEntityAccessChecker(
                siteUserTenantIdProvider,
                Substitute.For <ILogger <TenantEntityAccessChecker> >()));
 }
Пример #30
0
 public SqlTableBlobService(ApplicationContext db, ITenantIdProvider tenantIdProvider)
 {
     _db = db;
     _tenantIdProvider = tenantIdProvider;
 }