コード例 #1
0
        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));
        }
コード例 #2
0
        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));
            }
        }