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);
        }
Beispiel #2
0
        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);
        }