private static int ClearUnusedRoleActions(IRoleStorageProvider provider, IAuthorizationValidator validator)
        {
            int ret = 0;

            if (null != provider && null != validator)
            {
                ret += provider.ClearNonExistRecords();
                validator.RefreshStorageAndCachedData();
            }
            return(ret);
        }
Exemple #2
0
        /// <inheritdoc />
        public DynamicApi(IContainer container)
        {
            _configurations = container.Resolve <DynamicApiConfigurations>();

            _dateTimeConverter = new IsoDateTimeConverter
            {
                DateTimeFormat = _configurations.DateTimeFormat
            };
            _jsonSerializer = new JsonSerializerSettings
            {
                DateFormatString = _configurations.DateTimeFormat
            };
            _pagesProvider           = new PagesProvider();
            _cache                   = new ApiActionsCache();
            _parser                  = new DynamicApiParametersParser(_dateTimeConverter);
            _authorizationValidator  = _configurations.AuthorizationValidator;
            _repositoryActionLoactor = new RepositoryActionLoactor();

            if (container.IsRegistered <DynamicApiControllersManager>())
            {
                _controllersManager = container.Resolve <DynamicApiControllersManager>();
            }

            if (container.IsRegistered <IRepositoryManager>())
            {
                _repositoryManager = container.Resolve <IRepositoryManager>();
            }

            if (container.IsRegistered <ILogger>())
            {
                var logger = container.Resolve <ILogger>();
                if (logger is LogAggregator logAggregator)
                {
                    _logger = logAggregator;
                }
            }
            else
            {
                _logger = new LogAggregator();
            }
        }
        ////Veriler Silinmeyecek sadece upsert edilecek.Ek olarak kullanılmayan Kısımlar elbete IRoleStorage ile ueniden silinebilir. Yani mesela fk ile refere edilmeyenler.
        private static int SaveActionRoles(IRoleStorageProvider provider, IEnumerable <RoleControllerActionEntity> uiEntityList, IAuthorizationValidator validator)//validator for refresh
        {
            int ret = 0;

            if (null != provider && !uiEntityList.IsEmptyList())
            {
                ret = provider.Save(uiEntityList);
                validator.RefreshStorageAndCachedData();
            }
            return(ret);
        }
        private bool AuthorizeAccessAndImpersonateIfNecessary (IEnumerable<ServiceIdentity> identities, IAuthorizationValidator validator, WorkflowState currentState, Guid instanceId)
        {
            var identity = AuthenticationService.GetCurrentIdentity();

            if (validator.IsCurrentUserAllowedToExecuteCommandInCurrentState(identity, currentState, instanceId))
                return true;

            //var deputyId = GetSuitableDeputyId(validator, identity.Id, currentState, instanceId);

            //if (!deputyId.HasValue)
            //    return false;

            //return identity.TryImpersonate(deputyId.Value);

            foreach (var impersonated in identities)
            {
                if (validator.IsCurrentUserAllowedToExecuteCommandInCurrentState(impersonated, currentState, instanceId))
                    return identity.TryImpersonate(impersonated.Id);
            }

            return false;
        }
        private bool AuthorizeAccessAndImpersonateIfNecessary(IEnumerable <ServiceIdentity> identities, IAuthorizationValidator validator, WorkflowState currentState, Guid instanceId)
        {
            var identity = AuthenticationService.GetCurrentIdentity();

            if (validator.IsCurrentUserAllowedToExecuteCommandInCurrentState(identity, currentState, instanceId))
            {
                return(true);
            }

            //var deputyId = GetSuitableDeputyId(validator, identity.Id, currentState, instanceId);

            //if (!deputyId.HasValue)
            //    return false;

            //return identity.TryImpersonate(deputyId.Value);

            foreach (var impersonated in identities)
            {
                if (validator.IsCurrentUserAllowedToExecuteCommandInCurrentState(impersonated, currentState, instanceId))
                {
                    return(identity.TryImpersonate(impersonated.Id));
                }
            }

            return(false);
        }