public void OnBefore(BeforeMethodArgs beforeMethodArgs)
        {
            IHttpContextAccessor _httpContextAccessor = InstanceFactory.GetInstance <IHttpContextAccessor>();;

            if (string.IsNullOrWhiteSpace(Roles))
            {
                throw new Exception("Invalid roles");
            }

            var  roles       = Roles.Split(",");
            bool isAuthorize = false;

            var roleClaims = _httpContextAccessor.HttpContext.User.ClaimRoles();

            foreach (var role in roles)
            {
                if (roleClaims.Contains(role))
                {
                    isAuthorize = true;
                    break;
                }
            }

            if (isAuthorize == false)
            {
                throw new SecurityException("You are not authorized");
            }
        }
        public void OnBefore(BeforeMethodArgs beforeMethodArgs)
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];

            var entities = beforeMethodArgs.Arguments.Where(_ => _.GetType() == entityType);

            foreach (var entity in entities)
            {
                ValidatorTool.FluentValidate(validator, entity);
            }
        }
        public void OnBefore(BeforeMethodArgs beforeMethodArgs)
        {
            LogMethodParameter logMethodParameter = null;

            ParameterInfo[]           parameterInfos = beforeMethodArgs.MethodInfo.GetParameters();
            List <LogDetailParameter> logParameters  = new List <LogDetailParameter>();

            for (int i = 0; i < beforeMethodArgs.Arguments.Length; i++)
            {
                if (beforeMethodArgs.Arguments[i] != null)
                {
                    var parameter = beforeMethodArgs.Arguments[i].GetType().BaseType.BaseType == typeof(System.Linq.Expressions.LambdaExpression)
                    ? beforeMethodArgs.Arguments[i].ToString()
                    : beforeMethodArgs.Arguments[i];

                    logParameters.Add(new LogDetailParameter
                    {
                        Name  = parameterInfos[i].Name,
                        Type  = parameterInfos[i].ParameterType.Name,
                        Value = parameter
                    });
                }
                else
                {
                    logParameters.Add(new LogDetailParameter
                    {
                        Name  = parameterInfos[i].Name,
                        Type  = parameterInfos[i].ParameterType.Name,
                        Value = null
                    });
                }
            }

            LogDetail logDetail = new LogDetail
            {
                MethodCallDate = DateTime.Now,
                ClassName      = beforeMethodArgs.MethodInfo.DeclaringType.FullName,
                MethodName     = beforeMethodArgs.MethodInfo.Name,
                Parameters     = logParameters
            };


            logMethodParameter = new LogMethodParameter()
            {
                LogName   = beforeMethodArgs.MethodInfo.Name,
                LogDetail = logDetail
            };

            _logger.Log(logMethodParameter);
        }
Ejemplo n.º 4
0
        private object RunOnBeforeInterception(object[] aspects, BeforeMethodArgs beforeMethodArgs)
        {
            object response = null;

            foreach (IInterception loopAttribute in aspects)
            {
                if (loopAttribute is IBeforeVoidInterception)
                {
                    ((IBeforeVoidInterception)loopAttribute).OnBefore(beforeMethodArgs);
                }
                else if (loopAttribute is IBeforeInterception)
                {
                    response = ((IBeforeInterception)loopAttribute).OnBefore(beforeMethodArgs);
                }
            }
            return(response);
        }
Ejemplo n.º 5
0
        protected override object Invoke(MethodInfo targetMethod, object[] args)
        {
            object[]         interceptions    = null;
            InterceptionArgs interceptionArgs = null;

            try
            {
                interceptionArgs = CreateAspectArgs(targetMethod, args);
                interceptions    = GetInterceptions(targetMethod);

                // BeforeMethodArgs çalıştırılır. Cache vb. gelen datalar result değişkenine aktarılır
                BeforeMethodArgs beforeMethodArgs = new BeforeMethodArgs(interceptionArgs);
                object           result           = RunOnBeforeInterception(interceptions, beforeMethodArgs);
                //result dolu ise ilgili methodun çalışmasına gerek yoktur

                if (result == null)
                {
                    //result null ise ilgili method çalıştırılır.
                    result = targetMethod.Invoke(_service, args);
                }

                //After İnterceptionlar çalıştırılır
                AfterMethodArgs afterMethodArgs = new AfterMethodArgs(interceptionArgs);
                RunOnAfterInterception(interceptions, new AfterMethodArgs(afterMethodArgs, result));
                //RunOnAfterInterception(interceptions, new AfterMethodArgs(interceptionArgs, result));

                return(result);
            }
            catch (Exception ex)
            {
                var exArg = new ExceptionMethodArgs(interceptionArgs, ex);
                RunOnExceptionInterception(interceptions, exArg);
                throw ex.InnerException ?? ex;
                //return null;
            }
            //catch (Exception ex) when (ex is TargetInvocationException)
            //{

            //    var exArg = new ExceptionMethodArgs(e,ex);
            //    RunOnExceptionInterception(interceptions, exArg);
            //    //throw ex.InnerException ?? ex;
            //    return null;
            //}
        }
Ejemplo n.º 6
0
        public object OnBefore(BeforeMethodArgs beforeMethodArgs)
        {
            string key = $"{beforeMethodArgs.MethodInfo.DeclaringType.FullName}.{beforeMethodArgs.MethodInfo.Name}";

            object data = null;

            if (_cacheManager.IsExist(key))
            {
                var cacheData = _cacheManager.Get <object>(key);
                if (cacheData == null)
                {
                    _cacheManager.Remove(key);
                    return(null);
                }
                data = JsonConvert.DeserializeObject(cacheData.ToString(), _returnType);
            }

            return(data);
        }
        public void OnBefore(BeforeMethodArgs beforeMethodArgs)
        {
            if (string.IsNullOrWhiteSpace(Roles))
            {
                throw new Exception("Invalid roles");
            }

            var  roles       = Roles.Split(",");
            bool isAuthorize = false;

            foreach (var role in roles)
            {
                if (Thread.CurrentPrincipal.IsInRole(role))
                {
                    isAuthorize = true;
                    break;
                }
            }

            if (isAuthorize == false)
            {
                throw new SecurityException("You are not authorized");
            }
        }