Exemplo n.º 1
0
        public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = null)
        {
            ViewData["AlleCategorien"] = _categorieRepository.GetAll().ToList();
            ViewData["ReturnUrl"]      = returnUrl;
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    var gebruiker = new Gebruiker
                    {
                        Voornaam    = model.Voornaam,
                        Familienaam = model.Familienaam,
                        Emailadres  = model.Email,
                        Geslacht    = model.Geslacht ?? Geslacht.Anders
                    };
                    _gebruikerRepository.Add(gebruiker);
                    _gebruikerRepository.SaveChanges();
                    _logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.EmailConfirmationLink(user.Id, code, Request.Scheme);
                    await _emailSender.SendEmailConfirmationAsync(model.Email, callbackUrl, model.Voornaam);

                    await _signInManager.SignInAsync(user, isPersistent : false);

                    _logger.LogInformation("User created a new account with password.");
                    return(RedirectToLocal(returnUrl));
                }
                AddErrors(result);
            }
            // If we got this far, something failed, redisplay form
            ViewData["Geslacht"] = Geslachten();
            return(View(model));
        }
        public async Task <ActionResult <String> > Register(RegisterDTO model)
        {
            IdentityUser user = new IdentityUser {
                UserName = model.Username, Email = model.Email
            };
            Gebruiker gebruiker = new Gebruiker {
                Email = model.Email, Voornaam = model.Firstname, Achternaam = model.Lastname, Gebruikersnaam = model.Username
            };
            var result = await _userManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                _gebruikerRepository.Add(gebruiker);
                _gebruikerRepository.SaveChanges();
                string token = GetToken(user);
                return(Created("", token));
            }
            return(BadRequest());
        }
Exemplo n.º 3
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl      = returnUrl ?? Url.Content("~/");
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
            if (ModelState.IsValid)
            {
                var user = new IdentityUser {
                    UserName = Input.Email, Email = Input.Email
                };
                var result = await _userManager.CreateAsync(user, Input.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

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

                    // user opslaan in database
                    Gebruiker gebruiker = new Gebruiker(Input.FirstName, Input.LastName, Input.Email, EncryptPassword(Input.Password));
                    gebruiker.Aantalaanwezig     = 0;
                    gebruiker.Aantalafwezig      = 0;
                    gebruiker.Aantalingeschreven = 0;
                    _gebruikerRepository.Add(gebruiker);
                    _gebruikerRepository.SaveChanges();

                    await _signInManager.SignInAsync(user, isPersistent : false);

                    return(LocalRedirect(returnUrl));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
Exemplo n.º 4
0
        public ActionResult Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var lookupResult = hoGentApiLookupProvider.Lookup(model.UserId, model.Password);

            if (!lookupResult.IsValid())
            {
                ModelState.AddModelError("", "De gebruikersnaam of wachtwoord zijn niet geldig.");
                return(View(model));
            }

            var result = SignInManager.PasswordSignInAsync(model.UserId, PASSWORD_FILLER, false, shouldLockout: false).Result;

            switch (result)
            {
            case SignInStatus.Success:
                return(RedirectToLocal(returnUrl));

            case SignInStatus.Failure:
                try
                {
                    var newUser = new ApplicationUser {
                        UserName = model.UserId.ToLower(), Email = lookupResult.Email
                    };
                    var registerResult = UserManager.CreateAsync(newUser, PASSWORD_FILLER).Result;

                    if (registerResult.Succeeded)
                    {
                        var isLector = (lookupResult.Type.Equals("personeel"));

                        Gebruiker nieuweGebruiker;

                        if (isLector)
                        {
                            nieuweGebruiker = new Lector(lookupResult.FirstName,
                                                         lookupResult.LastName, lookupResult.Email);
                        }
                        else
                        {
                            nieuweGebruiker = new Student(lookupResult.FirstName,
                                                          lookupResult.LastName, lookupResult.Email);
                        }

                        gebruikerRepo.Add(nieuweGebruiker);
                        gebruikerRepo.SaveChanges();

                        // Can't use .Result without storing the result in a variable
                        // Has to be this way otherwise the user has to login twice
                        result = SignInManager.PasswordSignInAsync(model.UserId, PASSWORD_FILLER, false, shouldLockout: false).Result;

                        return(RedirectToLocal(returnUrl));
                    }

                    AddErrors(registerResult);
                    return(View(model));
                }
                catch (HttpRequestException)
                {
                    ModelState.AddModelError("", "Er ging iets mis tijdens het contacteren van de HoGent servers.");
                    return(View(model));
                }
                catch (ArgumentException)
                {
                    ModelState.AddModelError("", "De gebruikersnaam en het passwoord zijn verplicht in te vullen.");
                    return(View(model));
                }

            default:
                ModelState.AddModelError("", "Ongeldige login poging.");
                return(View(model));
            }
        }