public async Task <IActionResult> OnGetAsync()
        {
            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."));
            }

            var userName = await _userManager.GetUserNameAsync(user);

            var email = await _userManager.GetEmailAsync(user);

            Vereniging vereniging = _verenigingRepository.GetByMail(email);

            Username = userName;

            Input = new InputModel
            {
                Email      = email,
                EmailZeden = vereniging.EmailZeden,
                IBAN       = vereniging.IBAN
            };

            return(Page());
        }
        public async Task <IActionResult> Create(VerenigingEditViewModel evm)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    evm.IBAN = NormalizeIBAN(evm.IBAN);
                    Vereniging vereniging = new Vereniging(evm.Email, evm.Naam, evm.EmailZeden, evm.IBAN);

                    //create identity user aka account om in te loggen, standaard wachten P@ssword1
                    var user = new IdentityUser {
                        UserName = evm.Email, Email = evm.Email
                    };
                    Random random     = new Random();
                    int    passNumber = random.Next(100);
                    string password;
                    if (vereniging.NormalizedGroepNaam.Length > 8)
                    {
                        password = $"{vereniging.NormalizedGroepNaam.Substring(0,8)}@ww{passNumber}!";
                    }
                    else
                    {
                        password = $"{vereniging.NormalizedGroepNaam}@ww{passNumber}!";
                    }
                    await _userManager.CreateAsync(user, password);

                    await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.Role, "vereniging"));

                    await MapVerenigingEditViewModelToVereniging(evm, vereniging);

                    _verenigingRepository.Add(vereniging);
                    _verenigingRepository.SaveChanges();

                    //send mail to vereniging about new account
                    if (evm.SendMail)
                    {
                        SendMailVerenigingUpdate(vereniging, password, true);
                    }

                    int verenigingId = _verenigingRepository.GetByMail(evm.Email).GroepId;
                    TempData["message"] = $"U heeft succesvol de vereniging {vereniging.GroepNaam} aangemaakt";
                    return(RedirectToAction(nameof(Details), new { id = verenigingId }));
                }
                catch (Exception e)
                {
                    TempData["error"] = $"Sorry, er liep iets fout, de vereniging kon niet worden aangemaakt: {e.Message}";
                }
            }
            ViewData["IsEdit"]    = false;
            ViewData["Konventen"] = GetKonventenAsSelectList();
            return(View(nameof(Edit), evm));
        }
        public async Task <IActionResult> OnPostAsync()
        {
            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."));
            }

            _logger.LogInformation("User with ID '{UserId}' asked for their personal data.", _userManager.GetUserId(User));

            // Only include personal data for download
            var personalData      = new Dictionary <string, string>();
            var personalDataProps = typeof(IdentityUser).GetProperties().Where(
                prop => Attribute.IsDefined(prop, typeof(PersonalDataAttribute)));

            foreach (var p in personalDataProps)
            {
                personalData.Add(p.Name, p.GetValue(user)?.ToString() ?? "null");
            }
            Vereniging vereniging = _verenigingRepository.GetByMail(user.Email);

            personalData.Add("EmailZeden", vereniging.EmailZeden);
            personalData.Add("IBAN", vereniging.IBAN);

            Response.Headers.Add("Content-Disposition", "attachment; filename=PersonalData.json");
            return(new FileContentResult(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(personalData)), "text/json"));
        }
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            var user          = context.HttpContext.User;
            var adminTestMail = context.HttpContext.Session.GetString("AdminUserTestMail");

            if (context.HttpContext.User.Identity.IsAuthenticated && user.IsInRole("admin"))
            {
                if (adminTestMail != null && _verenigingRepository.GetByMail(adminTestMail) != null)
                {
                    context.ActionArguments["vereniging"] = _verenigingRepository.GetByMail(adminTestMail);
                }
                else
                {
                    context.ActionArguments["vereniging"] = _verenigingRepository.GetByMail("*****@*****.**");
                }
            }
            else
            {
                context.ActionArguments["vereniging"] = context.HttpContext.User.Identity.IsAuthenticated ?
                                                        _verenigingRepository.GetByMail(context.HttpContext.User.Identity.Name) : null;
            }
            base.OnActionExecuting(context);
        }