Example #1
0
        /// <summary>
        /// Validate the data in the specified entity framework context.
        /// </summary>
        public bool Validate(AppPrincipal contextPrincipal, AppContextBase appContext, T dataContext, IList <ErrorResult> errors)
        {
            bool result = true;

            if (this.CanValidateUsingDataAnnotations)
            {
                foreach (object entity in dataContext.GetChanges())
                {
                    var validatationContext      = new ValidationContext(entity, serviceProvider: null, items: null);
                    var volidationContextResults = new List <ValidationResult>();

                    result = Validator.TryValidateObject(entity, validatationContext, volidationContextResults, true);

                    foreach (ValidationResult error in volidationContextResults)
                    {
                        errors.Add(new ErrorResult(ErrorResultKind.Validation, error.ErrorMessage));
                    }
                }
            }

            foreach (Validation validation in this.Validations)
            {
                foreach (object entity in dataContext.GetChanges(validation.Type))
                {
                    if (!validation.Validate(contextPrincipal, appContext, dataContext.Data, entity, errors))
                    {
                        result = false;
                    }
                }
            }

            return(result);
        }
        /// <summary>
        /// Initializes the data context and creates the EF DbContext instance.
        /// </summary>
        public override void InitializeDataContext(AppContextBase appContext)
        {
            this.AppContext = appContext;

            bool?enableLazyLoading   = this.AppContext.Options.ContainsKey("EF_EnableLazyLoading") ? (bool?)this.AppContext.Options["EF_EnableLazyLoading"] : null;
            bool?enableProxyCreation = this.AppContext.Options.ContainsKey("EF_EnableProxyCreation") ? (bool?)this.AppContext.Options["EF_EnableProxyCreation"] : null;
            IEntityDataValidator <EntityDataContext <TDbContext>, TDbContext> validator = this.AppContext.Options.ContainsKey("EF_EntityAppValidator") ? (IEntityDataValidator <EntityDataContext <TDbContext>, TDbContext>) this.AppContext.Options["EF_EntityAppValidator"] : DefaultValidator;

            this.Data = new TDbContext();

            if (enableLazyLoading.HasValue)
            {
                this.Data.Configuration.LazyLoadingEnabled = enableLazyLoading.Value;
            }
            if (enableProxyCreation.HasValue)
            {
                this.Data.Configuration.ProxyCreationEnabled = enableProxyCreation.Value;
            }

            _validator = validator;

            IAppContextAware appContextAwareDataContext = this.Data as IAppContextAware;

            if (appContextAwareDataContext != null)
            {
                appContextAwareDataContext.InitializeFromAppContext(appContext);
            }
        }
Example #3
0
        /// <summary>
        /// Check changed entities and assert authorizations.
        /// </summary>
        public void AssertAuthorizations(AppPrincipal contextPrincipal, AppContextBase appContext, T dataContext)
        {
            foreach (Authorization authorization in this.Authorizations)
            {
                foreach (object entity in dataContext.GetChanges(authorization.Type))
                {
                    appContext.AssertAuthorization(authorization.Authorize(contextPrincipal, appContext, dataContext.Data, entity));
                }
            }

            foreach (Type type in this.ReadOnlyTypes)
            {
                appContext.AssertAuthorization(!dataContext.GetChanges(type).Any());
            }
        }
Example #4
0
        /// <summary>
        /// Audit changes in the specified entity framework context.
        /// </summary>
        public void Audit(AppPrincipal contextPrincipal, AppContextBase appContext, T dataContext)
        {
            try
            {
                ItemIdentifier userIdentifier = new ItemIdentifier(contextPrincipal.UserInfo.Id, contextPrincipal.UserInfo.Oid, contextPrincipal.UserInfo.UserName);

                appContext.AuditLogger.LogActions(AppAuditAction.Delete, 0, userIdentifier, this.AuditTypes, dataContext.GetLastDeleted(), null);
                appContext.AuditLogger.LogActions(AppAuditAction.Add, 0, userIdentifier, this.AuditTypes, dataContext.GetLastAdded(), null);
                appContext.AuditLogger.LogActions(AppAuditAction.Modify, 0, userIdentifier, this.AuditTypes, dataContext.GetLastModified(), null);
            }
            catch (Exception ex)
            {
                appContext.ErrorLogger.LogError(ex, "Could not complete logging of audit actions.", 0, 0, contextPrincipal.UserInfo.Id, contextPrincipal.UserInfo.Oid, contextPrincipal.UserInfo.UserName);
                throw;
            }
        }
Example #5
0
 public override Task <bool> Init(AppContextBase context)
 {
     context.Service.AddScoped <ITClass, TOneClass>();
     return(base.Init(context));
 }
Example #6
0
 public virtual Task <bool> Stop(AppContextBase context)
 {
     return(Task.FromResult(true));
 }
Example #7
0
 /// <summary>
 /// Initializes the wcf service context and create proxy instance.
 /// </summary>
 public override void InitializeDataContext(AppContextBase appContext)
 {
     this.AppContext = appContext;
     this.Data       = new TClient();
 }