예제 #1
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, UserManager <MyMeetupUser> userManager,
                              RoleManager <MyMeetupRole> roleManager, MyMeetupContext context)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
            }
            else
            {
                //   app.UseDeveloperExceptionPage();
                //  app.UseDatabaseErrorPage();
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }
            // app.UseDeveloperExceptionPage();
            var supportedCultures = new List <CultureInfo>
            {
                new CultureInfo("fr"),
                new CultureInfo("fr-FR"),
                //new CultureInfo("en"),
                //new CultureInfo("en-US")
            };

            var localizationOptions = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture("fr-FR"),
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures
            };

            app.UseRequestLocalization(localizationOptions);
            app.UseElmah();
            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseCookiePolicy();

            context.Database.Migrate();
            app.UseAuthentication();
            Seeding.SeedRoles(roleManager);
            Seeding.SeedUsers(userManager);
            Seeding.SeedData(context);

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "areas",
                    template: "{area:exists}/{controller=Home}/{action=Index}"
                    );
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }
예제 #2
0
 public static void SeedData(MyMeetupContext context)
 {
     if (context.AppParameters.Any() == false)
     {
         AppParameter ap = new AppParameter {
             Title = "MyMeetup"
         };
         context.AppParameters.Add(ap);
         context.SaveChanges();
     }
     SeedMeetupData(context);
 }
예제 #3
0
        public static void SeedMeetupData(MyMeetupContext context)
        {
            if (context.Meetups.Any())
            {
                return;
            }
            Meetup m = new Meetup
            {
                Title                 = "Ce meetup 2018",
                StartDate             = new DateTime(2018, 10, 22),
                EndDate               = new DateTime(2018, 10, 29),
                IsVisible             = true,
                OpenForRegistrationOn = new DateTime(2018, 2, 1),
                PublicDescription     = "Situé dans un écrin de forêt, les hébergements se répartissent entre gîtes, landettes, emplacements pour tentes et camions, et quelques yourtes.<br/>"
                                        + @"<div>
<h2><u>Comment s'inscrire &agrave; la rencontre ?</u></h2>
</div>
<div>Ne peuvent s'inscrire &agrave; cette rencontre que les personnes qui s'engagent &agrave; respecter la charte mise en place.</div>
<div><strong>Proc&eacute;dure&nbsp;</strong>:</div>
<div>1. Vous lisez l'engagement que vous demande la charte</div>
<div>2. Si la charte vous convient : vous vous engagez &agrave; la respecter en la validant, la signant num&eacute;riquement et en nous donnant vos coordonn&eacute;es : le tout nous sera adress&eacute; directement.</div>",
                RegisteredDescription = "<div><strong>Toutes les inscriptions (locatif ou camping) doivent se faire uniquement par mail <div><strong>"
            };

            context.Meetups.Add(m);
            context.SaveChanges();
            List <CharterContent> chartes = new List <CharterContent>
            {
                new CharterContent
                {
                    Category = "Communication sur le respect des lieux",
                    Content  =
                        "Chaque membre de votre famille, présent à la rencontre, doit être informé que le respect des lieux est important pour que nous puissions revenir. Aussi merci de nous prévenir en cas d’éventuels dégâts pour montrer aux gérants notre implication dans la remise en état des lieux.",
                    Position = 1
                },
                new CharterContent
                {
                    Category = "Animaux",
                    Content  =
                        "Les chiens sont tolérés, à condition qu'ils restent attachés ou auprès de vous en permanence.<br/>Ils ne doivent également pas être bruyants.",
                    Position = 3
                },
                new CharterContent
                {
                    Category = "Participation financière",
                    Content  =
                        " Chaque famille participante devra régler 3€ de participation à Rencontres Nonscos : ces paiements permettront à l'association de couvrir ses dépenses d'existence (assurance notamment)",
                    Position = 2
                },
                new CharterContent
                {
                    Category = "Alcool",
                    Content  =
                        "La consommation d’alcool doit être raisonnée, pour toutes les personnes participantes, quel que soit leur âge, et bien sûr, les parents ou les référents sont invités à être attentifs à cette problématique vis-à-vis des personnes dont ils sont responsables.",
                    Position = 4
                },
                new CharterContent
                {
                    Category = "Spécifique à ce meetup",
                    Content  =
                        "La tradition est née de faire des trous autour du barbecue, il est important de les reboucher au départ des enfants",

                    Position = 1
                }
            };
            int id = 1;

            foreach (var charte in chartes)
            {
                charte.MeetupId = m.Id;
            }
            context.CharterContents.AddRange(chartes);
            context.SaveChanges();
        }
예제 #4
0
        public async Task <IActionResult> OnPostAsync([FromServices] UserManager <MyMeetupUser> userManager, [FromServices] MyMeetupContext context, string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");

            if (ModelState.IsValid)
            {
                MyMeetupUser user = userManager.FindByEmailAsync(Input.Email).Result;
                if (user == null)
                {
                    ModelState.AddModelError(string.Empty, $"Email {Input.Email} inconnu.");
                    return(Page());
                }
                // This doesn't count login failures towards account lockout
                // To enable password failures to trigger account lockout, set lockoutOnFailure: true
                SignInResult result = await _signInManager.PasswordSignInAsync(user.UserName, Input.Password.Trim(), Input.RememberMe, lockoutOnFailure : true);

                bool isLoginOk = result.Succeeded;
                if (!isLoginOk && !result.IsLockedOut && !result.IsNotAllowed)
                {
                    if (context.Registrations.Any(x => x.UserId == user.Id && x.RegistrationCode == Input.Password.Trim()))
                    {
                        await _signInManager.SignInAsync(user, Input.RememberMe);

                        isLoginOk = true;
                    }
                }
                if (isLoginOk)
                {
                    _logger.LogInformation($"User {Input.Email} logged in.");
                    return(LocalRedirect(returnUrl));
                }
                if (result.RequiresTwoFactor)
                {
                    return(RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe }));
                }
                if (result.IsLockedOut)
                {
                    _logger.LogWarning("User account locked out.");
                    return(RedirectToPage("./Lockout"));
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Mauvais mot de passe.");
                    return(Page());
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
예제 #5
0
 public MyMeetupDomain(MyMeetupContext context)
 {
     _context = context;
 }