コード例 #1
0
 public AccountController(
     UserManager userManager,
     IMultiTenancyConfig multiTenancyConfig,
     IUserEmailer userEmailer,
     RoleManager roleManager,
     TenantManager tenantManager,
     IUnitOfWorkManager unitOfWorkManager,
     ITenancyNameFinder tenancyNameFinder,
     ICacheManager cacheManager,
     IAppNotifier appNotifier,
     IWebUrlService webUrlService,
     AbpLoginResultTypeHelper abpLoginResultTypeHelper,
     IUserLinkManager userLinkManager,
     INotificationSubscriptionManager notificationSubscriptionManager)
 {
     _userManager = userManager;
     _multiTenancyConfig = multiTenancyConfig;
     _userEmailer = userEmailer;
     _roleManager = roleManager;
     _tenantManager = tenantManager;
     _unitOfWorkManager = unitOfWorkManager;
     _tenancyNameFinder = tenancyNameFinder;
     _cacheManager = cacheManager;
     _webUrlService = webUrlService;
     _appNotifier = appNotifier;
     _abpLoginResultTypeHelper = abpLoginResultTypeHelper;
     _userLinkManager = userLinkManager;
     _notificationSubscriptionManager = notificationSubscriptionManager;
 }
コード例 #2
0
        public AccountController(UserManager userManager, TenantManager tenantManager)
        {
            _userManager = userManager;
            _tenantManager = tenantManager;

            _abpSession = NullAbpSession.Instance;
        }
コード例 #3
0
 public UserAppService_Link_Tests()
 {
     _userLinkAppService = Resolve<IUserLinkAppService>();
     _userLinkManager = Resolve<IUserLinkManager>();
     _userManager = Resolve<UserManager>();
     _tenantManager = Resolve<TenantManager>();
 }
コード例 #4
0
 public TenantsController(
     ITenantAppService tenantAppService, 
     TenantManager tenantManager, 
     IEditionAppService editionAppService)
 {
     _tenantAppService = tenantAppService;
     _tenantManager = tenantManager;
     _editionAppService = editionAppService;
 }
コード例 #5
0
ファイル: TenantsController.cs プロジェクト: a9512648/JYcms
 public TenantsController(
     ITenantAppService tenantAppService,
     ICommonLookupAppService lookupAppService, 
     TenantManager tenantManager)
 {
     _tenantAppService = tenantAppService;
     _lookupAppService = lookupAppService;
     _tenantManager = tenantManager;
 }
コード例 #6
0
ファイル: TenantAppService.cs プロジェクト: SpeedSX/Polex
 public TenantAppService(
     TenantManager tenantManager, 
     RoleManager roleManager, 
     EditionManager editionManager, 
     IAbpZeroDbMigrator abpZeroDbMigrator)
 {
     _tenantManager = tenantManager;
     _roleManager = roleManager;
     _editionManager = editionManager;
     _abpZeroDbMigrator = abpZeroDbMigrator;
 }
コード例 #7
0
 public AccountController(
     TenantManager tenantManager,
     UserManager userManager,
     RoleManager roleManager,
     IUnitOfWorkManager unitOfWorkManager,
     IMultiTenancyConfig multiTenancyConfig)
 {
     _tenantManager = tenantManager;
     _userManager = userManager;
     _roleManager = roleManager;
     _unitOfWorkManager = unitOfWorkManager;
     _multiTenancyConfig = multiTenancyConfig;
 }
コード例 #8
0
 public ProfileController(TenantManager tenantManager,
     UserManager userManager,
     RoleManager roleManager,
     IUnitOfWorkManager unitOfWorkManager,
     IMultiTenancyConfig multiTenancyConfig, 
     IUserAppService userappservice)
 {
     _tenantManager = tenantManager;
     _userManager = userManager;
     _roleManager = roleManager;
     _unitOfWorkManager = unitOfWorkManager;
     _multiTenancyConfig = multiTenancyConfig;
     _userAppService = userappservice;
 }
コード例 #9
0
 public TenantRegistrationController(
     IMultiTenancyConfig multiTenancyConfig,
     TenantManager tenantManager,
     EditionManager editionManager,
     IAppNotifier appNotifier, 
     UserManager userManager, 
     AbpLoginResultTypeHelper abpLoginResultTypeHelper)
 {
     _multiTenancyConfig = multiTenancyConfig;
     _tenantManager = tenantManager;
     _editionManager = editionManager;
     _appNotifier = appNotifier;
     _userManager = userManager;
     _abpLoginResultTypeHelper = abpLoginResultTypeHelper;
 }
コード例 #10
0
ファイル: AccountController.cs プロジェクト: a9512648/JYcms
 public AccountController(
     UserManager userManager,
     IMultiTenancyConfig multiTenancyConfig,
     IUserEmailer userEmailer,
     RoleManager roleManager,
     TenantManager tenantManager,
     IUnitOfWorkManager unitOfWorkManager,
     ITenancyNameFinder tenancyNameFinder)
 {
     _userManager = userManager;
     _multiTenancyConfig = multiTenancyConfig;
     _userEmailer = userEmailer;
     _roleManager = roleManager;
     _tenantManager = tenantManager;
     _unitOfWorkManager = unitOfWorkManager;
     _tenancyNameFinder = tenancyNameFinder;
 }
コード例 #11
0
 public TenantController(ITenantAppService tenantappservice, 
     
      TenantManager tenantManager,
     UserManager userManager,
     RoleManager roleManager,
     EditionManager editionManager,
     IUnitOfWorkManager unitOfWorkManager,
     IMultiTenancyConfig multiTenancyConfig
     )
 {
     _svcTenant = tenantappservice;
     _roleManager = roleManager;
     _tenantManager = tenantManager;
     _editionManager = editionManager;
     _userManager = userManager;
     _roleManager = roleManager;
     _unitOfWorkManager = unitOfWorkManager;
     _multiTenancyConfig = multiTenancyConfig;
 }
コード例 #12
0
 public TenantAppService(
     
     TenantManager tenantManager,
     UserManager userManager,
     RoleManager roleManager,
     EditionManager editionManager,
     IUnitOfWorkManager unitOfWorkManager,
     IMultiTenancyConfig multiTenancyConfig
     
     )
 {
     _tenantManager = tenantManager;
     _userManager = userManager;
     _roleManager = roleManager;
     _editionManager = editionManager;
     _unitOfWorkManager = unitOfWorkManager;
     _multiTenancyConfig = multiTenancyConfig;
    
 }
コード例 #13
0
 public AccountController(
     TenantManager tenantManager,
     UserManager userManager,
     RoleManager roleManager,
     IUnitOfWorkManager unitOfWorkManager,
     IMultiTenancyConfig multiTenancyConfig,
     ISmtpEmailSender stmpEmailSender,
     ISmtpEmailSenderConfiguration smtpEmailSenderConfiguration,
     IEmailAppService emailAppService
     )
 {
     _tenantManager = tenantManager;
     _userManager = userManager;
     _roleManager = roleManager;
     _unitOfWorkManager = unitOfWorkManager;
     _multiTenancyConfig = multiTenancyConfig;
     _smtpEmailSender = stmpEmailSender;
     _smtpEmailSenderConfiguration = smtpEmailSenderConfiguration;
     _emailAppService = emailAppService;
 }
