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()); }
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()); }
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)); } }