Beispiel #1
0
        public static void Load(ContainerBuilder builder, ChiffonConfig config)
        {
            Require.NotNull(builder, "builder");
            Require.NotNull(config, "config");

            builder.Register(_ => config).AsSelf().SingleInstance();

            builder.RegisterType <MailMerge>().As <IMailMerge>().InstancePerRequest();
            builder.RegisterType <Messenger>().As <IMessenger>().InstancePerRequest();

            // IMPORTANT: ChiffonEnvironment est entièrement résolue à l'exécution.
            // Cf. aussi les commentaires dans la classe ChiffonContext.
            builder.Register(_ => ChiffonContext.Resolve(HttpContext.Current).Environment).AsSelf().InstancePerRequest();

            builder.RegisterType <SiteMapFactory>().As <ISiteMapFactory>().SingleInstance();
            // FIXME: Pour les HttpHandlers, je n'arrive pas à voir pour le moment pourquoi
            // on ne récupère pas la bonne valeur de ChiffonEnvironment et donc de SiteMap, même
            // en précisant IsReusable = false. Peut-être faut-il utiliser InstancePerHttpRequest()
            // au niveau de RegisterHandlers() dans AspNetMvcModule ?
            // IMPORTANT: ISiteMap est entièrement résolue à l'exécution.
            builder.Register(ResolveSiteMap_).As <ISiteMap>().InstancePerRequest();

            RegisterPersistenceTypes_(builder, config.EnableServerCache);
            RegisterServiceTypes_(builder);
            RegisterAspNetMvcTypes_(builder);
        }
        protected override void ProcessRequestCore(HttpContext context)
        {
            CheckFor.HttpHandlerBase.ProcessRequestCore(context);

            new AuthenticationService(context).SignOut();

            var nextUrl = _siteMapFactory.CreateMap(ChiffonContext.Resolve(HttpContext.Current).Environment).Home().AbsoluteUri;

            context.Response.Redirect(nextUrl);
        }
        // On utilise cet événement car il se déclenche après 'PostAcquireRequestState'
        // qui est utilisé par 'InitializeVSContextModule'.
        private void OnPreRequestHandlerExecute_(object sender, EventArgs e)
        {
            var app = sender as HttpApplication;

            var environment = ChiffonContext.Resolve(app.Context).Environment;

            var language = environment.Language;

            if (!language.IsDefault())
            {
                InitializeCulture_(language.GetCultureInfo(), language.GetUICultureInfo());
            }
        }
Beispiel #4
0
        protected override void ProcessRequestCore(HttpContext context, Maybe <Uri> query)
        {
            CheckFor.HttpHandlerBase.ProcessRequestCore(context, query);

            var environment = ChiffonContext.Resolve(HttpContext.Current).Environment;
            var siteMap     = _siteMapFactory.CreateMap(environment);

            new AuthenticationService(context).SignIn(Member.Anonymous);

            var nextUrl = query.Select(_ => environment.MakeAbsoluteUri(_)).ValueOrElse(siteMap.Home());

            context.Response.Redirect(nextUrl.AbsoluteUri);
        }
Beispiel #5
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            Require.NotNull(filterContext, "filterContext");

            var controller = filterContext.Controller as ChiffonController;

            if (controller == null)
            {
                throw new InvalidOperationException(
                          "The OntologyFilter attribute should only be applied to ChiffonController.");
            }

            var controllerContext = controller.ChiffonControllerContext;
            var ontology          = controllerContext.Ontology;

            if (Disabled)
            {
                controllerContext.LayoutViewModel.DisableOntology = true;
                ontology.Title = Strings.DefaultTitle;
                return;
            }

            // Il semble que "Keywords" soit ignoré par Google, il n'est donc
            // pas nécessaire de travailler cet aspect là.
            ontology.Keywords = Strings.DefaultKeywords;

            ontology.OpenGraph.SiteName = Strings.DefaultTitle;

            // Par défaut, on utilise le logo comme image.
            // QUICKFIX: On veut une URL absolue.
            var environment = ChiffonContext.Resolve(HttpContext.Current).Environment;
            var logoUri     = environment.MakeAbsoluteUri(AssetManager.GetImageUri("logo.png"));

            ontology.OpenGraph.Image = new OpenGraphPng(logoUri)
            {
                Height = 144,
                Width  = 144,
            };

            // Autres langues dans lesquelles la page est disponible.
            //var alternativeLocales = from _ in OpenGraphLocales_.Value
            //                         where _ != ontology.OpenGraph.Locale
            //                         select _;
            //ontology.OpenGraph.AddAlternativeLocales(alternativeLocales);
        }
        protected override void ProcessRequestCore(HttpContext context, LogOnQuery query)
        {
            CheckFor.HttpHandlerBase.ProcessRequestCore(context, query);

            var environment = ChiffonContext.Resolve(HttpContext.Current).Environment;
            var siteMap     = _siteMapFactory.CreateMap(environment);

            var member = _memberService
                         .MayLogOn(query.Email, query.Password);

            member.OnSome(_ => new AuthenticationService(context).SignIn(_));

            var nextUrl = member
                          .Select(_ => GetNextUri_(query.TargetUrl, siteMap, environment))
                          .ValueOrElse(GetLoginUri_(query.TargetUrl, siteMap));

            context.Response.Redirect(nextUrl.AbsoluteUri);
        }