コード例 #14
0
 public AccountController(
     TenantManager tenantManager,
     UserManager userManager,
     RoleManager roleManager,
     IUnitOfWorkManager unitOfWorkManager,
     IMultiTenancyConfig multiTenancyConfig,
     IMemberAppService memberAppService,
     IRoofTypeAppService roofTypeAppService,
     IServiceTypeAppService serviceTypeAppService,
     ILocationAppService locationAppService)
 {
     _tenantManager = tenantManager;
     _userManager = userManager;
     _roleManager = roleManager;
     _unitOfWorkManager = unitOfWorkManager;
     _multiTenancyConfig = multiTenancyConfig;
     _memberAppService = memberAppService;
     _roofTypeService = roofTypeAppService;
     _serviceTypeService = serviceTypeAppService;
     _locationService = locationAppService;
 }
コード例 #15
0
ファイル: PlanManager.cs プロジェクト: zh3305/Angular
 public PlanManager(
     IRepository <SubProject, Guid> repositorySubProject,
     IRepository <Project, Guid> repositoryProject,
     IRepository <Procedure, Guid> repositoryProcedure,
     IHostingEnvironment hostingEnvironment, IRepository <WorkshopLayout, Guid> repositoryWorkshopLayout, TenantManager tenantManager) : base(repositorySubProject)
 {
     _repositoryProject        = repositoryProject;
     _repositoryProcedure      = repositoryProcedure;
     _hostingEnvironment       = hostingEnvironment;
     _repositoryWorkshopLayout = repositoryWorkshopLayout;
     _tenantManager            = tenantManager;
 }
コード例 #16
0
ファイル: TenantService.cs プロジェクト: lulzzz/HQ.Platform
 public TenantService(TenantManager <TTenant, TUser, TKey> tenantManager, IQueryableProvider <TTenant> queryableProvider)
 {
     _tenantManager     = tenantManager;
     _queryableProvider = queryableProvider;
 }
コード例 #17
0
ファイル: FileMarker.cs プロジェクト: ztcyun/AppServer
        internal void ExecMarkFileAsNew <T>(AsyncTaskData <T> obj)
        {
            TenantManager.SetCurrentTenant(Convert.ToInt32(obj.TenantID));

            var folderDao = DaoFactory.GetFolderDao <T>();
            T   parentFolderId;

            if (obj.FileEntry.FileEntryType == FileEntryType.File)
            {
                parentFolderId = ((File <T>)obj.FileEntry).FolderID;
            }
            else
            {
                parentFolderId = ((Folder <T>)obj.FileEntry).ID;
            }
            var parentFolders = folderDao.GetParentFolders(parentFolderId);

            parentFolders.Reverse();

            var userIDs = obj.UserIDs;

            var userEntriesData = new Dictionary <Guid, List <FileEntry <T> > >();

            if (obj.FileEntry.RootFolderType == FolderType.BUNCH)
            {
                if (!userIDs.Any())
                {
                    return;
                }

                parentFolders.Add(folderDao.GetFolder(GlobalFolder.GetFolderProjects <T>(DaoFactory)));

                var entries = new List <FileEntry <T> > {
                    obj.FileEntry
                };
                entries = entries.Concat(parentFolders).ToList();

                userIDs.ForEach(userID =>
                {
                    if (userEntriesData.ContainsKey(userID))
                    {
                        userEntriesData[userID].AddRange(entries);
                    }
                    else
                    {
                        userEntriesData.Add(userID, entries);
                    }

                    RemoveFromCahce(GlobalFolder.GetFolderProjects(DaoFactory), userID);
                });
            }
            else
            {
                var filesSecurity = FileSecurity;

                if (!userIDs.Any())
                {
                    userIDs = filesSecurity.WhoCanRead(obj.FileEntry).Where(x => x != obj.CurrentAccountId).ToList();
                }
                if (obj.FileEntry.ProviderEntry)
                {
                    userIDs = userIDs.Where(u => !UserManager.GetUsers(u).IsVisitor(UserManager)).ToList();
                }

                parentFolders.ForEach(parentFolder =>
                                      filesSecurity
                                      .WhoCanRead(parentFolder)
                                      .Where(userID => userIDs.Contains(userID) && userID != obj.CurrentAccountId)
                                      .ToList()
                                      .ForEach(userID =>
                {
                    if (userEntriesData.ContainsKey(userID))
                    {
                        userEntriesData[userID].Add(parentFolder);
                    }
                    else
                    {
                        userEntriesData.Add(userID, new List <FileEntry <T> > {
                            parentFolder
                        });
                    }
                })
                                      );



                if (obj.FileEntry.RootFolderType == FolderType.USER)
                {
                    var folderShare = folderDao.GetFolder(GlobalFolder.GetFolderShare <T>(DaoFactory));

                    foreach (var userID in userIDs)
                    {
                        var userFolderId = folderDao.GetFolderIDUser(false, userID);
                        if (Equals(userFolderId, 0))
                        {
                            continue;
                        }

                        Folder <T> rootFolder = null;
                        if (obj.FileEntry.ProviderEntry)
                        {
                            rootFolder = obj.FileEntry.RootFolderCreator == userID
                                             ? folderDao.GetFolder(userFolderId)
                                             : folderShare;
                        }
                        else if (!Equals(obj.FileEntry.RootFolderId, userFolderId))
                        {
                            rootFolder = folderShare;
                        }
                        else
                        {
                            RemoveFromCahce(userFolderId, userID);
                        }

                        if (rootFolder == null)
                        {
                            continue;
                        }

                        if (userEntriesData.ContainsKey(userID))
                        {
                            userEntriesData[userID].Add(rootFolder);
                        }
                        else
                        {
                            userEntriesData.Add(userID, new List <FileEntry <T> > {
                                rootFolder
                            });
                        }

                        RemoveFromCahce(rootFolder.ID, userID);
                    }
                }
                else if (obj.FileEntry.RootFolderType == FolderType.COMMON)
                {
                    userIDs.ForEach(userID => RemoveFromCahce(GlobalFolder.GetFolderCommon(this, DaoFactory), userID));

                    if (obj.FileEntry.ProviderEntry)
                    {
                        var commonFolder = folderDao.GetFolder(GlobalFolder.GetFolderCommon <T>(this, DaoFactory));
                        userIDs.ForEach(userID =>
                        {
                            if (userEntriesData.ContainsKey(userID))
                            {
                                userEntriesData[userID].Add(commonFolder);
                            }
                            else
                            {
                                userEntriesData.Add(userID, new List <FileEntry <T> > {
                                    commonFolder
                                });
                            }

                            RemoveFromCahce(GlobalFolder.GetFolderCommon(this, DaoFactory), userID);
                        });
                    }
                }
                else if (obj.FileEntry.RootFolderType == FolderType.Privacy)
                {
                    foreach (var userID in userIDs)
                    {
                        var privacyFolderId = folderDao.GetFolderIDPrivacy(false, userID);
                        if (Equals(privacyFolderId, 0))
                        {
                            continue;
                        }

                        var rootFolder = folderDao.GetFolder(privacyFolderId);
                        if (rootFolder == null)
                        {
                            continue;
                        }

                        if (userEntriesData.ContainsKey(userID))
                        {
                            userEntriesData[userID].Add(rootFolder);
                        }
                        else
                        {
                            userEntriesData.Add(userID, new List <FileEntry <T> > {
                                rootFolder
                            });
                        }

                        RemoveFromCahce(rootFolder.ID, userID);
                    }
                }

                userIDs.ForEach(userID =>
                {
                    if (userEntriesData.ContainsKey(userID))
                    {
                        userEntriesData[userID].Add(obj.FileEntry);
                    }
                    else
                    {
                        userEntriesData.Add(userID, new List <FileEntry <T> > {
                            obj.FileEntry
                        });
                    }
                });
            }

            var tagDao     = DaoFactory.GetTagDao <T>();
            var newTags    = new List <Tag>();
            var updateTags = new List <Tag>();

            foreach (var userID in userEntriesData.Keys)
            {
                if (tagDao.GetNewTags(userID, obj.FileEntry).Any())
                {
                    continue;
                }

                var entries = userEntriesData[userID].Distinct().ToList();

                var exist  = tagDao.GetNewTags(userID, entries).ToList();
                var update = exist.Where(t => t.EntryType == FileEntryType.Folder).ToList();
                update.ForEach(t => t.Count++);
                updateTags.AddRange(update);

                entries.ForEach(entry =>
                {
                    if (entry != null && exist.All(tag => tag != null && !tag.EntryId.Equals(entry.ID)))
                    {
                        newTags.Add(Tag.New(userID, entry));
                    }
                });
            }

            if (updateTags.Any())
            {
                tagDao.UpdateNewTags(updateTags);
            }
            if (newTags.Any())
            {
                tagDao.SaveTags(newTags);
            }
        }
