public async Task <IActionResult> RegistracijaKorisnika([Bind("KorisnikID,Ime,Prezime,Email,Pol,KorisnickoIme,Sifra,PotvrdiSifru,Grad,Pin")] Korisnik korisnik) { if (ModelState.IsValid) { // _context.Add(korisnik); // await _context.SaveChangesAsync(); var user = new ExtendedKorisnik { UserName = korisnik.KorisnickoIme, Email = korisnik.Email, Pin = protector.Protect(korisnik.Pin), City = korisnik.Grad }; var reasult = await userManager.CreateAsync(user, korisnik.Sifra); //dekripcija stringa string dekriptovanPin = protector.Unprotect(user.Pin); //ViewBag.SuccessMessage = "Uspesna registracija!"; if (reasult.Succeeded) { await signInManager.SignInAsync(user, isPersistent : false); return(RedirectToAction("index", "korisnik")); } foreach (var error in reasult.Errors) { ModelState.AddModelError("", error.Description); } //return RedirectToAction(nameof(LoginKorisnika)); } // ModelState.Clear(); return(View(korisnik)); }
public async Task <IActionResult> ExternalLoginCallback(string returnUrl = null, string remoteError = null) { //ako je null incijalizuem sa rut url returnUrl = returnUrl ?? Url.Content("~/"); LoginModel model = new LoginModel { ReturnUrl = returnUrl, ExternalLogin = (await signInManager.GetExternalAuthenticationSchemesAsync()).ToList() }; if (remoteError != null) { ModelState.AddModelError("", $"Error provajder:{remoteError}"); return(View("LoginKorisnika", model)); } var info = await signInManager.GetExternalLoginInfoAsync(); if (info == null) { ModelState.AddModelError("", "Google error"); return(View("LoginKorisnika", model)); } var signInResult = await signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent : false, bypassTwoFactor : true); if (signInResult.Succeeded) { return(LocalRedirect(returnUrl)); } else { var email = info.Principal.FindFirstValue(ClaimTypes.Email); if (email != null) { var user = await userManager.FindByEmailAsync(email); if (user == null) { user = new ExtendedKorisnik { UserName = info.Principal.FindFirstValue(ClaimTypes.GivenName), Email = info.Principal.FindFirstValue(ClaimTypes.Email) }; await userManager.CreateAsync(user); } await userManager.AddLoginAsync(user, info); await signInManager.SignInAsync(user, isPersistent : false); return(LocalRedirect(returnUrl)); } ViewBag.ErrorTitle = $"Email error :{info.LoginProvider}"; ViewBag.ErrorMessage = "Greska!!!"; return(View("LoginKorisnika", model)); } }