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); }
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)); }
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))); }