示例#1
0
        private static void CheckRoles(List <ValidationFailures> failures, List <string> messages, RoleRequiredAttribute requiredRoles, IHttpContext context)
        {
            IUserResolver userResolver = (IUserResolver)ServiceProxySystem.UserResolvers.Clone();
            IRoleResolver roleResolver = (IRoleResolver)ServiceProxySystem.RoleResolvers.Clone();

            userResolver.HttpContext = context;
            roleResolver.HttpContext = context;
            List <string> userRoles = new List <string>(roleResolver.GetRoles(userResolver));
            bool          passed    = false;

            for (int i = 0; i < requiredRoles.Roles.Length; i++)
            {
                string requiredRole = requiredRoles.Roles[i];
                if (userRoles.Contains(requiredRole))
                {
                    passed = true;
                    break;
                }
            }

            if (!passed)
            {
                failures.Add(ServiceProxy.ValidationFailures.PermissionDenied);
                messages.Add("Permission Denied");
            }
        }
        }                                       // to enable auto proxy gen

        public CoreUserRegistryService(IDatabaseProvider dbProvider, IUserManager wrapped, IApplicationNameProvider appNameProvider, IUserResolver userResolver, IRoleResolver roleResolver)
        {
            DatabaseProvider        = dbProvider;
            UserManager             = wrapped;
            ApplicationNameProvider = appNameProvider;
            UserResolver            = userResolver;
            RoleResolver            = roleResolver;
            dbProvider.SetDatabases(this);
            dbProvider.SetDatabases(UserManager);
            dbProvider.SetDatabases(ApplicationNameProvider);
            WireUserManagementEvents();
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="resolver"></param>
 /// <param name="identity"></param>
 /// <param name="roleexpression"></param>
 /// <returns></returns>
 public bool Evaluate(IRoleResolver resolver, IIdentity identity, string roleexpression) {
     if (-1!=roleexpression.IndexOf(',')) {
         return EvaluateOrList(resolver,identity, roleexpression.SmartSplit(false, true, ','));
     }
     if (-1 != roleexpression.IndexOf('+')) {
         return EvaluateAndList(resolver,identity, roleexpression.SmartSplit(false, true, '+'));
     }
     if (-1 != roleexpression.IndexOfAny(new[] {' ', '&', '|', '(', ')'})) {
         return EvaluateFormula(resolver,identity, roleexpression);
     }
     if (roleexpression[0] == '!' || roleexpression[0] == '-') {
         return !resolver.IsInRole(identity, roleexpression.Substring(1));
     }
     return resolver.IsInRole(identity,roleexpression);
 }
示例#4
0
		public ThemaFactory(
			IThemaLoader loader = null,
			IRoleResolver roleresolver = null,
			IFileNameResolver fileresolver = null,
			ITypeLocator locator = null,
			IEntityResolver entityResolver = null,
			ILogListener log = null,
			IPeriodProvider periodprovider = null) {
			Themas = new ThemaCollection {Factory = this};
			RoleResolver = roleresolver ?? QWebServiceRegistry.Default.RoleResolver;
			FileResolver = fileresolver ?? QWebServiceRegistry.Default.FileNameResolver;
			TypeLocator = locator ?? QWebServiceRegistry.Default.TypeLocator;
			PeriodProvider = periodprovider ?? TypeLocator.Get<IPeriodProvider>().create<IPeriodProvider>();
			EntityResolver = entityResolver ?? TypeLocator.Get<IEntityResolver>().create<IEntityResolver>();
			Sources = new List<IThemaSource>();
			Log = log ?? QWebServiceRegistry.Default.Log;
			Loader = loader ?? new Loader(this);
		}
 /// <summary>
 ///
 /// </summary>
 /// <param name="resolver"></param>
 /// <param name="identity"></param>
 /// <param name="roleexpression"></param>
 /// <returns></returns>
 public bool Evaluate(IRoleResolver resolver, IIdentity identity, string roleexpression)
 {
     if (-1 != roleexpression.IndexOf(','))
     {
         return(EvaluateOrList(resolver, identity, roleexpression.SmartSplit(false, true, ',')));
     }
     if (-1 != roleexpression.IndexOf('+'))
     {
         return(EvaluateAndList(resolver, identity, roleexpression.SmartSplit(false, true, '+')));
     }
     if (-1 != roleexpression.IndexOfAny(new[] { ' ', '&', '|', '(', ')' }))
     {
         return(EvaluateFormula(resolver, identity, roleexpression));
     }
     if (roleexpression[0] == '!' || roleexpression[0] == '-')
     {
         return(!resolver.IsInRole(identity, roleexpression.Substring(1)));
     }
     return(resolver.IsInRole(identity, roleexpression));
 }
示例#6
0
 public void RemoveExtension(IRoleResolver extension)
 {
     throw new System.NotImplementedException();
 }
示例#7
0
	    public void RemoveExtension(IRoleResolver extension) {
	        throw new System.NotImplementedException();
	    }
 /// <summary>
 /// Public constructor
 /// </summary>
 /// <param name="outer">Outer resolver - evaluates second</param>
 /// <param name="inner">Inner resolver - evaluates first</param>
 public LinkedRoleResolver(IRoleResolver outer, IRoleResolver inner)
 {
     this._outer = outer;
     this._inner = inner;
 }
 private bool EvaluateOrList(IRoleResolver resolver, IIdentity identity, IList<string> roles)
 {
     return roles.Any(role => Evaluate(resolver,identity, role));
 }
 private bool EvaluateFormula(IRoleResolver resolver,IIdentity identity, string roleexpression) {
     return _e.Eval(roleexpression, new RoleTermSource(this, resolver, identity));
 }
 public RoleTermSource(IRoleExpressionEvaluator eval, IRoleResolver resolver, IIdentity identity) {
     _eval = eval;
     _resolver = resolver;
     _identity = identity;
 }
 private bool EvaluateOrList(IRoleResolver resolver, IIdentity identity, IList <string> roles)
 {
     return(roles.Any(role => Evaluate(resolver, identity, role)));
 }
 private bool EvaluateFormula(IRoleResolver resolver, IIdentity identity, string roleexpression)
 {
     return(_e.Eval(roleexpression, new RoleTermSource(this, resolver, identity)));
 }
 public RoleTermSource(IRoleExpressionEvaluator eval, IRoleResolver resolver, IIdentity identity)
 {
     _eval     = eval;
     _resolver = resolver;
     _identity = identity;
 }