internal bool InitRoleEntity() { if (_IsFailure) { return(false); } if (RoleEntity != null) { return(true); } RouteData routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current)); EntityRoute route = routeData.Route as EntityRoute; if (route == null) { _IsFailure = true; return(false); } RoleEntity = Resolve(route.UserType, Identity.Name); if (RoleEntity == null) { _IsFailure = true; return(false); } return(true); }
public static Route MapRoute <TUser>(this RouteCollection routes, string name, string url, object defaults, object constraints, string[] namespaces) where TUser : class, IRoleEntity, new() { if (routes == null) { throw new ArgumentNullException("routes"); } if (url == null) { throw new ArgumentNullException("url"); } EntityRoute route = new EntityRoute(url, new MvcRouteHandler()) { Defaults = CreateRouteValueDictionaryUncached(defaults), Constraints = CreateRouteValueDictionaryUncached(constraints), DataTokens = new RouteValueDictionary(), UserType = typeof(TUser) }; Contract.Assert(route != null); Contract.Assert(route.Url != null); if (route.Constraints != null) { foreach (var kvp in route.Constraints) { if (kvp.Value is string) { continue; } if (kvp.Value is IRouteConstraint) { continue; } throw new InvalidOperationException(); } } if ((namespaces != null) && (namespaces.Length > 0)) { route.DataTokens["Namespaces"] = namespaces; } routes.Add(name, route); return(route); }