コード例 #18
0
 public GoogleDriveApp(
     PathProvider pathProvider,
     TenantUtil tenantUtil,
     AuthContext authContext,
     SecurityContext securityContext,
     UserManager userManager,
     UserManagerWrapper userManagerWrapper,
     CookiesManager cookiesManager,
     MessageService messageService,
     Global global,
     GlobalStore globalStore,
     EmailValidationKeyProvider emailValidationKeyProvider,
     FilesLinkUtility filesLinkUtility,
     SettingsManager settingsManager,
     PersonalSettingsHelper personalSettingsHelper,
     BaseCommonLinkUtility baseCommonLinkUtility,
     IOptionsMonitor <ILog> option,
     FileUtility fileUtility,
     FilesSettingsHelper filesSettingsHelper,
     IOptionsSnapshot <AccountLinker> snapshot,
     SetupInfo setupInfo,
     GoogleLoginProvider googleLoginProvider,
     TokenHelper tokenHelper,
     DocumentServiceConnector documentServiceConnector,
     ThirdPartyAppHandlerService thirdPartyAppHandlerService,
     IServiceProvider serviceProvider,
     TenantManager tenantManager,
     CoreBaseSettings coreBaseSettings,
     CoreSettings coreSettings,
     IConfiguration configuration,
     ICacheNotify <ConsumerCacheItem> cache,
     ConsumerFactory consumerFactory,
     string name, int order, Dictionary <string, string> additional)
     : base(tenantManager, coreBaseSettings, coreSettings, configuration, cache, consumerFactory, name, order, additional)
 {
     Logger                      = option.CurrentValue;
     PathProvider                = pathProvider;
     TenantUtil                  = tenantUtil;
     AuthContext                 = authContext;
     SecurityContext             = securityContext;
     UserManager                 = userManager;
     UserManagerWrapper          = userManagerWrapper;
     CookiesManager              = cookiesManager;
     MessageService              = messageService;
     Global                      = global;
     GlobalStore                 = globalStore;
     EmailValidationKeyProvider  = emailValidationKeyProvider;
     FilesLinkUtility            = filesLinkUtility;
     SettingsManager             = settingsManager;
     PersonalSettingsHelper      = personalSettingsHelper;
     BaseCommonLinkUtility       = baseCommonLinkUtility;
     FileUtility                 = fileUtility;
     FilesSettingsHelper         = filesSettingsHelper;
     Snapshot                    = snapshot;
     SetupInfo                   = setupInfo;
     GoogleLoginProvider         = googleLoginProvider;
     TokenHelper                 = tokenHelper;
     DocumentServiceConnector    = documentServiceConnector;
     ThirdPartyAppHandlerService = thirdPartyAppHandlerService;
     ServiceProvider             = serviceProvider;
 }
コード例 #19
0
ファイル: WebItemSecurity.cs プロジェクト: sk81biz/AppServer
        public bool IsAvailableForUser(Guid itemId, Guid @for)
        {
            var id     = itemId.ToString();
            var result = false;

            var tenant = TenantManager.GetCurrentTenant();
            var dic    = WebItemSecurityCache.GetOrInsert(tenant.TenantId);

            if (dic != null)
            {
                lock (dic)
                {
                    if (dic.ContainsKey(id + @for))
                    {
                        return(dic[id + @for]);
                    }
                }
            }

            // can read or administrator
            var securityObj = WebItemSecurityObject.Create(id, WebItemManager);

            if (CoreBaseSettings.Personal &&
                securityObj.WebItemId != WebItemManager.DocumentsProductID)
            {
                // only files visible in your-docs portal
                result = false;
            }
            else
            {
                var webitem = WebItemManager[securityObj.WebItemId];
                if (webitem != null)
                {
                    if ((webitem.ID == WebItemManager.CRMProductID ||
                         webitem.ID == WebItemManager.PeopleProductID ||
                         webitem.ID == WebItemManager.BirthdaysProductID ||
                         webitem.ID == WebItemManager.MailProductID) &&
                        UserManager.GetUsers(@for).IsVisitor(UserManager))
                    {
                        // hack: crm, people, birtthday and mail products not visible for collaborators
                        result = false;
                    }
                    else if ((webitem.ID == WebItemManager.CalendarProductID ||
                              webitem.ID == WebItemManager.TalkProductID) &&
                             UserManager.GetUsers(@for).IsOutsider(UserManager))
                    {
                        // hack: calendar and talk products not visible for outsider
                        result = false;
                    }
                    else if (webitem is IModule)
                    {
                        result = PermissionContext.PermissionResolver.Check(Authentication.GetAccountByID(tenant.TenantId, @for), securityObj, null, Read) &&
                                 IsAvailableForUser(WebItemManager.GetParentItemID(webitem.ID), @for);
                    }
                    else
                    {
                        var hasUsers = AuthorizationManager.GetAces(Guid.Empty, Read.ID, securityObj).Any(a => a.SubjectId != ASC.Core.Users.Constants.GroupEveryone.ID);
                        result = PermissionContext.PermissionResolver.Check(Authentication.GetAccountByID(tenant.TenantId, @for), securityObj, null, Read) ||
                                 (hasUsers && IsProductAdministrator(securityObj.WebItemId, @for));
                    }
                }
                else
                {
                    result = false;
                }
            }

            dic = WebItemSecurityCache.Get(tenant.TenantId);
            if (dic != null)
            {
                lock (dic)
                {
                    dic[id + @for] = result;
                }
            }
            return(result);
        }
コード例 #20
0
ファイル: SmtpSender.cs プロジェクト: DavidLama/AppServer
 public void Deconstruct(out TenantManager tenantManager, out CoreConfiguration coreConfiguration)
 => (tenantManager, coreConfiguration) = (TenantManager, CoreConfiguration);
