public StudioXUserManager(
            StudioXRoleManager <TRole, TUser> roleManager,
            StudioXUserStore <TRole, TUser> store,
            IOptions <IdentityOptions> optionsAccessor,
            IPasswordHasher <TUser> passwordHasher,
            IEnumerable <IUserValidator <TUser> > userValidators,
            IEnumerable <IPasswordValidator <TUser> > passwordValidators,
            ILookupNormalizer keyNormalizer,
            IdentityErrorDescriber errors,
            IServiceProvider services,
            ILogger <UserManager <TUser> > logger,
            IPermissionManager permissionManager,
            IUnitOfWorkManager unitOfWorkManager,
            ICacheManager cacheManager,
            IRepository <OrganizationUnit, long> organizationUnitRepository,
            IRepository <UserOrganizationUnit, long> userOrganizationUnitRepository,
            IOrganizationUnitSettings organizationUnitSettings,
            ISettingManager settingManager)
            : base(
                store,
                optionsAccessor,
                passwordHasher,
                userValidators,
                passwordValidators,
                keyNormalizer,
                errors,
                services,
                logger)
        {
            this.permissionManager              = permissionManager;
            this.unitOfWorkManager              = unitOfWorkManager;
            this.cacheManager                   = cacheManager;
            this.organizationUnitRepository     = organizationUnitRepository;
            this.userOrganizationUnitRepository = userOrganizationUnitRepository;
            this.organizationUnitSettings       = organizationUnitSettings;
            this.settingManager                 = settingManager;

            StudioXStore = store;
            RoleManager  = roleManager;
        }
        protected StudioXUserManager(
            StudioXUserStore <TRole, TUser> userStore,
            StudioXRoleManager <TRole, TUser> roleManager,
            IPermissionManager permissionManager,
            IUnitOfWorkManager unitOfWorkManager,
            ICacheManager cacheManager,
            IRepository <OrganizationUnit, long> organizationUnitRepository,
            IRepository <UserOrganizationUnit, long> userOrganizationUnitRepository,
            IOrganizationUnitSettings organizationUnitSettings,
            ILocalizationManager localizationManager,
            IdentityEmailMessageService emailService,
            ISettingManager settingManager,
            IUserTokenProviderAccessor userTokenProviderAccessor)
            : base(userStore)
        {
            StudioXStore        = userStore;
            RoleManager         = roleManager;
            LocalizationManager = localizationManager;
            this.settingManager = settingManager;

            this.permissionManager              = permissionManager;
            this.unitOfWorkManager              = unitOfWorkManager;
            this.cacheManager                   = cacheManager;
            this.organizationUnitRepository     = organizationUnitRepository;
            this.userOrganizationUnitRepository = userOrganizationUnitRepository;
            this.organizationUnitSettings       = organizationUnitSettings;

            StudioXSession = NullStudioXSession.Instance;

            UserLockoutEnabledByDefault          = true;
            DefaultAccountLockoutTimeSpan        = TimeSpan.FromMinutes(5);
            MaxFailedAccessAttemptsBeforeLockout = 5;

            EmailService = emailService;

            UserTokenProvider = userTokenProviderAccessor.GetUserTokenProviderOrNull <TUser>();
        }