Example #1
0
        public async Task <IEnumerable <Site> > ReloadSiteCacheAsync()
        {
            var sites = await _siteRepository.GetAllAsync();

            foreach (var site in sites)
            {
                await _cache.RemoveAsync($"s{site.Id}.{CacheKey.SiteSettings}");

                await _cache.RemoveAsync($"s{site.Id}.{CacheKey.SiteCss}");
            }
            await _cache.RemoveAsync(CacheKey.Sites);

            return(await GetSitesFromCacheAsync());
        }
Example #2
0
        public async Task <IEnumerable <Site> > GetSitesOfUserAsync(Guid userId, bool grantPermission)
        {
            userId.Validate();

            List <Site> sites = new List <Site>();

            if (grantPermission)
            {
                sites = (await _siteRepository.GetAllAsync()).ToList();
            }
            else
            {
                var permissions = (await _permissionRepository.GetPermissionByUserAsync(userId))
                                  .Where(p => p.PermissionSubject == PermissionSubjectType.Site)
                                  .ToList();

                var siteIds = permissions.Select(p => p.ObjectId);

                foreach (var id in siteIds)
                {
                    var site = await _siteRepository.GetByIDAsync(id);

                    sites.Add(site);
                }
            }

            return(sites);
        }
Example #3
0
        private async Task <IEnumerable <Site> > GetSitesFromCacheAsync()
        {
            IEnumerable <Site> sites;
            var cachedSites = _cache.GetString(CacheKey.Sites);

            if (cachedSites == null)
            {
                sites = await _siteRepository.GetAllAsync();

                if (!sites.Any())
                {
                    sites = await InsertInitialSiteAsync();
                }
                _cache.SetString(CacheKey.Sites, JsonConvert.SerializeObject(sites));
                _logger.LogTrace("Cache miss on sites: {Count} loaded", sites.Count());
            }
            else
            {
                sites = JsonConvert.DeserializeObject <IEnumerable <Site> >(cachedSites);
            }

            foreach (var site in sites)
            {
                string key = $"s{site.Id}.{CacheKey.SiteSettings}";
                var    cachedSiteSettings = _cache.GetString(key);

                if (cachedSiteSettings == null)
                {
                    site.Settings = await _siteSettingRepository.GetBySiteIdAsync(site.Id);

                    _cache.SetString(key, JsonConvert.SerializeObject(site.Settings));
                    _logger.LogTrace("Cache miss on site settings for site id {Id}, {Count} loaded",
                                     site.Id,
                                     site.Settings.Count);
                }
                else
                {
                    site.Settings = JsonConvert.DeserializeObject <ICollection <SiteSetting> >(cachedSiteSettings);
                }
            }

            return(sites);
        }
Example #4
0
        private async Task <IEnumerable <Site> > GetSitesFromCacheAsync()
        {
            var sites = _memoryCache.Get <IEnumerable <Site> >(CacheKey.SitePaths);

            if (sites == null)
            {
                sites = await _siteRepository.GetAllAsync();

                if (sites.Count() == 0)
                {
                    sites = await InsertInitialSiteAsync();
                }
                _memoryCache.Set(CacheKey.SitePaths, sites);
            }
            return(sites);
        }
Example #5
0
        public async Task SyncPermissionsAsync()
        {
            var sites = await _siteRepository.GetAllAsync();

            if (sites.Any())
            {
                var adminRole = await _roleRepository.GetByIdAsync(1);

                if (adminRole != null)
                {
                    if (!adminRole.IsAdmin)
                    {
                        _logger.LogError("Role ID 1 is not set as IsAdmin, fixing.");
                        adminRole.IsAdmin = true;
                        await _roleRepository.UpdateSaveAsync(-1, adminRole);
                    }
                }
                else
                {
                    _logger.LogError("Cannot find role ID 1 in order to ensure it is marked as IsAdmin");
                }

                var permissionList = Enum.GetValues(typeof(Permission))
                                     .Cast <Permission>()
                                     .Select(_ => _.ToString());
                var currentPermissions = await _roleRepository.GetAllPermissionsAsync();

                var permissionsToAdd    = permissionList.Except(currentPermissions);
                var permissionsToRemove = currentPermissions.Except(permissionList);

                if (permissionsToAdd.Any() || permissionsToRemove.Any())
                {
                    if (permissionsToAdd.Any())
                    {
                        var userId = await _siteLookupService.GetSystemUserId();

                        await _roleRepository.AddPermissionListAsync(userId, permissionsToAdd);
                    }
                    if (permissionsToRemove.Any())
                    {
                        _roleRepository.RemovePermissionList(permissionsToRemove);
                    }
                    await _roleRepository.SaveAsync();
                }
            }
        }
        public async Task EnsureDefaultCategoryAsync()
        {
            var sites = await _siteRepository.GetAllAsync();

            foreach (var site in sites)
            {
                var defaultCategory = await _newsCategoryRepository
                                      .GetDefaultCategoryAsync(site.Id);

                if (defaultCategory == null)
                {
                    var category = new NewsCategory
                    {
                        IsDefault = true,
                        Name      = "News",
                        SiteId    = site.Id
                    };

                    await _newsCategoryRepository.AddSaveAsync(-1, category);
                }
            }
        }
 //Done
 public IQueryable <Site> GetAllAsync()
 {
     return(_SiteRepository.GetAllAsync());
 }
Example #8
0
 public async Task <IEnumerable <SiteDTO> > GetAllAsync()
 {
     return(await SiteRepository.GetAllAsync());
 }