コード例 #21
0
 public TenantStatusFilter(IOptionsMonitor <ILog> options, TenantManager tenantManager)
 {
     log           = options.CurrentValue;
     TenantManager = tenantManager;
 }
コード例 #22
0
 public TenantAppService(
     TenantManager tenantManager)
 {
     _tenantManager = tenantManager;
 }
コード例 #23
0
 public DateTime DateTimeFromUtc(DateTime utc)
 {
     return(DateTimeFromUtc(TimeZoneConverter.GetTimeZone(TenantManager.GetCurrentTenant().TimeZone), utc));
 }
コード例 #24
0
 public TenantManager_Tests()
 {
     _tenantManager = Resolve<TenantManager>();
 }
コード例 #25
0
 public TenantUtil(TenantManager tenantManager, TimeZoneConverter timeZoneConverter)
 {
     TenantManager     = tenantManager;
     TimeZoneConverter = timeZoneConverter;
 }
コード例 #26
0
 public void Configure(string name, TenantUtil options)
 {
     Configure(options);
     options.TenantManager = TenantManager.Get(name);
 }
コード例 #27
0
 public DateTime DateTimeNow()
 {
     return(DateTimeNow(TimeZoneConverter.GetTimeZone(TenantManager.GetCurrentTenant().TimeZone)));
 }
コード例 #28
0
        public void Start(DocumentStoreConfiguration config)
        {
            _config = config;
            BuildContainer(config);

            if (_config.EnableSingleAggregateRepositoryCache)
            {
                _logger.InfoFormat("Single Aggregate Repository Cache - ENABLED");
                JarvisFrameworkGlobalConfiguration.EnableSingleAggregateRepositoryCache();
            }
            else
            {
                _logger.InfoFormat("Single Aggregate Repository Cache - DISABLED");
                JarvisFrameworkGlobalConfiguration.DisableSingleAggregateRepositoryCache();
            }
            if (_config.DisableRepositoryLockOnAggregateId)
            {
                _logger.InfoFormat("Repository lock on Aggregate Id - DISABLED");
                NeventStoreExGlobalConfiguration.DisableRepositoryLockOnAggregateId();
            }
            else
            {
                _logger.InfoFormat("Repository lock on Aggregate Id - ENABLED");
                NeventStoreExGlobalConfiguration.EnableRepositoryLockOnAggregateId();
            }

            Manager = BuildTenants(_container, config);
            //Setup database check.
            foreach (var tenant in _config.TenantSettings)
            {
                foreach (var connection in _databaseNames)
                {
                    DatabaseHealthCheck check = new DatabaseHealthCheck(
                          String.Format("Tenant: {0} [Db:{1}]", tenant.TenantId, connection),
                          tenant.GetConnectionString(connection));
                }
            }

            while (StartupCheck() == false)
            {
                _logger.InfoFormat("Some precondition to start the service are not met. Will retry in 3 seconds!");
                Thread.Sleep(3000);
            }

            if (RebuildSettings.ShouldRebuild && Environment.UserInteractive)
            {
                Console.WriteLine("---> Set Log Level to INFO to speedup rebuild (y/N)?");
                var res = Console.ReadLine().Trim().ToLowerInvariant();
                if (res == "y")
                {
                    SetLogLevelTo("INFO");
                }
            }

            _logger.DebugFormat(
                "Roles:\n  api: {0}\n  worker : {1}\n  projections: {2}",
                config.IsApiServer,
                config.IsWorker,
                config.IsReadmodelBuilder
            );

            InitializeEverything(config);

            //Check if container misconfigured
            _container.CheckConfiguration();          
        }
コード例 #29
0
 public void Deconstruct(out ILog log, out EncryptionSettingsHelper encryptionSettingsHelper, out TenantManager tenantManager, out NotifyHelper notifyHelper, out CoreBaseSettings coreBaseSettings, out StorageFactoryConfig storageFactoryConfig, out StorageFactory storageFactory, out ICacheNotify <ProgressEncryption> progressEncryption, out IConfiguration configuration)
 {
     log = Log;
     encryptionSettingsHelper = EncryptionSettingsHelper;
     tenantManager            = TenantManager;
     notifyHelper             = NotifyHelper;
     coreBaseSettings         = CoreBaseSettings;
     storageFactoryConfig     = StorageFactoryConfig;
     storageFactory           = StorageFactory;
     progressEncryption       = ProgressEncryption;
     configuration            = Configuration;
 }
コード例 #30
0
 public MultiTenancyService(TenantManager tenantManager, IRepository<Tenant> tenantRepository)
 {
     _tenantManager = tenantManager;
     _tenantRepository = tenantRepository;
 }
コード例 #31
0
 public GoogleDriveSecurityDao(IServiceProvider serviceProvider, UserManager userManager, TenantManager tenantManager, TenantUtil tenantUtil, DbContextManager <FilesDbContext> dbContextManager, SetupInfo setupInfo, IOptionsMonitor <ILog> monitor, FileUtility fileUtility, TempPath tempPath)
     : base(serviceProvider, userManager, tenantManager, tenantUtil, dbContextManager, setupInfo, monitor, fileUtility, tempPath)
 {
 }
コード例 #32
0
 public DateTime DateTimeToUtc(DateTime local)
 {
     return(DateTimeToUtc(TimeZoneConverter.GetTimeZone(TenantManager.GetCurrentTenant().TimeZone), local));
 }
コード例 #33
0
ファイル: FeatureService.cs プロジェクト: periface/SapTam
 public FeatureService(EditionManager editionManager, TenantManager tenantManager, IRepository <Edition> editionRepository)
 {
     _editionManager    = editionManager;
     _tenantManager     = tenantManager;
     _editionRepository = editionRepository;
 }
コード例 #34
0
ファイル: SmtpSender.cs プロジェクト: DavidLama/AppServer
 public SmtpSenderScope(TenantManager tenantManager, CoreConfiguration coreConfiguration)
 {
     TenantManager     = tenantManager;
     CoreConfiguration = coreConfiguration;
 }
