Exemplo n.º 1
0
        public async Task <IActionResult> Edit(int id)
        {
            var nalog = await _db.KorisnickiNalozi.FindAsync(id);

            var pass  = Autentifikacija.GenerateRandomPassword();
            var model = new KorisnickiNalogVM()
            {
                OsobaId           = nalog.KorisnickiNalogId,
                KorisnickiNalogId = nalog.KorisnickiNalogId,
                UlogaKorisnika    = nalog.UlogaKorisnika,
                KorisnickoIme     = nalog.KorisnickoIme,
                Aktivan           = nalog.Aktivan,
                Lozinka           = pass,
                SendEmail         = true,
                EmailBody         = MyEmailHelper.GetKorisnickiPodatciEditEmailBody()
            };

            return(PartialView("_Edit", model));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Create(KorisnickiNalogVM model)
        {
            if (!ModelState.IsValid)
            {
                return(PartialView("_Create", model));
            }
            var prom = await _db.Osobe.Where(w => w.OsobaId == model.OsobaId)
                       .Select(s => new { osoba = s, kandidat = s.Kandidat != null, zaposlenik = s.Zaposlenik != null })
                       .SingleOrDefaultAsync();

            if (!(prom.kandidat || prom.zaposlenik))
            {
                return(BadRequest("Osoba mora biti ili kandidat ili zaposlenik da bi se promovisala!"));
            }

            var logedNalog = await HttpContext.GetLogiraniKorisnik();

            if (model.UlogaKorisnika < UlogeKorisnika.Kandidat && logedNalog.UlogaKorisnika > UlogeKorisnika.Direktor)
            {
                return(BadRequest(new { alert = new Alert(Severity.warning,
                                                          $"Nema pravo da dodjeli ulogu {model.UlogaKorisnika}.", logedNalog.UlogaKorisnika.ToString(), false) }));
            }

            // generate a 128-bit salt using a secure PRNG
            byte[] salt = new byte[128 / 8];
            using (var rng = RandomNumberGenerator.Create())
            {
                rng.GetBytes(salt);
            }

            KorisnickiNalog nalog = new KorisnickiNalog()
            {
                KorisnickiNalogId = model.OsobaId,
                KorisnickoIme     = model.KorisnickoIme,
                Aktivan           = model.Aktivan,
                UlogaKorisnika    = model.UlogaKorisnika,
                LozinkaSalt       = Convert.ToBase64String(salt),
                LozinkaHash       = Convert.ToBase64String(KeyDerivation.Pbkdf2(
                                                               password: model.Lozinka,
                                                               salt: salt,
                                                               prf: KeyDerivationPrf.HMACSHA1,
                                                               iterationCount: 10000,
                                                               numBytesRequested: 256 / 8))
            };

            try
            {
                Severity status         = Severity.success;
                string   detailsMessage = "Uspješno ";
                if (model.KorisnickiNalogId != 0)
                {
                    nalog.KorisnickiNalogId = model.KorisnickiNalogId;

                    _db.KorisnickiNalozi.Attach(nalog);

                    var entry = _db.Entry(nalog);
                    entry.State = EntityState.Modified;
                    entry.Property(p => p.LozinkaHash).IsModified = model.IzmjenaLozinke;
                    entry.Property(p => p.LozinkaSalt).IsModified = model.IzmjenaLozinke;

                    detailsMessage += "editovan.";
                }
                else
                {
                    _db.KorisnickiNalozi.Add(nalog);
                    detailsMessage += "dodan u bazu.";
                }
                await _db.SaveChangesAsync();

                if (model.SendEmail)
                {
                    var emailBody = model.EmailBody.Replace("{lozinkaPolje}", model.Lozinka);
                    try
                    {
                        MyEmailHelper email = new MyEmailHelper(_config)
                        {
                            Subject   = "Obavjest-CZE Portala",
                            Recipient = prom.osoba,
                            Body      = emailBody
                        };
                        email.SendEmailKorisnickiPodatci();
                        detailsMessage += "\n ; Email poslan korisniku.";
                    }
                    catch (Exception)
                    {
                        status          = Severity.warning;
                        detailsMessage += "\n ; Email nije poslan korisniku.";
                    }
                }

                return(RedirectToAction("QuickDetails", "Osoba", new { area = "AdministrativniRadnik", id = model.OsobaId }));
            }
            catch (Exception e)
            {
                return(BadRequest("Došlo je do greške prilikom snimanja podatka u bazu.; " + e.Message));
            }
        }
Exemplo n.º 3
0
        private IQueryable <OsobaVMs.OsobaQuickDetailsVM> GetOsobaQuickDetailsVMQuery(int id)
        {
            string randomLozinka = Autentifikacija.GenerateRandomPassword();

            return(_db.Osobe.AsNoTracking().Where(w => w.OsobaId == id).Select(s => new OsobaVMs.OsobaQuickDetailsVM()
            {
                OsobaId = s.OsobaId,
                Ime = s.Ime,
                Prezime = s.Prezime,
                DatumRodjenja = s.DatumRodjenja,
                MjestoRodjenjaId = s.MjestoRodjenjaId,
                MjestoRodjenjaNaziv = s.MjestoRodjenja.Naziv,
                Spol = s.Spol,
                Email = s.Email,
                MjestoBoravkaId = s.MjestoBoravkaId,
                MjestoBoravkaNaziv = s.MjestoBoravka.Naziv,
                Adresa = s.Adresa,
                BrojMobitela = s.BrojMobitela,
                BrojTelefona = s.BrojTelefona,
                KakoSteSaznaliZaNas = s.KakoSteSaznaliZaNas,
                PodatciOFirmi = s.PodatciOFirmi,
                NazivFirme = s.NazivFirme,
                AdresaFirme = s.AdresaFirme,
                GradFirmeId = s.GradFirmeId,
                GradFirmeNaziv = s.GradFirma.Naziv,
                BrojTelefonaFirme = s.BrojTelefonaFirme,
                EmailFirme = s.EmailFirme,

                ZaposlenikCreateVM = new ZaposlenikVMs.ZaposlenikCreateVM()
                {
                    OsobaId = s.OsobaId,
                    OsobaNaziv = s.Ime + " " + s.Prezime,
                    ZaposlenikVM = _db.Zaposlenici.Where(w => w.ZaposlenikId == s.OsobaId).Select(x => new ZaposlenikVMs.ZaposlenikVM()
                    {
                        ZaposlenikId = x.ZaposlenikId,
                        StepenObrazovanja = x.StepenObrazovanja,
                        BrojRacuna = x.BrojRacuna,
                        BrojLicneKarte = x.BrojLicneKarte
                    }).FirstOrDefault()
                },
                KandidatCreateVM = new KandidatVMs.KandidatCreateVM()
                {
                    OsobaId = s.OsobaId,
                    OsobaNaziv = s.Ime + " " + s.Prezime,
                    KandidatVM = _db.Kandidati.Where(w => w.KandidatId == s.OsobaId).Select(x => new KandidatVMs.KandidatVM()
                    {
                        KandidatId = x.KandidatId,
                        Biljeske = x.Biljeske,
                        DatumUpisa = x.DatumUpisa
                    }).FirstOrDefault()
                },
                KorisnickiNalog = s.KorisnickiNalog != null,
                KorisnickiNalogVM = s.KorisnickiNalog != null ? new KorisnickiNalogVM()
                {
                    KorisnickiNalogId = s.KorisnickiNalog.KorisnickiNalogId,
                    KorisnickoIme = s.KorisnickiNalog.KorisnickoIme,
                    UlogaKorisnika = s.KorisnickiNalog.UlogaKorisnika,
                    Aktivan = s.KorisnickiNalog.Aktivan,
                } : new KorisnickiNalogVM()
                {
                    OsobaId = s.OsobaId,
                    UlogaKorisnika = s.Zaposlenik != null ? UlogeKorisnika.AdministrativniRadnik : UlogeKorisnika.Kandidat,
                    KorisnickoIme = s.Ime + " " + s.Prezime,
                    Lozinka = randomLozinka,
                    Aktivan = true,
                    SendEmail = true,
                    EmailBody = MyEmailHelper.GetKorisnickiPodatciCreateEmailBody(new Osoba()
                    {
                        Ime = s.Ime,
                        Prezime = s.Prezime,
                        Spol = s.Spol
                    })
                }
            }));
        }