public static void SetCreationAuditProperties( IMultiTenancyConfig multiTenancyConfig, object entityAsObj, int?tenantId, long?userId) { var entityWithCreationTime = entityAsObj as IHasCreationTime; if (entityWithCreationTime == null) { //Object does not implement IHasCreationTime return; } if (entityWithCreationTime.CreationTime == default(DateTime)) { AbpDebug.WriteLine($"Clock.Provider:{Clock.Provider}"); entityWithCreationTime.CreationTime = Clock.Now; } if (!(entityAsObj is ICreationAudited)) { //Object does not implement ICreationAudited return; } if (!userId.HasValue) { //Unknown user return; } var entity = entityAsObj as ICreationAudited; if (entity.CreatorUserId != null) { //CreatorUserId is already set return; } if (multiTenancyConfig?.IsEnabled == true) { if (MultiTenancyHelper.IsMultiTenantEntity(entity) && !MultiTenancyHelper.IsTenantEntity(entity, tenantId)) { //A tenant entitiy is created by host or a different tenant return; } if (tenantId.HasValue && MultiTenancyHelper.IsHostEntity(entity)) { //Tenant user created a host entity return; } } //Finally, set CreatorUserId! entity.CreatorUserId = userId; }
public static void SetCreationAuditProperties( object entityAsObj, string tenantName, string user) { var entityWithCreationTime = entityAsObj as IHasCreationTime; if (entityWithCreationTime == null) { //Object does not implement IHasCreationTime return; } if (entityWithCreationTime.CreationTime == default(DateTime)) { entityWithCreationTime.CreationTime = Clock.Now; } if (!(entityAsObj is ICreationAudited)) { //Object does not implement ICreationAudited return; } if (user.IsNullOrWhiteSpace()) { //Unknown user return; } var entity = entityAsObj as ICreationAudited; if (entity.Creator != null) { //CreatorUserId is already set return; } if (MultiTenancyConfig.IsEnabled) { if (MultiTenancyHelper.IsMultiTenantEntity(entity) && !MultiTenancyHelper.IsTenantEntity(entity, tenantName)) { //A tenant entitiy is created by host or a different tenant return; } if (!tenantName.IsNullOrWhiteSpace() && MultiTenancyHelper.IsHostEntity(entity)) { //Tenant user created a host entity return; } } //Finally, set Creator! entity.Creator = user; }
public static string GetHardDeleteKey(object entity, long?tenantId) { if (MultiTenancyHelper.IsMultiTenantEntity(entity)) { var tenantIdString = tenantId.HasValue ? tenantId.ToString() : "null"; return(entity.GetType().FullName + ";TenantId=" + tenantIdString + ";Id=" + GetEntityId(entity)); } return(entity.GetType().FullName + ";Id=" + GetEntityId(entity)); }
/// <summary> /// 获取硬删除键 /// </summary> /// <param name="entity"></param> /// <param name="tenantName"></param> /// <returns></returns> public static string GetHardDeleteKey(object entity, string tenantName) { if (MultiTenancyHelper.IsMultiTenantEntity(entity)) { var tenantIdString = string.IsNullOrWhiteSpace(tenantName) ? tenantName : "null"; return(entity.GetType().FullName + ";TenantId=" + tenantIdString + ";Id=" + GetEntityId(entity)); } return(entity.GetType().FullName + ";Id=" + GetEntityId(entity)); }
public static void SetModificationAuditProperties( IMultiTenancyConfig multiTenancyConfig, object entityAsObj, int?tenantId, long?userId, IReadOnlyList <AuditFieldConfiguration> auditFields) { if (entityAsObj is IHasModificationTime) { entityAsObj.As <IHasModificationTime>().LastModificationTime = Clock.Now; } if (!(entityAsObj is IModificationAudited)) { //Entity does not implement IModificationAudited return; } var entity = entityAsObj.As <IModificationAudited>(); if (userId == null) { //Unknown user entity.LastModifierUserId = null; return; } if (multiTenancyConfig?.IsEnabled == true) { if (MultiTenancyHelper.IsMultiTenantEntity(entity) && !MultiTenancyHelper.IsTenantEntity(entity, tenantId)) { //A tenant entitiy is modified by host or a different tenant entity.LastModifierUserId = null; return; } if (tenantId.HasValue && MultiTenancyHelper.IsHostEntity(entity)) { //Tenant user modified a host entity entity.LastModifierUserId = null; return; } } var lastModifierUserIdFilter = auditFields?.FirstOrDefault(e => e.FieldName == AbpAuditFields.LastModifierUserId); if (lastModifierUserIdFilter != null && !lastModifierUserIdFilter.IsSavingEnabled) { return; } //Finally, set LastModifierUserId! entity.LastModifierUserId = userId; }
private static MultiTenancyContext ConstruirContext() { string connectionString = MultiTenancyHelper.RecuperarStringConexao(); string nomeUsuarioAutenticado = AutenticacaoHelper.RecuperarUsuarioAutenticado(); if (!string.IsNullOrEmpty(connectionString)) { return(new MultiTenancyContext(connectionString, nomeUsuarioAutenticado)); } return(null); }
protected override void OnActionExecuting(ActionExecutingContext filterContext) { var currentTenant = string.Empty; if (Request.Url != null) { currentTenant = MultiTenancyHelper.GetCurrentTenancyName(Request.Url.AbsoluteUri); } Session[TenancyKey] = currentTenant; base.OnActionExecuting(filterContext); }
public override void OnActionExecuting(HttpActionContext actionContext) { bool possuiCliente = MultiTenancyHelper.PossuiCliente(); if ((possuiCliente && !this.MultiTenancyNecessario) || (!possuiCliente && this.MultiTenancyNecessario)) { actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized); actionContext.Response.Content = new StringContent("{\"Erro\": \"Você não tem permissão de acessar este serviço!\"}"); actionContext.Response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); } base.OnActionExecuting(actionContext); }
public static void SetModificationAuditProperties( IMultiTenancyConfig multiTenancyConfig, object entityAsObj, long?tenantId, long?userId) { if (entityAsObj is IHasModificationTime) { entityAsObj.As <IHasModificationTime>().LastModificationTime = Clock.Now; } if (!(entityAsObj is IModificationAudited)) { //Entity does not implement IModificationAudited return; } var entity = entityAsObj.As <IModificationAudited>(); if (userId == null) { //Unknown user entity.LastModifierUserId = null; return; } if (multiTenancyConfig?.IsEnabled == true) { if (MultiTenancyHelper.IsMultiTenantEntity(entity) && !MultiTenancyHelper.IsTenantEntity(entity, tenantId)) { //A tenant entitiy is modified by host or a different tenant entity.LastModifierUserId = null; return; } if (tenantId.HasValue && MultiTenancyHelper.IsHostEntity(entity)) { //Tenant user modified a host entity entity.LastModifierUserId = null; return; } } //Finally, set LastModifierUserId! entity.LastModifierUserId = userId; }
public static void SetModificationAuditProperties( object entityAsObj, string tenantName, string user) { if (entityAsObj is IHasModificationTime) { entityAsObj.As <IHasModificationTime>().LastModificationTime = Clock.Now; } if (!(entityAsObj is IModificationAudited)) { //Entity does not implement IModificationAudited return; } var entity = entityAsObj.As <IModificationAudited>(); if (user.IsNullOrWhiteSpace()) { //Unknown user entity.LastModifier = null; return; } if (MultiTenancyConfig.IsEnabled) { if (MultiTenancyHelper.IsMultiTenantEntity(entity) && !MultiTenancyHelper.IsTenantEntity(entity, tenantName)) { //A tenant entitiy is modified by host or a different tenant entity.LastModifier = null; return; } if (!tenantName.IsNullOrWhiteSpace() && MultiTenancyHelper.IsHostEntity(entity)) { //Tenant user modified a host entity entity.LastModifier = null; return; } } //Finally, set LastModifier! entity.LastModifier = user; }
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); Mapper.Initialize(cfg => { cfg.SourceMemberNamingConvention = new LowerUnderscoreNamingConvention(); cfg.DestinationMemberNamingConvention = new PascalCaseNamingConvention(); cfg.CreateMissingTypeMaps = true; }); MultiTenancyHelper multiTenancy = DependencyResolver.Current.GetService <MultiTenancyHelper>(); multiTenancy.CarregarClientesCadastrados(); }
public override void OnActionExecuting(ActionExecutingContext filterContext) { bool possuiCliente = MultiTenancyHelper.PossuiCliente(); if ((possuiCliente && !this.MultiTenancyNecessario) || (!possuiCliente && this.MultiTenancyNecessario)) { filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary { { "area", "" }, { "controller", "Acesso" }, { "action", "AcessoNegado" }, { "mensagem", "Você não tem permissão de acessar esta página!" } }); } base.OnActionExecuting(filterContext); }
protected void Application_PreRequestHandlerExecute() { if (!this.Request.Url.ToString().Contains("Acesso/AcessoNegado")) { try { MultiTenancyHelper.CarregarConfiguracaoCliente(); } catch (Exception ex) { this.Response.RedirectToRoute("Default", new RouteValueDictionary { { "area", "" }, { "controller", "Acesso" }, { "action", "AcessoNegado" }, { "mensagem", ex.Message } }); } } }
public static void SetCreationAuditProperties( IMultiTenancyConfig multiTenancyConfig, object entityAsObj, int?tenantId, long?userId, IReadOnlyList <AuditFieldConfiguration> auditFields) { var entityWithCreationTime = entityAsObj as IHasCreationTime; if (entityWithCreationTime == null) { //Object does not implement IHasCreationTime return; } if (entityWithCreationTime.CreationTime == default) { entityWithCreationTime.CreationTime = Clock.Now; } if (!(entityAsObj is ICreationAudited)) { //Object does not implement ICreationAudited return; } if (!userId.HasValue) { //Unknown user return; } var entity = entityAsObj as ICreationAudited; if (entity.CreatorUserId != null) { //CreatorUserId is already set return; } if (multiTenancyConfig?.IsEnabled == true) { if (MultiTenancyHelper.IsMultiTenantEntity(entity) && !MultiTenancyHelper.IsTenantEntity(entity, tenantId)) { //A tenant entity is created by host or a different tenant return; } if (tenantId.HasValue && MultiTenancyHelper.IsHostEntity(entity)) { //Tenant user created a host entity return; } } var creationUserIdFilter = auditFields?.FirstOrDefault(e => e.FieldName == AbpAuditFields.CreationUserId); if (creationUserIdFilter != null && !creationUserIdFilter.IsSavingEnabled) { return; } //Finally, set CreatorUserId! entity.CreatorUserId = userId; }