public string CreateAuditTrailReport() { SecurityContext.DemandPermissions(SecutiryConstants.EditPortalSettings); var tenantId = TenantProvider.CurrentTenantID; if (!SetupInfo.IsVisibleSettings(ManagementType.AuditTrail.ToString()) || CoreContext.Configuration.Standalone && !CoreContext.TenantManager.GetTenantQuota(tenantId).Audit) { throw new BillingException(Resource.ErrorNotAllowedOption, "Audit"); } var settings = TenantAuditSettings.LoadForTenant(tenantId); var to = DateTime.UtcNow; var from = to.Subtract(TimeSpan.FromDays(settings.AuditTrailLifeTime)); var reportName = string.Format(AuditReportResource.AuditTrailReportName + ".csv", from.ToString("MM.dd.yyyy"), to.ToString("MM.dd.yyyy")); var events = AuditEventsRepository.Get(tenantId, from, to); var result = AuditReportCreator.CreateCsvReport(events, reportName); MessageService.Send(Request, MessageAction.AuditTrailReportDownloaded); return(result); }
public TenantAuditSettings GetAuditSettings() { SecurityContext.DemandPermissions(SecutiryConstants.EditPortalSettings); DemandBaseAuditPermission(); return(TenantAuditSettings.LoadForTenant(TenantProvider.CurrentTenantID)); }
public TenantAuditSettings GetAuditSettings() { if (!SetupInfo.IsVisibleSettings(ManagementType.LoginHistory.ToString())) { throw new BillingException(Resource.ErrorNotAllowedOption, "Audit"); } SecurityContext.DemandPermissions(SecutiryConstants.EditPortalSettings); return(TenantAuditSettings.LoadForTenant(TenantProvider.CurrentTenantID)); }
public TenantAuditSettings SetAuditSettings(TenantAuditSettings settings) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); if (settings.LoginHistoryLifeTime <= 0 || settings.LoginHistoryLifeTime > TenantAuditSettings.MaxLifeTime) { throw new ArgumentException("LoginHistoryLifeTime"); } if (settings.AuditTrailLifeTime <= 0 || settings.AuditTrailLifeTime > TenantAuditSettings.MaxLifeTime) { throw new ArgumentException("AuditTrailLifeTime"); } SettingsManager.SaveForTenant(settings, TenantManager.GetCurrentTenant().TenantId); MessageService.Send(MessageAction.AuditSettingsUpdated); return(settings); }
public TenantAuditSettings SetAuditSettings(TenantAuditSettings settings) { SecurityContext.DemandPermissions(SecutiryConstants.EditPortalSettings); if (settings.LoginHistoryLifeTime <= 0 || settings.LoginHistoryLifeTime > TenantAuditSettings.MaxLifeTime) { throw new ArgumentException("LoginHistoryLifeTime"); } if (settings.AuditTrailLifeTime <= 0 || settings.AuditTrailLifeTime > TenantAuditSettings.MaxLifeTime) { throw new ArgumentException("AuditTrailLifeTime"); } settings.SaveForTenant(TenantProvider.CurrentTenantID); MessageService.Send(Request, MessageAction.AuditSettingsUpdated); return(settings); }
public string CreateLoginHistoryReport() { SecurityContext.DemandPermissions(SecutiryConstants.EditPortalSettings); DemandAuditPermission(); var tenantId = TenantProvider.CurrentTenantID; var settings = TenantAuditSettings.LoadForTenant(tenantId); var to = DateTime.UtcNow; var from = to.Subtract(TimeSpan.FromDays(settings.LoginHistoryLifeTime)); var reportName = string.Format(AuditReportResource.LoginHistoryReportName + ".csv", from.ToShortDateString(), to.ToShortDateString()); var events = LoginEventsRepository.GetByFilter(from: from, to: to); var result = AuditReportCreator.CreateCsvReport(events, reportName); MessageService.Send(Request, MessageAction.LoginHistoryReportDownloaded); return(result); }
private static void DeleteOldEvents(object state) { try { using (var db = DbManager.FromHttpContext(MessagesDbId)) { var activeTenants = CoreContext.TenantManager.GetTenants().Select(t => t.TenantId); foreach (var tenant in activeTenants) { var settings = TenantAuditSettings.LoadForTenant(tenant); DeleteOldEvents(db, LoginEventsTable, tenant, DateTime.UtcNow.Subtract(TimeSpan.FromDays(settings.LoginHistoryLifeTime))); DeleteOldEvents(db, AuditEventsTable, tenant, DateTime.UtcNow.Subtract(TimeSpan.FromDays(settings.AuditTrailLifeTime))); } } } catch (Exception ex) { log4net.LogManager.GetLogger("ASC.Messaging").Error(ex.Message, ex); } }
public string CreateLoginHistoryReport() { SecurityContext.DemandPermissions(SecutiryConstants.EditPortalSettings); var tenantId = TenantProvider.CurrentTenantID; if (!TenantExtra.GetTenantQuota().Audit || !SetupInfo.IsVisibleSettings(ManagementType.LoginHistory.ToString())) { throw new BillingException(Resource.ErrorNotAllowedOption, "Audit"); } var settings = TenantAuditSettings.LoadForTenant(tenantId); var to = DateTime.UtcNow; var from = to.Subtract(TimeSpan.FromDays(settings.LoginHistoryLifeTime)); var reportName = string.Format(AuditReportResource.LoginHistoryReportName + ".csv", from.ToShortDateString(), to.ToShortDateString()); var events = LoginEventsRepository.Get(tenantId, from, to); var result = AuditReportCreator.CreateCsvReport(events, reportName); MessageService.Send(Request, MessageAction.LoginHistoryReportDownloaded); return(result); }
public TenantAuditSettings SetAuditSettings(TenantAuditSettings settings) { if (!TenantExtra.GetTenantQuota().Audit || !SetupInfo.IsVisibleSettings(ManagementType.LoginHistory.ToString())) { throw new BillingException(Resource.ErrorNotAllowedOption, "Audit"); } SecurityContext.DemandPermissions(SecutiryConstants.EditPortalSettings); if (settings.LoginHistoryLifeTime <= 0 || settings.LoginHistoryLifeTime > TenantAuditSettings.MaxLifeTime) { throw new ArgumentException("LoginHistoryLifeTime"); } if (settings.AuditTrailLifeTime <= 0 || settings.AuditTrailLifeTime > TenantAuditSettings.MaxLifeTime) { throw new ArgumentException("AuditTrailLifeTime"); } settings.SaveForTenant(TenantProvider.CurrentTenantID); MessageService.Send(Request, MessageAction.AuditSettingsUpdated); return(settings); }
private static void GetOldEvents(string table, string settings) { var sqlQueryLimit = string.Format("(IFNULL((SELECT JSON_EXTRACT(`Data`, '$.{0}') from webstudio_settings where tt.id = TenantID and id='{1}'), {2})) as tout", settings, TenantAuditSettings.LoadForDefaultTenant().ID, TenantAuditSettings.MaxLifeTime); var query = new SqlQuery(table + " t1") .Select("t1.id") .Select(sqlQueryLimit) .Select("t1.`date` AS dout") .InnerJoin("tenants_tenants tt", Exp.EqColumns("tt.id", "t1.tenant_id")) .Having(Exp.Sql("dout < ADDDATE(UTC_DATE(), INTERVAL -tout DAY)")) .SetMaxResults(1000); List <int> ids; do { using (var dbManager = new DbManager(MessagesDbId, 180000)) { ids = dbManager.ExecuteList(query).ConvertAll(r => Convert.ToInt32(r[0])); if (!ids.Any()) { return; } var deleteQuery = new SqlDelete(table).Where(Exp.In("id", ids)); dbManager.ExecuteNonQuery(deleteQuery); } } while (ids.Any()); }