コード例 #35
0
ファイル: FileSecurity.cs プロジェクト: zltwork/AppServer
        private IEnumerable <FileEntry <T> > Filter <T>(IEnumerable <FileEntry <T> > entries, FilesSecurityActions action, Guid userId)
        {
            if (entries == null || !entries.Any())
            {
                return(Enumerable.Empty <FileEntry <T> >());
            }

            var user       = UserManager.GetUsers(userId);
            var isOutsider = user.IsOutsider(UserManager);

            if (isOutsider && action != FilesSecurityActions.Read)
            {
                return(Enumerable.Empty <FileEntry <T> >());
            }

            entries = entries.Where(f => f != null).ToList();
            var result = new List <FileEntry <T> >(entries.Count());

            // save entries order
            var order = entries.Select((f, i) => new { Id = f.UniqID, Pos = i }).ToDictionary(e => e.Id, e => e.Pos);

            // common or my files
            Func <FileEntry <T>, bool> filter =
                f => f.RootFolderType == FolderType.COMMON ||
                f.RootFolderType == FolderType.USER ||
                f.RootFolderType == FolderType.SHARE ||
                f.RootFolderType == FolderType.Recent ||
                f.RootFolderType == FolderType.Favorites ||
                f.RootFolderType == FolderType.Templates ||
                f.RootFolderType == FolderType.Privacy ||
                f.RootFolderType == FolderType.Projects;

            var isVisitor = user.IsVisitor(UserManager);

            if (entries.Any(filter))
            {
                var subjects = GetUserSubjects(userId);
                List <FileShareRecord> shares = null;
                foreach (var e in entries.Where(filter))
                {
                    if (!AuthManager.GetAccountByID(TenantManager.GetCurrentTenant().TenantId, userId).IsAuthenticated&& userId != FileConstant.ShareLinkId)
                    {
                        continue;
                    }

                    if (isOutsider && (e.RootFolderType == FolderType.USER ||
                                       e.RootFolderType == FolderType.SHARE ||
                                       e.RootFolderType == FolderType.Privacy))
                    {
                        continue;
                    }

                    if (isVisitor && e.RootFolderType == FolderType.Recent)
                    {
                        continue;
                    }

                    if (isVisitor && e.RootFolderType == FolderType.Favorites)
                    {
                        continue;
                    }

                    if (isVisitor && e.RootFolderType == FolderType.Templates)
                    {
                        continue;
                    }

                    if (isVisitor && e.RootFolderType == FolderType.Privacy)
                    {
                        continue;
                    }

                    if (action != FilesSecurityActions.Read && e.FileEntryType == FileEntryType.Folder && ((IFolder)e).FolderType == FolderType.Projects)
                    {
                        // Root Projects folder read-only
                        continue;
                    }

                    if (action != FilesSecurityActions.Read && e.FileEntryType == FileEntryType.Folder && ((IFolder)e).FolderType == FolderType.SHARE)
                    {
                        // Root Share folder read-only
                        continue;
                    }

                    if (action != FilesSecurityActions.Read && e.FileEntryType == FileEntryType.Folder && ((IFolder)e).FolderType == FolderType.Recent)
                    {
                        // Recent folder read-only
                        continue;
                    }

                    if (action != FilesSecurityActions.Read && e.FileEntryType == FileEntryType.Folder && ((IFolder)e).FolderType == FolderType.Favorites)
                    {
                        // Favorites folder read-only
                        continue;
                    }

                    if (action != FilesSecurityActions.Read && e.FileEntryType == FileEntryType.Folder && ((IFolder)e).FolderType == FolderType.Templates)
                    {
                        // Templates folder read-only
                        continue;
                    }

                    if (isVisitor && e.ProviderEntry)
                    {
                        continue;
                    }

                    if (e.RootFolderType == FolderType.USER && e.RootFolderCreator == userId && !isVisitor)
                    {
                        // user has all right in his folder
                        result.Add(e);
                        continue;
                    }

                    if (e.RootFolderType == FolderType.Privacy && e.RootFolderCreator == userId && !isVisitor)
                    {
                        // user has all right in his privacy folder
                        result.Add(e);
                        continue;
                    }

                    if (DefaultCommonShare == FileShare.Read && action == FilesSecurityActions.Read && e.FileEntryType == FileEntryType.Folder &&
                        ((IFolder)e).FolderType == FolderType.COMMON)
                    {
                        // all can read Common folder
                        result.Add(e);
                        continue;
                    }

                    if (action == FilesSecurityActions.Read && e.FileEntryType == FileEntryType.Folder &&
                        ((IFolder)e).FolderType == FolderType.SHARE)
                    {
                        // all can read Share folder
                        result.Add(e);
                        continue;
                    }

                    if (action == FilesSecurityActions.Read && e.FileEntryType == FileEntryType.Folder &&
                        ((IFolder)e).FolderType == FolderType.Recent)
                    {
                        // all can read recent folder
                        result.Add(e);
                        continue;
                    }

                    if (action == FilesSecurityActions.Read && e.FileEntryType == FileEntryType.Folder &&
                        ((IFolder)e).FolderType == FolderType.Favorites)
                    {
                        // all can read favorites folder
                        result.Add(e);
                        continue;
                    }

                    if (action == FilesSecurityActions.Read && e.FileEntryType == FileEntryType.Folder &&
                        ((IFolder)e).FolderType == FolderType.Templates)
                    {
                        // all can read templates folder
                        result.Add(e);
                        continue;
                    }


                    if (e.RootFolderType == FolderType.COMMON && FileSecurityCommon.IsAdministrator(userId))
                    {
                        // administrator in Common has all right
                        result.Add(e);
                        continue;
                    }

                    if (shares == null)
                    {
                        shares = GetShares(entries).Join(subjects, r => r.Subject, s => s, (r, s) => r).ToList();
                        // shares ordered by level
                    }

                    FileShareRecord ace;
                    if (e.FileEntryType == FileEntryType.File)
                    {
                        ace = shares
                              .OrderBy(r => r, new SubjectComparer(subjects))
                              .ThenByDescending(r => r.Share, new FileShareRecord.ShareComparer())
                              .FirstOrDefault(r => Equals(r.EntryId, e.ID) && r.EntryType == FileEntryType.File);
                        if (ace == null)
                        {
                            // share on parent folders
                            ace = shares.Where(r => Equals(r.EntryId, ((File <T>)e).FolderID) && r.EntryType == FileEntryType.Folder)
                                  .OrderBy(r => r, new SubjectComparer(subjects))
                                  .ThenBy(r => r.Level)
                                  .ThenByDescending(r => r.Share, new FileShareRecord.ShareComparer())
                                  .FirstOrDefault();
                        }
                    }
                    else
                    {
                        ace = shares.Where(r => Equals(r.EntryId, e.ID) && r.EntryType == FileEntryType.Folder)
                              .OrderBy(r => r, new SubjectComparer(subjects))
                              .ThenBy(r => r.Level)
                              .ThenByDescending(r => r.Share, new FileShareRecord.ShareComparer())
                              .FirstOrDefault();
                    }

                    var defaultShare = e.RootFolderType == FolderType.USER
                        ? DefaultMyShare
                        : e.RootFolderType == FolderType.Privacy
                            ? DefaultPrivacyShare
                            : DefaultCommonShare;
                    e.Access = ace != null
                        ? ace.Share
                        : userId == FileConstant.ShareLinkId
                            ? FileShare.Restrict
                            : defaultShare;

                    if (action == FilesSecurityActions.Read && e.Access != FileShare.Restrict)
                    {
                        result.Add(e);
                    }
                    else if (action == FilesSecurityActions.Comment && (e.Access == FileShare.Comment || e.Access == FileShare.Review || e.Access == FileShare.CustomFilter || e.Access == FileShare.ReadWrite))
                    {
                        result.Add(e);
                    }
                    else if (action == FilesSecurityActions.FillForms && (e.Access == FileShare.FillForms || e.Access == FileShare.Review || e.Access == FileShare.ReadWrite))
                    {
                        result.Add(e);
                    }
                    else if (action == FilesSecurityActions.Review && (e.Access == FileShare.Review || e.Access == FileShare.ReadWrite))
                    {
                        result.Add(e);
                    }
                    else if (action == FilesSecurityActions.CustomFilter && (e.Access == FileShare.CustomFilter || e.Access == FileShare.ReadWrite))
                    {
                        result.Add(e);
                    }
                    else if (action == FilesSecurityActions.Edit && e.Access == FileShare.ReadWrite)
                    {
                        result.Add(e);
                    }
                    else if (action == FilesSecurityActions.Create && e.Access == FileShare.ReadWrite)
                    {
                        result.Add(e);
                    }
                    else if (e.Access != FileShare.Restrict && e.CreateBy == userId && (e.FileEntryType == FileEntryType.File || ((IFolder)e).FolderType != FolderType.COMMON))
                    {
                        result.Add(e);
                    }

                    if (e.CreateBy == userId)
                    {
                        e.Access = FileShare.None;                       //HACK: for client
                    }
                }
            }

            // files in bunch
            filter = f => f.RootFolderType == FolderType.BUNCH;
            if (entries.Any(filter))
            {
                var folderDao       = daoFactory.GetFolderDao <T>();
                var filteredEntries = entries.Where(filter).ToList();
                var roots           = filteredEntries
                                      .Select(r => r.RootFolderId)
                                      .ToList();

                var rootsFolders   = folderDao.GetFolders(roots);
                var bunches        = folderDao.GetBunchObjectIDs(rootsFolders.Select(r => r.ID).ToList());
                var findedAdapters = FilesIntegration.GetFileSecurity(bunches);

                foreach (var e in filteredEntries)
                {
                    findedAdapters.TryGetValue(e.RootFolderId.ToString(), out var adapter);

                    if (adapter == null)
                    {
                        continue;
                    }

                    if (adapter.CanRead(e, userId) &&
                        adapter.CanCreate(e, userId) &&
                        adapter.CanEdit(e, userId) &&
                        adapter.CanDelete(e, userId))
                    {
                        e.Access = FileShare.None;
                        result.Add(e);
                    }
                    else if (action == FilesSecurityActions.Comment && adapter.CanComment(e, userId))
                    {
                        e.Access = FileShare.Comment;
                        result.Add(e);
                    }
                    else if (action == FilesSecurityActions.FillForms && adapter.CanFillForms(e, userId))
                    {
                        e.Access = FileShare.FillForms;
                        result.Add(e);
                    }
                    else if (action == FilesSecurityActions.Review && adapter.CanReview(e, userId))
                    {
                        e.Access = FileShare.Review;
                        result.Add(e);
                    }
                    else if (action == FilesSecurityActions.CustomFilter && adapter.CanCustomFilterEdit(e, userId))
                    {
                        e.Access = FileShare.CustomFilter;
                        result.Add(e);
                    }
                    else if (action == FilesSecurityActions.Create && adapter.CanCreate(e, userId))
                    {
                        e.Access = FileShare.ReadWrite;
                        result.Add(e);
                    }
                    else if (action == FilesSecurityActions.Delete && adapter.CanDelete(e, userId))
                    {
                        e.Access = FileShare.ReadWrite;
                        result.Add(e);
                    }
                    else if (action == FilesSecurityActions.Read && adapter.CanRead(e, userId))
                    {
                        if (adapter.CanCreate(e, userId) ||
                            adapter.CanDelete(e, userId) ||
                            adapter.CanEdit(e, userId))
                        {
                            e.Access = FileShare.ReadWrite;
                        }
                        else
                        {
                            e.Access = FileShare.Read;
                        }

                        result.Add(e);
                    }
                    else if (action == FilesSecurityActions.Edit && adapter.CanEdit(e, userId))
                    {
                        e.Access = FileShare.ReadWrite;

                        result.Add(e);
                    }
                }
            }

            // files in trash
            filter = f => f.RootFolderType == FolderType.TRASH;
            if ((action == FilesSecurityActions.Read || action == FilesSecurityActions.Delete) && entries.Any(filter))
            {
                var folderDao = daoFactory.GetFolderDao <T>();
                var mytrashId = folderDao.GetFolderIDTrash(false, userId);
                if (!Equals(mytrashId, 0))
                {
                    result.AddRange(entries.Where(filter).Where(e => Equals(e.RootFolderId, mytrashId)));
                }
            }

            if (FileSecurityCommon.IsAdministrator(userId))
            {
                // administrator can work with crashed entries (crash in files_folder_tree)
                filter = f => f.RootFolderType == FolderType.DEFAULT;
                result.AddRange(entries.Where(filter));
            }

            // restore entries order
            result.Sort((x, y) => order[x.UniqID].CompareTo(order[y.UniqID]));
            return(result);
        }
