//[HttpPost]
        //public async Task<IActionResult> SnimiK(ProfilUrediVM model)
        //{
        //    IdentityResult x=await _userManager.UpdateAsync(model)
        //}

        public IActionResult Snimi(ProfilUrediVM model)
        {
            if (ModelState.IsValid)
            {
                Korisnik k     = HttpContext.GetLogiraniKorisnik();
                Kupac    kupac = ctx.Kupac.Where(x => x.KorisnikId == k.Id).FirstOrDefault();
                k.KorisnickoIme = model.KorisnickoIme;
                k.LozinkaHash   = PasswordSettings.GetHash(model.Lozinka, Convert.FromBase64String(k.LozinkaSalt));
                ;
                k.OpstinaId = model.OpstinaID;
                HttpContext.SetLogiraniKorisnik(k);
                ctx.SaveChanges();



                kupac.Email  = model.Email;
                kupac.Adresa = model.Adresa;

                ctx.SaveChanges();

                return(RedirectToAction("Index"));
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
        public IActionResult PromjenaLozinke(PromjenaLozinkeViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("PromjenaLozinke", model));
            }

            string vrijednost = model.GenerisanaVrijednost;

            PromjenaLozinke promjenaLozinke = _context.PromjenaLozinkes.SingleOrDefault(i => i.Vrijednost == vrijednost);

            KorisnickiNalog korisnickiNalog = _context.KorisnickiNalogs.SingleOrDefault
                                                  (i => i.KorisnickiNalogId == promjenaLozinke.KorisnickiNalogID);

            if (korisnickiNalog != null)
            {
                korisnickiNalog.LozinkaHash = PasswordSettings.GetHash(model.NovaLozinka,
                                                                       Convert.FromBase64String(korisnickiNalog.LozinkaSalt));
            }

            _context.PromjenaLozinkes.Remove(promjenaLozinke);
            _context.SaveChanges();

            TempData["successMessage"] = "Uspješno ste promijenili lozinku.";
            return(RedirectToAction("Prijava"));
        }
        public IActionResult PromijeniLozinku(ProfilIzmjenaLozinkeViewModel model)
        {
            KorisnickiNalog logiraniKorisnik = HttpContext.GetLogiraniKorisnik();

            if (logiraniKorisnik.Permisije == 0)
            {
                TempData["Layout"] = "_Administrator";
            }

            if (logiraniKorisnik.Permisije == 1)
            {
                TempData["Layout"] = "_Stomatolog";
            }

            if (logiraniKorisnik.Permisije == 2)
            {
                TempData["Layout"] = "_MedicinskoOsoblje";
            }

            if (logiraniKorisnik.Permisije == 3)
            {
                TempData["Layout"] = "_Pacijent";
            }

            if (!ModelState.IsValid)
            {
                return(View("IzmjenaLozinke", model));
            }


            if (PasswordSettings.GetHash(model.StaraLozinka, Convert.FromBase64String(logiraniKorisnik.LozinkaSalt))
                != logiraniKorisnik.LozinkaHash)
            {
                TempData["errorMessage"] = "Netačno unesena trenutna lozinka.";
                return(RedirectToAction("izmjena-lozinke"));
            }

            if (PasswordSettings.GetHash(model.NovaLozinka, Convert.FromBase64String(logiraniKorisnik.LozinkaSalt))
                == logiraniKorisnik.LozinkaHash)
            {
                TempData["errorMessage"] = "Nova lozinka se treba razlikovati od trenutne.";
                return(RedirectToAction("izmjena-lozinke"));
            }

            if (model.NovaLozinka != model.PotvrdaNoveLozinke)
            {
                TempData["errorMessage"] = "Niste potvrdili vašu novu lozinku.";
                return(RedirectToAction("izmjena-lozinke"));
            }
            logiraniKorisnik.LozinkaHash = PasswordSettings.GetHash(model.NovaLozinka, Convert.FromBase64String(logiraniKorisnik.LozinkaSalt));

            _context.SaveChanges();

            TempData["successMessage"] = "Uspješno ste promijenili lozinku.";
            return(RedirectToAction("pregled-profila"));
        }
