Ejemplo n.º 1
0
 public ActionResult ZaboravljenaLozinka(ZaboravljenaLozinkaViewModel model)
 {
     if (!ModelState.IsValid)
     {
         return(View(Login));
     }
     return(View(ZaboravljenaLozinka));
 }
        public async Task <IActionResult> ZaboravljenaLozinkaIzmjena(ZaboravljenaLozinkaViewModel lozinkaZ)
        {
            if (ModelState.IsValid)
            {
                var korisnik = await _UserManager.FindByEmailAsync(lozinkaZ.Email);

                if (korisnik != null)
                {
                    var rezultat = await _UserManager.ResetPasswordAsync(korisnik, lozinkaZ.Token, lozinkaZ.Lozinka);

                    if (rezultat.Succeeded)
                    {
                        return(View("NakonIzmjeneZaboravljeneLozinkePoruka"));
                    }
                    foreach (var error in rezultat.Errors)
                    {
                        ModelState.AddModelError("", error.Description);
                    }
                    return(View(lozinkaZ));
                }
                return(View("NakonIzmjeneZaboravljeneLozinkePoruka"));
            }
            return(View(lozinkaZ));
        }
        public IActionResult ZaboravljenaLozinka(ZaboravljenaLozinkaViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("ZaboravljenaLozinka", model));
            }

            KorisnickiNalog korisnickiNalog = _context.KorisnickiNalogs.SingleOrDefault(i => i.Email == model.Email);

            if (korisnickiNalog == null)
            {
                TempData["errorMessage"] = "Email adresa se ne koristi.";
                return(View("ZaboravljenaLozinka", model));
            }

            PromjenaLozinke promjenaLozinke = _context.PromjenaLozinkes.SingleOrDefault
                                                  (i => i.KorisnickiNalogID == korisnickiNalog.KorisnickiNalogId);

            if (promjenaLozinke != null)
            {
                if ((DateTime.Now - promjenaLozinke.DatumPromjene).TotalHours < 24)
                {
                    TempData["errorMessage"] = "Email za promjenu lozinke je već poslan.";
                    return(View("ZaboravljenaLozinka", model));
                }
                else
                {
                    _context.PromjenaLozinkes.Remove(promjenaLozinke);
                    _context.SaveChanges();
                }
            }

            string primalacPoruke = "";

            if (korisnickiNalog.Permisije == 0)
            {
                primalacPoruke = korisnickiNalog.Ime + " " + korisnickiNalog.Prezime;
            }


            if (korisnickiNalog.Permisije == 1)
            {
                primalacPoruke = korisnickiNalog.Ime + " " + korisnickiNalog.Prezime;
            }


            if (korisnickiNalog.Permisije == 2)
            {
                primalacPoruke = korisnickiNalog.Ime + " " + korisnickiNalog.Prezime;
            }

            if (korisnickiNalog.Permisije == 3)
            {
                primalacPoruke = korisnickiNalog.Ime + " " + korisnickiNalog.Prezime;
            }


            string vrijednost = RandomString.GetString(30);
            string link       =
                $"{ this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}/prijava/promjena-lozinke?vrijednost=" + vrijednost;

            string poruka = "Kako bi promjenili lozinku, morate kliknut na sljedeći link: \n" + link +
                            "\nLink za resetiranje lozinke, će biti aktivan samo 24 sata, a poslije toga će postati nevažeći.";

            EmailSettings.SendEmail(_configuration, primalacPoruke, korisnickiNalog.Email, "Promjena lozinke", poruka);

            PromjenaLozinke zahtjevZaPromjenomLozinke = new PromjenaLozinke
            {
                Vrijednost        = vrijednost,
                KorisnickiNalogID = korisnickiNalog.KorisnickiNalogId,
                DatumPromjene     = DateTime.Now
            };

            _context.PromjenaLozinkes.Add(zahtjevZaPromjenomLozinke);
            _context.SaveChanges();

            TempData["successMessage"] = "Email za promjenu lozinke uspješno poslan.";
            return(RedirectToAction("zaboravljena-lozinka"));
        }