コード例 #36
0
 public FeatureValueStore(TenantManager tenantManager)
     : base(tenantManager)
 {
 }
コード例 #37
0
ファイル: TenantAppService.cs プロジェクト: wddpct/SimpleTask
 public TenantAppService(TenantManager tenantManager, RoleManager roleManager, EditionManager editionManager)
 {
     _tenantManager = tenantManager;
     _roleManager = roleManager;
     _editionManager = editionManager;
 }
コード例 #38
0
 /// <summary>
 /// 重置账套特性
 /// </summary>
 /// <param name="tenantId"></param>
 /// <returns></returns>
 public virtual async Task ResetTenantFeature(int tenantId)
 {
     await TenantManager.ResetAllFeaturesAsync(tenantId);
 }
コード例 #39
0
ファイル: FileSecurity.cs プロジェクト: zltwork/AppServer
        private IEnumerable <Guid> WhoCan <T>(FileEntry <T> entry, FilesSecurityActions action)
        {
            var shares = GetShares(entry);

            FileShareRecord defaultShareRecord;

            switch (entry.RootFolderType)
            {
            case FolderType.COMMON:
                defaultShareRecord = new FileShareRecord
                {
                    Level     = int.MaxValue,
                    EntryId   = entry.ID,
                    EntryType = entry.FileEntryType,
                    Share     = DefaultCommonShare,
                    Subject   = Constants.GroupEveryone.ID,
                    Tenant    = TenantManager.GetCurrentTenant().TenantId,
                    Owner     = AuthContext.CurrentAccount.ID
                };

                if (!shares.Any())
                {
                    if ((defaultShareRecord.Share == FileShare.Read && action == FilesSecurityActions.Read) ||
                        (defaultShareRecord.Share == FileShare.ReadWrite))
                    {
                        return(UserManager.GetUsersByGroup(defaultShareRecord.Subject)
                               .Where(x => x.Status == EmployeeStatus.Active).Select(y => y.ID).Distinct());
                    }

                    return(Enumerable.Empty <Guid>());
                }

                break;

            case FolderType.USER:
                defaultShareRecord = new FileShareRecord
                {
                    Level     = int.MaxValue,
                    EntryId   = entry.ID,
                    EntryType = entry.FileEntryType,
                    Share     = DefaultMyShare,
                    Subject   = entry.RootFolderCreator,
                    Tenant    = TenantManager.GetCurrentTenant().TenantId,
                    Owner     = entry.RootFolderCreator
                };

                if (!shares.Any())
                {
                    return new List <Guid>
                           {
                               entry.RootFolderCreator
                           }
                }
                ;

                break;

            case FolderType.Privacy:
                defaultShareRecord = new FileShareRecord
                {
                    Level     = int.MaxValue,
                    EntryId   = entry.ID,
                    EntryType = entry.FileEntryType,
                    Share     = DefaultPrivacyShare,
                    Subject   = entry.RootFolderCreator,
                    Tenant    = TenantManager.GetCurrentTenant().TenantId,
                    Owner     = entry.RootFolderCreator
                };

                if (!shares.Any())
                {
                    return new List <Guid>
                           {
                               entry.RootFolderCreator
                           }
                }
                ;

                break;

            case FolderType.BUNCH:
                if (action == FilesSecurityActions.Read)
                {
                    var folderDao = daoFactory.GetFolderDao <T>();

                    var root = folderDao.GetFolder(entry.RootFolderId);
                    if (root != null)
                    {
                        var path = folderDao.GetBunchObjectID(root.ID);

                        var adapter = FilesIntegration.GetFileSecurity(path);

                        if (adapter != null)
                        {
                            return(adapter.WhoCanRead(entry));
                        }
                    }
                }

                // TODO: For Projects and other
                defaultShareRecord = null;
                break;

            default:
                defaultShareRecord = null;
                break;
            }

            if (defaultShareRecord != null)
            {
                shares = shares.Concat(new[] { defaultShareRecord });
            }

            return(shares.SelectMany(x =>
            {
                var groupInfo = UserManager.GetGroupInfo(x.Subject);

                if (groupInfo.ID != Constants.LostGroupInfo.ID)
                {
                    return
                    UserManager.GetUsersByGroup(groupInfo.ID)
                    .Where(p => p.Status == EmployeeStatus.Active)
                    .Select(y => y.ID);
                }

                return new[] { x.Subject };
            })
                   .Distinct()
                   .Where(x => Can(entry, x, action))
                   .ToList());
        }
