示例#1
0
        public IActionResult AzurirajLicneDetalje(String korisnickoIme, [FromBody] AzurirajLicneDetaljeRequestModel model)
        {
            var result = korisnikService.AzurirajLicneDetalje(korisnickoIme, model);

            if (result.IsOk)
            {
                logService.Akcija(Core.Constants.LogLevel.Info,
                                  Core.Constants.LogKategorija.korisnik,
                                  Core.Constants.LogAkcija.korisnik_izmijeni,
                                  "KorisnickoIme: " + result.Value.KorisnickoIme,
                                  authService.TrenutniKorisnik().UserName
                                  );
            }
            return(Convert(result));
        }
示例#2
0
        //public ServiceResult<KorisnikModel> Aktiviraj(string aktivacijskiToken)
        //{
        //	var token = context.AktivacijskiTokeni.FirstOrDefault(x => x.Token == aktivacijskiToken &&
        //															   !x.Iskoristen);
        //	if (token == null)
        //		return NotFound();

        //	if (DateTime.Now > token.DatumIsteka)
        //		return Error("Token istekao.");

        //	var korisnik = context.Korisnici.FirstOrDefault(x => x.KorisnickoIme == token.VlasnikKorisnickoIme);

        //	korisnik.EmailVerifikovan = true;
        //	korisnik.Onemogucen = false;
        //	token.Iskoristen = true;

        //	SaveChanges(context);

        //	var result = Map<Korisnik, KorisnikModel>(korisnik);
        //	return result;
        //}



        //public ServiceResult<Nothing> ResetSifre(ResetSifreRequestModel model)
        //{
        //    var token = context.AktivacijskiTokeni.FirstOrDefault(x => x.Token == model.Token &&
        //                                                               !x.Iskoristen);
        //    if (token == null)
        //        return NotFound();

        //    if (DateTime.Now > token.DatumIsteka)
        //        return Error("Token istekao.");

        //    token.Iskoristen = true;

        //    SaveChanges(context);

        //    var korisnik = context.Korisnici.FirstOrDefault(x => x.KorisnickoIme == token.VlasnikKorisnickoIme);

        //    return PostaviLozinku(korisnik.KorisnickoIme, model.NovaLozinka);
        //}


        public ServiceResult <KorisnikModel> AzurirajLicneDetalje(string korisnickoIme, AzurirajLicneDetaljeRequestModel model)
        {
            var securityLevel = new SecurityLevel();

            var trenutniKorisnik = authService.TrenutniKorisnik();

            if (trenutniKorisnik != null && trenutniKorisnik.TrenutnaUloga.VrijednostUAplikaciji != (int)Uloga.Administrator && trenutniKorisnik.KorisnickoIme != korisnickoIme)
            {
                return(Error("Nemate pravo pristupa"));
            }

            // dobavi razred ako postoji
            var korisnik = Secure(context.Korisnici.AsQueryable(), securityLevel)
                           .SingleOrDefault(k => k.KorisnickoIme == korisnickoIme);

            if (korisnik == null)
            {
                return(NotFound());
            }

            if (!String.IsNullOrEmpty(model.StaraLozinka))
            {
                if (!ImaPravo("korisnik_korisnik_promjena_lozinke"))
                {
                    return(Error(PrevediTekst("korisnik_zabranjena_promjena_lozinke", korisnik.Jezik)));
                }
                var hashProvider = Scope.Resolve <IHashProvider>();
                if (!hashProvider.ValidatePassword(model.StaraLozinka, korisnik.Tajna))
                {
                    return(Error(PrevediTekst("neuspjesna_promjena_lozinke", korisnik.Jezik)));
                }
                var novaTajna = hashProvider.HashPassword(model.NovaLozinka);
                korisnik.Tajna = novaTajna;

                if (model.Odjavi)
                {
                    // Onemoguci sve tokene
                    var tokeni = context.Tokeni.Where(a => a.VlasnikKorisnickoIme == korisnik.KorisnickoIme &&
                                                      a.DatumIsteka > DateTime.Now).ToList();
                    foreach (var token in tokeni)
                    {
                        token.DatumIsteka = DateTime.Now.AddMinutes(-1);
                    }
                }
            }


            // postavi vrijednosti
            korisnik.Email        = model.Email;
            korisnik.PunoIme      = model.PunoIme;
            korisnik.PolId        = model.PolId;
            korisnik.BrojMobitela = model.Telefon;
            korisnik.Jezik        = model.Jezik;

            /*var korisnikUloge = korisnik.KorisnikUloge.ToList();
             *
             * var korisnikUlogaNajveca = korisnikUloge[0].KorisnikUlogaId;
             *
             * var korisnikProjektiKorisnika = Secure(context.KorisnikProjekti.AsQueryable(), securityLevel)
             *              .SingleOrDefault(k => k.KorisnikUlogaId == korisnikUlogaNajveca);*/


            SaveChanges(context);

            // vrati azuriranog korisnika
            return(VratiKorisnikaPoKorisnickomImenu(korisnickoIme));
        }
示例#3
0
        public ServiceResult <KorisnikModel> AzurirajLicneDetalje(string korisnickoIme, AzurirajLicneDetaljeRequestModel model)
        {
            var securityLevel = new SecurityLevel();

            // dobavi razred ako postoji
            var korisnik = Secure(context.Users.AsQueryable(), securityLevel)
                           .SingleOrDefault(k => k.UserName == korisnickoIme);

            if (korisnik == null)
            {
                return(NotFound());
            }

            if (!String.IsNullOrEmpty(model.StaraLozinka))
            {
                if (!ImaPravo("korisnik_korisnik_promjena_lozinke"))
                {
                    return(Error("Korisniku je zabranjena promjena lozinke"));
                }

                var passwordHasher = new PasswordHasher <IdentityKorisnik>();

                // uradi validaciju lozinke
                var valid = passwordHasher.VerifyHashedPassword(korisnik, korisnik.PasswordHash, model.StaraLozinka);
                if (valid == PasswordVerificationResult.Failed)
                {
                    return(Error("Neuspješna promjena lozinke"));
                }

                var novaTajna = passwordHasher.HashPassword(korisnik, model.NovaLozinka);
                korisnik.PasswordHash = novaTajna;

                if (model.Odjavi)
                {
                    // Onemoguci sve tokene
                    var tokeni = context.Tokeni.Where(a => a.VlasnikId == korisnik.Id &&
                                                      a.DatumIsteka > DateTime.Now).ToList();
                    foreach (var token in tokeni)
                    {
                        token.DatumIsteka = DateTime.Now.AddMinutes(-1);
                    }
                }
            }


            // postavi vrijednosti
            korisnik.Email           = model.Email;
            korisnik.NormalizedEmail = model.Email;
            korisnik.PunoIme         = model.PunoIme;
            korisnik.PhoneNumber     = model.Telefon;

            SaveChanges(context);

            // vrati azuriranog korisnika
            return(VratiKorisnikaPoKorisnickomImenu(korisnickoIme));
        }