示例#4
0
        public IActionResult Snimi(KupciUrediVM model)
        {
            if (ModelState.IsValid)
            {
                Kupac    kupac = ctx.Kupac.Where(x => x.Id == model.KupacId).First();
                Korisnik k     = ctx.Korisnik.Where(x => x.Id == kupac.KorisnikId).First();
                k.KorisnickoIme = model.KorisnickoIme;
                k.LozinkaHash   = PasswordSettings.GetHash(model.Lozinka, Convert.FromBase64String(k.LozinkaSalt));
                ctx.SaveChanges();

                return(RedirectToAction("IndexKupci", "Korisnici"));
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
        public IActionResult Snimi(RegistracijaIndexVM model)
        {
            if (ModelState.IsValid)
            {
                byte[] lozinkaSalt = PasswordSettings.GetSalt();
                string lozinkaHash = PasswordSettings.GetHash(model.Lozinka, lozinkaSalt);

                Korisnik k = new Korisnik
                {
                    KorisnickoIme = model.KorisnickoIme,
                    LozinkaSalt   = Convert.ToBase64String(lozinkaSalt),
                    LozinkaHash   = lozinkaHash,
                    OpstinaId     = model.OpstinaID,
                    UlogaId       = 5
                };

                ctx.Korisnik.Add(k);
                ctx.SaveChanges();

                Kupac kupac = new Kupac
                {
                    Ime        = model.Ime,
                    Prezime    = model.Prezime,
                    Email      = model.Email,
                    Adresa     = model.Adresa,
                    Spol       = model.Spol,
                    KorisnikId = k.Id
                };

                ctx.Kupac.Add(kupac);
                ctx.SaveChanges();


                return(RedirectToAction("PrikazPoruke"));
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
示例#6
0
        public IActionResult SpremiNovogZaposlenika(ZaposleniciDodajVM model)
        {
            if (ModelState.IsValid)
            {
                byte[] lozinkaSalt = PasswordSettings.GetSalt();
                string lozinkaHash = PasswordSettings.GetHash(model.Lozinka, lozinkaSalt);

                Korisnik k = new Korisnik
                {
                    KorisnickoIme = model.KorisnickoIme,
                    LozinkaHash   = lozinkaHash,
                    LozinkaSalt   = Convert.ToBase64String(lozinkaSalt),
                    OpstinaId     = model.OpstinaId,
                    UlogaId       = model.UlogaId
                };
                ctx.Korisnik.Add(k);
                ctx.SaveChanges();

                Zaposlenik z = new Zaposlenik
                {
                    Ime        = model.Ime,
                    Prezime    = model.Prezime,
                    Email      = model.Email,
                    Adresa     = model.Adresa,
                    Telefon    = model.Telefon,
                    KorisnikId = k.Id
                };
                ctx.Zaposlenik.Add(z);
                ctx.SaveChanges();

                return(Redirect("/ModulAdministrator/Korisnici/IndexZaposlenici"));
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
        public IActionResult Prijava()
        {
            if (!_context.Administrators.Any())
            {
                byte[] lozinkaSalt = PasswordSettings.GetSalt();
                string lozinkaHash = PasswordSettings.GetHash("Admin24!", lozinkaSalt);
                if (!_context.Grads.Any())
                {
                    if (!_context.Drzavas.Any())
                    {
                        var novaDrzava = new Drzava
                        {
                            Naziv = "Bosna i Hercegovina"
                        };
                        _context.Add(novaDrzava);
                        _context.SaveChanges();
                    }

                    var noviGrad = new Grad
                    {
                        DrzavaId      = 1,
                        Naziv         = "Jablanica",
                        PostanskiBroj = "88420"
                    };
                    _context.Add(noviGrad);
                    _context.SaveChanges();
                }
                var AdminKorisnik = new KorisnickiNalog
                {
                    Ime           = "Dino",
                    Prezime       = "Nanić",
                    Email         = "*****@*****.**",
                    LozinkaHash   = lozinkaHash,
                    LozinkaSalt   = Convert.ToBase64String(lozinkaSalt),
                    Permisije     = 0,
                    Kreirano      = DateTime.Now,
                    JMBG          = "0101990150023",
                    DatumRodjenja = new DateTime(1990, 1, 1),
                    Mobitel       = "38762516238",
                    Adresa        = "San BB",
                    GradId        = 1,
                    Spol          = "Muško",
                    Slika         = "blank-profile.jpg"
                };
                _context.Add(AdminKorisnik);
                _context.SaveChanges();
                var NoviAdministrator = new Administrator
                {
                    KorisnickiNalog = _context.KorisnickiNalogs.SingleOrDefault(i => i.Email == AdminKorisnik.Email),
                    DatumZaposlenja = DateTime.Now,
                    OpisPosla       = "Administracija stranice",
                    BrojZiroRacuna  = "4343000022225555",
                    Aktivan         = true
                };
                _context.Add(NoviAdministrator);
                _context.SaveChanges();

                var novaTitula = new Titula
                {
                    Naziv = "dr."
                };
                _context.Add(novaTitula);
                _context.SaveChanges();
            }


            if (HttpContext.GetLogiraniKorisnik() != null)
            {
                return(RedirectToAction("Pocetna", "Profil"));
            }

            return(View());
        }
        public IActionResult Registracija(RegistracijaViewModel model)
        {
            if (!ModelState.IsValid)
            {
                model.Gradovi = _context.Grads.Select
                                    (i => new SelectListItem {
                    Text = i.Naziv, Value = i.GradId.ToString()
                }).ToList();
                return(View("Registracija", model));
            }


            if (_context.KorisnickiNalogs.Any(i => i.Email == model.Email))
            {
                TempData["errorMessage"] = "Email adresa se koristi.";
                model.Gradovi            = _context.Grads.Select
                                               (i => new SelectListItem {
                    Text = i.Naziv, Value = i.GradId.ToString()
                }).ToList();
                return(View("Registracija", model));
            }

            byte[] lozinkaSalt = PasswordSettings.GetSalt();
            string lozinkaHash = PasswordSettings.GetHash(model.Lozinka, lozinkaSalt);

            //implementiraj izmjenu lozinke ako je 0 na pocetku, prebaci u 387
            string uniqueFileName = UploadedFile(model);

            KorisnickiNalog korisnickiNalog = new KorisnickiNalog
            {
                Ime           = model.Ime,
                Prezime       = model.Prezime,
                Email         = model.Email,
                LozinkaHash   = lozinkaHash,
                LozinkaSalt   = Convert.ToBase64String(lozinkaSalt),
                Permisije     = 3,
                Kreirano      = DateTime.Now,
                Mobitel       = model.Mobitel,
                GradId        = model.GradID,
                Adresa        = model.Adresa,
                JMBG          = model.JMBG,
                DatumRodjenja = model.DatumRodjenja,
                Spol          = model.Spol,
                Slika         = uniqueFileName
            };
            Pacijent pacijent = new Pacijent
            {
                KorisnickiNalog = korisnickiNalog,
                AlergijaNaLijek = model.AlergijaNaLijek,
                Aparatic        = model.Aparatic,
                Navlake         = model.Navlake,
                Proteza         = model.Proteza,
                Terapija        = model.Terapija
            };

            _context.KorisnickiNalogs.Add(korisnickiNalog);
            _context.Pacijents.Add(pacijent);

            _context.SaveChanges();

            TempData["successMessage"] = "Uspješno ste se registrovali.";
            return(RedirectToAction("Prijava"));
        }
        public IActionResult Prijava(PrijavaViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }


            var korisnickiNalog = _context.KorisnickiNalogs
                                  .Where(i => i.Email == model.Email)
                                  .AsEnumerable()
                                  .Where(i => i.LozinkaHash ==
                                         PasswordSettings.GetHash(model.Lozinka, Convert.FromBase64String(i.LozinkaSalt)));

            if (korisnickiNalog == null || !korisnickiNalog.Any())
            {
                TempData["errorMessage"] = "Niste unijeli ispravne podatke za prijavu.";
                return(View(model));
            }


            if ((korisnickiNalog.First().Permisije == 0 &&
                 _context.Administrators
                 .Where(i => i.KorisnickiNalogId == korisnickiNalog.First().KorisnickiNalogId).First().Aktivan) ||
                (korisnickiNalog.First().Permisije == 1 &&
                 _context.Stomatologs
                 .Where(i => i.KorisnickiNalogId == korisnickiNalog.First().KorisnickiNalogId).First().Aktivan) ||
                (korisnickiNalog.First().Permisije == 2 &&
                 _context.MedicinskoOsobljes
                 .Where(i => i.KorisnickiNalogId == korisnickiNalog.First().KorisnickiNalogId).First().Aktivan) ||
                korisnickiNalog.First().Permisije == 3)
            {
                HttpContext.SetLogiraniKorisnik(korisnickiNalog.First(), true);                               //setuje logiranog korisnika

                var prijavaLokacijaMail    = GetLoginLocation(model.Email, "mail");                           //dobavlja informacije o lokaciji prijave
                var prijavaLokacijaMobitel = GetLoginLocation(model.Email, "mobitel");                        //dobavlja informacije o lokaciji prijave

                var trenutnoVrijeme    = DateTime.Now.ToString(new CultureInfo("de-DE"));                     //trenutno vrijeme prebacuje na njemacki format datum 19.03.2020 15:35:43
                var primalacPoruke     = korisnickiNalog.First().Ime + " " + korisnickiNalog.First().Prezime; //ime i prezime za email
                var primalacEmail      = korisnickiNalog.First().Email;                                       //primalac email-a
                var prijavaEmailPoruka = "Poštovani " + primalacPoruke +
                                         ",\nDetektovana je prijava na vaš račun" +
                                         "\n-----------------------------------------------\n\n" + prijavaLokacijaMail +
                                         "\nDatum i vrijeme: " + trenutnoVrijeme +
                                         "\n!!!AKO OVO NISTE BILI VI, MOLIMO VAS DA PROMJENITE VAŠU LOZINKU!!!" +
                                         "\nIli nas kontaktirajte na naš mail: [email protected]"; //generisanje email poruke

                var primalacPorukeTelefon = korisnickiNalog.First().Mobitel;



                //VAZNO!!! UKLONI KOMENTARE DA BI PRORADILO SLANJE PORUKA

                var client = new Client(creds: new Nexmo.Api.Request.Credentials
                {
                    ApiKey    = _configuration.GetValue <string>("NexmoSmsGateway:ApiKey"),
                    ApiSecret = _configuration.GetValue <string>("NexmoSmsGateway:ApiSecret")
                });
                var results = client.SMS.Send(request: new SMS.SMSRequest
                {
                    from = "Ordinacija",
                    to   = primalacPorukeTelefon,
                    text = prijavaLokacijaMobitel
                });


                EmailSettings.SendEmail(_configuration, primalacPoruke, primalacEmail, "Nova prijava detektovana", prijavaEmailPoruka);//šalje email

                return(RedirectToAction("Pocetna", "Profil"));
            }

            TempData["errorMessage"] = "Niste unijeli ispravne podatke za prijavu.";
            return(View(model));
        }
示例#10
0
        public IActionResult LoginTwoFactor(LoginTwoFactorVM model)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction("Login"));
            }

            Korisnik korisnik = ctx.Korisnik
                                .SingleOrDefault(x => x.KorisnickoIme == model.username && x.LozinkaHash == PasswordSettings.GetHash(model.password, Convert.FromBase64String(x.LozinkaSalt)));

            if (korisnik == null)
            {
                ViewData["poruka"] = "Pogrešan username ili password";
                return(View("Login"));
            }


            TwoFactorAuthenticator TwoFacAuth = new TwoFactorAuthenticator();
            string current = TwoFacAuth.GetCurrentPIN(korisnik.TwoFactorUniqueKey);
            bool   isValid = current.Equals(model.TwoFactorPin);

            //bool isValid = true;
            if (isValid)
            {
                HttpContext.SetLogiraniKorisnik(korisnik, snimiUCookie: model.ZapamtiLozinku);
                return(RedirectToAction("Index", "Home"));
            }
            else
            {
                ViewData["poruka"] = "Pogrešan kod";
                return(View("LoginTwoFactor", model));
            }
        }
示例#11
0
        public IActionResult Login(LoginVM input)
        {
            if (!ModelState.IsValid)
            {
                ViewData["poruka"] = "Niste unijeli ispravne podatke";
                return(View("Index", input));
            }
            Korisnik korisnik = ctx.Korisnik
                                .SingleOrDefault(x => x.KorisnickoIme == input.username && x.LozinkaHash == PasswordSettings.GetHash(input.password, Convert.FromBase64String(x.LozinkaSalt)));

            if (korisnik == null)
            {
                ViewData["poruka"] = "Pogrešan username ili password";
                return(View("Index", input));
            }

            if (!String.IsNullOrEmpty(korisnik.TwoFactorUniqueKey))
            {
                var twoFactorModel = new LoginTwoFactorVM
                {
                    username       = korisnik.KorisnickoIme,
                    password       = input.password,
                    ZapamtiLozinku = input.ZapamtiPassword
                };

                return(View("LoginTwoFactor", twoFactorModel));
            }
            else
            {
                HttpContext.SetLogiraniKorisnik(korisnik, snimiUCookie: input.ZapamtiPassword);
                return(RedirectToAction("Index", "Home"));
            }
        }
示例#12
0
        public IActionResult DodajOsoblje(KorisnikDodajOsobljeViewModel model)
        {
            if (!ModelState.IsValid)
            {
                model.Gradovi = _context.Grads.Select
                                    (i => new SelectListItem {
                    Text = i.Naziv, Value = i.GradId.ToString()
                }).ToList();
                model.Titule = _context.Titulas.Select
                                   (i => new SelectListItem {
                    Text = i.Naziv, Value = i.TitulaId.ToString()
                }).ToList();
                return(View("DodajOsoblje", model));
            }


            if (_context.KorisnickiNalogs.Any(i => i.Email == model.Email))
            {
                TempData["errorMessage"] = "Email adresa se koristi.";
                model.Gradovi            = _context.Grads.Select
                                               (i => new SelectListItem {
                    Text = i.Naziv, Value = i.GradId.ToString()
                }).ToList();
                model.Titule = _context.Titulas.Select
                                   (i => new SelectListItem {
                    Text = i.Naziv, Value = i.TitulaId.ToString()
                }).ToList();
                return(View("DodajOsoblje", model));
            }

            byte[] lozinkaSalt = PasswordSettings.GetSalt();
            var    templozinka = GenerateRandomPassword();
            string lozinkaHash = PasswordSettings.GetHash(templozinka, lozinkaSalt);


            string uniqueFileName = UploadedFile(model);

            KorisnickiNalog korisnickiNalog = new KorisnickiNalog
            {
                Ime           = model.Ime,
                Prezime       = model.Prezime,
                Email         = model.Email,
                LozinkaHash   = lozinkaHash,
                LozinkaSalt   = Convert.ToBase64String(lozinkaSalt),
                Permisije     = 2,
                Kreirano      = DateTime.Now,
                Mobitel       = model.Mobitel,
                GradId        = model.GradID,
                Adresa        = model.Adresa,
                JMBG          = model.JMBG,
                DatumRodjenja = model.DatumRodjenja,
                Spol          = model.Spol,
                Slika         = uniqueFileName
            };
            MedicinskoOsoblje osoblje = new MedicinskoOsoblje
            {
                KorisnickiNalog = korisnickiNalog,
                TitulaID        = model.TitulaID,
                DatumZaposlenja = model.DatumZaposlenja,
                BrojZiroRacuna  = model.BrojZiroRacuna,
                Aktivan         = model.Aktivan,
                OpisPosla       = model.OpisPosla
            };

            _context.KorisnickiNalogs.Add(korisnickiNalog);
            _context.MedicinskoOsobljes.Add(osoblje);

            _context.SaveChanges();

            string primalacPoruke = korisnickiNalog.Ime + " " + korisnickiNalog.Prezime;
            string poruka         = primalacPoruke + " vaši pristupni podaci su: \nEmail: " + korisnickiNalog.Email +
                                    "\nPassword: "******"Nalog napravljen", poruka);

            TempData["successMessage"] = "Uspješno ste dodali novog uposlenika.";
            return(RedirectToAction("uredi-osoblje"));
        }
示例#13
0
        public IActionResult DodajPacijenta(KorisnikDodajPacijentaViewModel model)
        {
            if (!ModelState.IsValid)
            {
                model.Gradovi = _context.Grads.Select
                                    (i => new SelectListItem {
                    Text = i.Naziv, Value = i.GradId.ToString()
                }).ToList();
                return(View("DodajPacijenta", model));
            }

            if (_context.KorisnickiNalogs.Any(i => i.Email == model.Email))
            {
                TempData["errorMessage"] = "Email adresa se koristi.";
                model.Gradovi            = _context.Grads.Select
                                               (i => new SelectListItem {
                    Text = i.Naziv, Value = i.GradId.ToString()
                }).ToList();
                return(View("DodajPacijenta", model));
            }

            byte[] lozinkaSalt = PasswordSettings.GetSalt();
            var    templozinka = GenerateRandomPassword();
            string lozinkaHash = PasswordSettings.GetHash(templozinka, lozinkaSalt);

            string uniqueFileName = UploadedFile(model);

            KorisnickiNalog korisnickiNalog = new KorisnickiNalog
            {
                Ime           = model.Ime,
                Prezime       = model.Prezime,
                Email         = model.Email,
                LozinkaHash   = lozinkaHash,
                LozinkaSalt   = Convert.ToBase64String(lozinkaSalt),
                Permisije     = 3,
                Kreirano      = DateTime.Now,
                Mobitel       = model.Mobitel,
                GradId        = model.GradID,
                Adresa        = model.Adresa,
                JMBG          = model.JMBG,
                DatumRodjenja = model.DatumRodjenja,
                Spol          = model.Spol,
                Slika         = uniqueFileName
            };
            Pacijent pacijent = new Pacijent
            {
                KorisnickiNalog = korisnickiNalog,
                AlergijaNaLijek = model.AlergijaNaLijek,
                Aparatic        = model.Aparatic,
                Navlake         = model.Navlake,
                Proteza         = model.Proteza,
                Terapija        = model.Terapija
            };

            _context.KorisnickiNalogs.Add(korisnickiNalog);
            _context.Pacijents.Add(pacijent);

            _context.SaveChanges();

            string primalacPoruke = korisnickiNalog.Ime + " " + korisnickiNalog.Prezime;
            string poruka         = primalacPoruke + " vaši pristupni podaci su: \nEmail: " + korisnickiNalog.Email +
                                    "\nPassword: "******"Nalog napravljen", poruka);

            TempData["successMessage"] = "Uspješno ste dodali novog pacijenta.";

            return(RedirectToAction("uredi-pacijent"));
        }