コード例 #40
0
 protected virtual Task <Tenant> GetCurrentTenantAsync()
 {
     return(TenantManager.GetByIdAsync(AbpSession.GetTenantId()));
 }
コード例 #41
0
 public void UserPasswordChange(UserInfo userInfo)
 {
     var hash            = Hasher.Base64Hash(Authentication.GetUserPasswordHash(TenantManager.GetCurrentTenant().TenantId, userInfo.ID));
     var confirmationUrl = CommonLinkUtility.GetConfirmationUrl(userInfo.Email, ConfirmType.PasswordChange, hash + userInfo.ID, userInfo.ID);
コード例 #42
0
        public IActionResult Register(TenantModel model)
        {
            if (model == null)
            {
                return(BadRequest(new
                {
                    error = "portalNameEmpty",
                    message = "PortalName is required"
                }));
            }

            if (!ModelState.IsValid)
            {
                var message = new JArray();

                foreach (var k in ModelState.Keys)
                {
                    message.Add(ModelState[k].Errors.FirstOrDefault().ErrorMessage);
                }

                return(BadRequest(new
                {
                    error = "params",
                    message
                }));
            }

            var sw = Stopwatch.StartNew();

            if (string.IsNullOrEmpty(model.PasswordHash))
            {
                if (!CheckPasswordPolicy(model.Password, out var error1))
                {
                    sw.Stop();
                    return(BadRequest(error1));
                }

                if (!string.IsNullOrEmpty(model.Password))
                {
                    model.PasswordHash = PasswordHasher.GetClientPassword(model.Password);
                }
            }
            model.FirstName = (model.FirstName ?? "").Trim();
            model.LastName  = (model.LastName ?? "").Trim();

            if (!CheckValidName(model.FirstName + model.LastName, out var error))
            {
                sw.Stop();

                return(BadRequest(error));
            }

            model.PortalName = (model.PortalName ?? "").Trim();

            if (!CheckExistingNamePortal(model.PortalName, out error))
            {
                sw.Stop();

                return(BadRequest(error));
            }

            Log.DebugFormat("PortalName = {0}; Elapsed ms. CheckExistingNamePortal: {1}", model.PortalName, sw.ElapsedMilliseconds);

            var clientIP = CommonMethods.GetClientIp();

            if (CommonMethods.CheckMuchRegistration(model, clientIP, sw))
            {
                return(BadRequest(new
                {
                    error = "tooMuchAttempts",
                    message = "Too much attempts already"
                }));
            }

            if (!CheckRecaptcha(model, clientIP, sw, out error))
            {
                return(BadRequest(error));
            }

            if (!CheckRegistrationPayment(out error))
            {
                return(BadRequest(error));
            }

            var language = model.Language ?? string.Empty;

            var tz = TimeZonesProvider.GetCurrentTimeZoneInfo(language);

            Log.DebugFormat("PortalName = {0}; Elapsed ms. TimeZonesProvider.GetCurrentTimeZoneInfo: {1}", model.PortalName, sw.ElapsedMilliseconds);

            if (!string.IsNullOrEmpty(model.TimeZoneName))
            {
                tz = TimeZoneConverter.GetTimeZone(model.TimeZoneName.Trim(), false) ?? tz;

                Log.DebugFormat("PortalName = {0}; Elapsed ms. TimeZonesProvider.OlsonTimeZoneToTimeZoneInfo: {1}", model.PortalName, sw.ElapsedMilliseconds);
            }

            var lang = TimeZonesProvider.GetCurrentCulture(language);

            Log.DebugFormat("PortalName = {0}; model.Language = {1}, resultLang.DisplayName = {2}", model.PortalName, language, lang.DisplayName);

            var info = new TenantRegistrationInfo
            {
                Name                = Configuration["web:portal-name"] ?? "Cloud Office Applications",
                Address             = model.PortalName,
                Culture             = lang,
                FirstName           = model.FirstName,
                LastName            = model.LastName,
                PasswordHash        = string.IsNullOrEmpty(model.PasswordHash) ? null : model.PasswordHash,
                Email               = (model.Email ?? "").Trim(),
                TimeZoneInfo        = tz,
                MobilePhone         = string.IsNullOrEmpty(model.Phone) ? null : model.Phone.Trim(),
                Industry            = (TenantIndustry)model.Industry,
                Spam                = model.Spam,
                Calls               = model.Calls,
                LimitedControlPanel = model.LimitedControlPanel
            };

            if (!string.IsNullOrEmpty(model.PartnerId))
            {
                if (Guid.TryParse(model.PartnerId, out _))
                {
                    // valid guid
                    info.PartnerId = model.PartnerId;
                }
            }

            if (!string.IsNullOrEmpty(model.AffiliateId))
            {
                info.AffiliateId = model.AffiliateId;
            }

            if (!string.IsNullOrEmpty(model.Campaign))
            {
                info.Campaign = model.Campaign;
            }

            Tenant t;

            try
            {
                /****REGISTRATION!!!*****/
                if (!string.IsNullOrEmpty(ApiSystemHelper.ApiCacheUrl))
                {
                    ApiSystemHelper.AddTenantToCache(info.Address, SecurityContext.CurrentAccount.ID);

                    Log.DebugFormat("PortalName = {0}; Elapsed ms. CacheController.AddTenantToCache: {1}", model.PortalName, sw.ElapsedMilliseconds);
                }

                HostedSolution.RegisterTenant(info, out t);

                /*********/

                Log.DebugFormat("PortalName = {0}; Elapsed ms. HostedSolution.RegisterTenant: {1}", model.PortalName, sw.ElapsedMilliseconds);
            }
            catch (Exception e)
            {
                sw.Stop();

                Log.Error(e);

                return(StatusCode(StatusCodes.Status500InternalServerError, new
                {
                    error = "registerNewTenantError",
                    message = e.Message,
                    stacktrace = e.StackTrace
                }));
            }

            var trialQuota = Configuration["trial-quota"];

            if (!string.IsNullOrEmpty(trialQuota))
            {
                if (int.TryParse(trialQuota, out var trialQuotaId))
                {
                    var dueDate = DateTime.MaxValue;
                    if (int.TryParse(Configuration["trial-due"], out var dueTrial))
                    {
                        dueDate = DateTime.UtcNow.AddDays(dueTrial);
                    }

                    var tariff = new Tariff
                    {
                        QuotaId = trialQuotaId,
                        DueDate = dueDate
                    };
                    HostedSolution.SetTariff(t.TenantId, tariff);
                }
            }


            var    isFirst = true;
            string sendCongratulationsAddress = null;

            if (!string.IsNullOrEmpty(model.PasswordHash))
            {
                isFirst = !CommonMethods.SendCongratulations(Request.Scheme, t, model.SkipWelcome, out sendCongratulationsAddress);
            }
            else if (Configuration["core:base-domain"] == "localhost")
            {
                try
                {
                    /* set wizard not completed*/
                    TenantManager.SetCurrentTenant(t);

                    var settings = SettingsManager.Load <WizardSettings>();

                    settings.Completed = false;

                    SettingsManager.Save(settings);
                }
                catch (Exception e)
                {
                    Log.Error(e);
                }
            }

            var reference = CommonMethods.CreateReference(Request.Scheme, t.GetTenantDomain(CoreSettings), info.Email, isFirst);

            Log.DebugFormat("PortalName = {0}; Elapsed ms. CreateReferenceByCookie...: {1}", model.PortalName, sw.ElapsedMilliseconds);

            sw.Stop();

            return(Ok(new
            {
                reference,
                tenant = CommonMethods.ToTenantWrapper(t),
                referenceWelcome = sendCongratulationsAddress
            }));
        }
コード例 #43
0
 public Tariff GetCurrentTariff()
 {
     return(PaymentManager.GetTariff(TenantManager.GetCurrentTenant().TenantId));
 }
コード例 #44
0
        TenantManager BuildTenants(IWindsorContainer container, DocumentStoreConfiguration config)
        {
            _logger.Debug("Configuring tenants");
            var manager = new TenantManager(container.Kernel);
            container.Register(Component.For<ITenantAccessor, TenantManager>().Instance(manager));

            foreach (var settings in config.TenantSettings)
            {
                _logger.DebugFormat("Adding tenant {0}", settings.TenantId);

                var tenant = manager.AddTenant(settings);
                tenant.Container.Kernel.Resolver.AddSubResolver(new CollectionResolver(tenant.Container.Kernel, true));
                tenant.Container.Kernel.Resolver.AddSubResolver(new ArrayResolver(tenant.Container.Kernel, true));
                tenant.Container.AddFacility<StartableFacility>();

                container.AddChildContainer(tenant.Container);
            }

            return manager;
        }
コード例 #45
0
 public TenantQuota GetTenantQuota()
 {
     return(GetTenantQuota(TenantManager.GetCurrentTenant().TenantId));
 }
コード例 #46
0
 public EditionAndFeature_Tests()
 {
     _editionManager = Resolve<EditionManager>();
     _tenantManager = Resolve<TenantManager>();
     _featureChecker = Resolve<FeatureChecker>();
 }
コード例 #47
0
 public TenantQuota GetTenantQuota(int tenant)
 {
     return(TenantManager.GetTenantQuota(tenant));
 }
コード例 #48
0
 public SeguridadService(TenantManager tenantManager, UserManager userManager)
 {
     _tenantManager = tenantManager;
     _userManager = userManager;
 }
コード例 #49
0
 public IEnumerable <TenantQuota> GetTenantQuotas()
 {
     return(TenantManager.GetTenantQuotas());
 }
コード例 #50
0
 public TenantAppService(TenantManager tenantManager, IMapper mapper)
 {
     _tenantManager = tenantManager;
     _mapper        = mapper;
 }
コード例 #51
0
        public void RunJob(DistributedTask _, CancellationToken cancellationToken)
        {
            try
            {
                CancellationToken = cancellationToken;

                SetProgress(5, "Setup tenant");

                TenantManager.SetCurrentTenant(CurrentTenant);

                SetProgress(10, "Setup user");

                SecurityContext.AuthenticateMe(CurrentUser); //Core.Configuration.Constants.CoreSystem);

                SetProgress(15, "Find user data");

                var currentUser = UserManager.GetUsers(SecurityContext.CurrentAccount.ID);

                SetProgress(20, "Create mime message");

                var toAddress = new MailboxAddress(currentUser.UserName, currentUser.Email);

                var fromAddress = new MailboxAddress(SmtpSettings.SenderDisplayName, SmtpSettings.SenderAddress);

                var mimeMessage = new MimeMessage
                {
                    Subject = messageSubject
                };

                mimeMessage.From.Add(fromAddress);

                mimeMessage.To.Add(toAddress);

                var bodyBuilder = new BodyBuilder
                {
                    TextBody = messageBody
                };

                mimeMessage.Body = bodyBuilder.ToMessageBody();

                mimeMessage.Headers.Add("Auto-Submitted", "auto-generated");

                using var client = GetSmtpClient();
                SetProgress(40, "Connect to host");

                client.Connect(SmtpSettings.Host, SmtpSettings.Port.GetValueOrDefault(25),
                               SmtpSettings.EnableSSL ? SecureSocketOptions.Auto : SecureSocketOptions.None, cancellationToken);

                if (SmtpSettings.EnableAuth)
                {
                    SetProgress(60, "Authenticate");

                    client.Authenticate(SmtpSettings.CredentialsUserName,
                                        SmtpSettings.CredentialsUserPassword, cancellationToken);
                }

                SetProgress(80, "Send test message");

                client.Send(FormatOptions.Default, mimeMessage, cancellationToken);
            }
            catch (AuthorizingException authError)
            {
                Error = Resource.ErrorAccessDenied; // "No permissions to perform this action";
                Logger.Error(Error, new SecurityException(Error, authError));
            }
            catch (AggregateException ae)
            {
                ae.Flatten().Handle(e => e is TaskCanceledException || e is OperationCanceledException);
            }
            catch (SocketException ex)
            {
                Error = ex.Message; //TODO: Add translates of ordinary cases
                Logger.Error(ex.ToString());
            }
            catch (AuthenticationException ex)
            {
                Error = ex.Message; //TODO: Add translates of ordinary cases
                Logger.Error(ex.ToString());
            }
            catch (Exception ex)
            {
                Error = ex.Message; //TODO: Add translates of ordinary cases
                Logger.Error(ex.ToString());
            }
            finally
            {
                try
                {
                    TaskInfo.SetProperty(FINISHED, true);
                    PublishTaskInfo();

                    SecurityContext.Logout();
                }
                catch (Exception ex)
                {
                    Logger.ErrorFormat("LdapOperation finalization problem. {0}", ex);
                }
            }
        }
コード例 #52
0
 public AccountController(
     TenantManager tenantManager
     )
 {
     _tenantManager = tenantManager;
 }
コード例 #53
0
 public EventStoreInstaller(TenantManager manager, DocumentStoreConfiguration config)
 {
     _manager = manager;
     _config = config;
 }