Beispiel #1
0
        public JsonResult Edit(KorisnikUlogaViewModel korisnikUlogaViewModel)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(Json(new { Result = "ERROR", Message = "Form is not valid! Please correct it and try again." }));
                }

                using (var context = new ProdavnicaContext())
                {
                    var nekiKorisnik = context.Korisniks.Find(korisnikUlogaViewModel.KorisnikID);
                    var nekaUloga    = context.Ulogas.Find(korisnikUlogaViewModel.UlogaID);

                    var ima = nekiKorisnik.KorisnikUlogas.Any(u => u.UlogaID == nekaUloga.UlogaID && korisnikUlogaViewModel.KorisnikUlogaID != u.KorisnikUlogaID);

                    if (ima)
                    {
                        return(Json(new { Result = "ERROR", Message = "Korisniku je vec dodjeljena ta uloga" }));
                    }

                    KorisnikUloga korisnikUloga = context.KorisnikUlogas.Find(korisnikUlogaViewModel.KorisnikUlogaID);
                    korisnikUloga.KorisnikID = korisnikUlogaViewModel.KorisnikID;
                    korisnikUloga.UlogaID    = korisnikUlogaViewModel.UlogaID;
                    context.SaveChanges();
                }

                return(Json(new { Result = "OK" }));
            }
            catch (Exception ex)
            {
                return(Json(new { Result = "ERROR", Message = ex.Message }));
            }
        }
        public JsonResult UpdateKorisnikUloga(KorisnikUloga kUloga)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(Json(new { Result = "ERROR", Message = "Form is not valid! Please correct it and try again." }));
                }

                using (var context = new ProdavnicaContext())
                {
                    var korisnik = context.Korisniks.Find(kUloga.KorisnikId);                                                               //u korisnik trazim kuloga.korisnikId
                    var ima      = korisnik.KorisnikUlogas.Any(k => k.UlogaId == kUloga.UlogaId && k.KorisnikUlogaId != k.KorisnikUlogaId); //ako postoji ta uloga u ulogama
                    if (ima)
                    {
                        return(Json(new { Result = "ERROR", Message = "Uloga vec postoji za izabranog korisnika!" }));
                    }

                    KorisnikUloga kUlogaUpdate = context.KorisnikUlogas.Find(kUloga.KorisnikUlogaId);

                    kUlogaUpdate.KorisnikUlogaId = kUloga.KorisnikUlogaId;
                    kUlogaUpdate.KorisnikId      = kUloga.KorisnikId;
                    kUlogaUpdate.UlogaId         = kUloga.UlogaId;

                    context.SaveChanges();
                }
                return(Json(new { Result = "OK" }));
            }
            catch (Exception ex)
            {
                return(Json(new { Result = "ERROR", Message = ex.Message }));
            }
        }
Beispiel #3
0
        public async Task <ServiceResult <KorisnikModel> > Kreiraj(KreirajKorisnikaRequestModel model)
        {
            model.KorisnickoIme = model.KorisnickoIme.Trim().ToLower();

            //Provjeri da li je korisničko ime zauzeto
            if (context.Users.FirstOrDefault(x => x.UserName == model.KorisnickoIme) != null)
            {
                return(Error("Korisničko ime zauzeto."));
            }

            var trenutni = authService.TrenutniKorisnik();

            // Provjeriti pravo dodavanja uloge
            var dozvoljeneUloge = pravoUpravljanjaKorisnikomService.VratiPravaUpravljanjaKorisnikom(trenutni.TrenutnaUlogaId);

            if (model.Uloge.Any(a => dozvoljeneUloge.All(doz => doz.UlogaUpravljanogId != a.VrstaUlogeId)))
            {
                return(Error("Nemate prava da dodate korisnika sa tim ulogama"));
            }

            var korisnik = new IdentityKorisnik
            {
                UserName           = model.KorisnickoIme,
                NormalizedUserName = model.KorisnickoIme.ToUpper(),
                Email           = model.Email,
                EmailConfirmed  = false,
                NormalizedEmail = model.Email.ToUpper(),
                PunoIme         = model.PunoIme,
                Roles           = new List <KorisnikUloga>(),
                SecurityStamp   = new Guid().ToString()
            };

            var passwordHasher = new PasswordHasher <IdentityKorisnik>();
            var hashed         = passwordHasher.HashPassword(korisnik, model.Lozinka);

            korisnik.PasswordHash = hashed;
            var userStore = new UserStore <IdentityKorisnik, Entities.Models.Korisnik.Uloga, Context, int, IdentityUserClaim <int>, KorisnikUloga, IdentityUserLogin <int>, IdentityUserToken <int>, IdentityRoleClaim <int> >(context);
            await userStore.CreateAsync(korisnik);

            SaveChanges(context);

            foreach (var uloga in model.Uloge)
            {
                var korisnikUloga = new KorisnikUloga
                {
                    RoleId = uloga.VrstaUlogeId,
                    UserId = korisnik.Id,
                    KorisnikUlogaDodatnaInformacija = new List <KorisnikUlogaDodatnaInformacija>()
                };

                context.UserRoles.Add(korisnikUloga);
            }

            SaveChanges(context);

            return(VratiKorisnikaPoKorisnickomImenu(korisnik.UserName));
        }
Beispiel #4
0
        public Model.Korisnik Insert(KorisnikInsertRequest request)
        {
            var    entity = _mapper.Map <Database.Korisnik>(request);
            string _username;

            entity.Username = GenerateUsername(entity.Ime, entity.Prezime);
            string _password;

            if (request.Uloga == "Clan")
            {
                _password = RandomPass();
                _username = GenerateUsername(entity.Ime, entity.Prezime);
            }
            else
            {
                _password = request.Password;
                _username = request.Username;
            }
            entity.PasswordSalt = GenerateSalt();
            entity.PasswordHash = GenerateHash(entity.PasswordSalt, _password);
            entity.Username     = _username;
            _context.Korisnik.Add(entity);
            _context.SaveChanges();
            var korisnikUloga = new KorisnikUloga
            {
                KorisnikId   = entity.Id,
                UlogaId      = _context.Uloga.Where(x => x.Naziv == request.Uloga).Select(x => x.Id).SingleOrDefault(),
                DatumIzmjene = DateTime.Today
            };

            if (request.Uloga == "Clan")
            {
                MailData mailData = new MailData
                {
                    SmtpServer = _config.GetValue <string>("MailData:SmtpServer"),
                    Port       = _config.GetValue <int>("MailData:Port"),
                    Sender     = _config.GetValue <string>("MailData:Sender"),
                    UserName   = _config.GetValue <string>("MailData:UserName"),
                    Password   = _config.GetValue <string>("MailData:Password")
                };
                string       emailSubject = "Login podaci";
                string       emailBody    = "Username: "******"    Password:  " + _password;
                EmailMessage emailMessage = Email.CreateEmailMessage(mailData.Sender, entity.Email, emailSubject, emailBody);
                MimeMessage  mimeMessage  = Email.CreateMimeMessage(emailMessage);
                Email.Send(mimeMessage, mailData);
            }
            _context.KorisnikUloga.Add(korisnikUloga);
            _context.SaveChanges();
            return(_mapper.Map <Model.Korisnik>(entity));
        }
Beispiel #5
0
 public JsonResult Delete(int KorisnikUlogaID)
 {
     try
     {
         using (var context = new ProdavnicaContext())
         {
             KorisnikUloga korisnikUloga = context.KorisnikUlogas.Find(KorisnikUlogaID);
             context.KorisnikUlogas.Remove(korisnikUloga);
             context.SaveChanges();
             return(Json(new { Result = "OK" }));
         }
     }
     catch (Exception ex)
     {
         return(Json(new { Result = "ERROR", Message = ex.Message }));
     }
 }
Beispiel #6
0
        public async Task <bool> CreateKorisnik(RegisterParameters registerParameters, Uloge uloga, int razredId = -1)
        {
            var user = new IdentityUser {
                UserName = registerParameters.Email, Email = registerParameters.Email
            };
            var result = await _userManager.CreateAsync(user, registerParameters.Password);

            //Add korisnik to the database
            _context.Add(new Korisnik
            {
                Ime          = registerParameters.Ime,
                Prezime      = registerParameters.Prezime,
                Spol         = registerParameters.Spol,
                EmailAdresa  = registerParameters.Email,
                DatumRođenja = registerParameters.DoB,
                User         = user,
                IdRazred     = razredId != -1 ? razredId : (int?)null
            });

            var userCreated = await _context.SaveChangesAsync(); //should be 1?

            //Get the createdUser id
            var newUserId = _context.Korisnik.First(k => k.EmailAdresa == registerParameters.Email).IdKorisnik;

            //Create KorisnikUloga with the User and Uloga pair
            var korisnikUloga = new KorisnikUloga {
                IdKorisnik = newUserId, IdUloga = (int)uloga
            };

            _context.Add(korisnikUloga);

            var ulogaCreated = await _context.SaveChangesAsync(); // should be 1?

            //Add the respected claims to the users for pages authentication and authorization
            var ulogaString = Enum.GetName(typeof(Uloge), uloga);
            await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.Role, ulogaString));

            if (userCreated == 1 && ulogaCreated == 1)
            {
                return(true);
            }

            return(false);
        }
        public JsonResult CreateKorisnikUloga(KorisnikUlogaViewModel kUlogaVM)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(Json(new { Result = "ERROR", Message = "Form is not valid! Please correct it and try again." }));
                }

                using (var context = new ProdavnicaContext())
                {
                    //onemoguciti dodavanje vise uloga za istog korisnika
                    var korisnik = context.Korisniks.Find(kUlogaVM.KorisnikId);                     //u korisnik trazim kuloga.korisnikId
                    var ima      = korisnik.KorisnikUlogas.Any(k => k.UlogaId == kUlogaVM.UlogaId); //ako postoji ta uloga u ulogama
                    if (ima)
                    {
                        return(Json(new { Result = "ERROR", Message = "Uloga vec postoji za izabranog korisnika!" }));
                    }


                    KorisnikUloga korisnikUloga = new KorisnikUloga()
                    {
                        KorisnikId      = kUlogaVM.KorisnikId,
                        UlogaId         = kUlogaVM.UlogaId,
                        KorisnikUlogaId = kUlogaVM.KorisnikUlogaId
                    };
                    context.KorisnikUlogas.Add(korisnikUloga);
                    context.SaveChanges();

                    kUlogaVM.KorisnikUlogaId = korisnikUloga.KorisnikUlogaId;

                    return(Json(new { Result = "OK", Record = kUlogaVM }));
                }
            }
            catch (Exception ex)
            {
                return(Json(new { Result = "ERROR", Message = ex.Message }));
            }
        }
Beispiel #8
0
        public ServiceResult <KorisnikModel> Kreiraj(KreirajKorisnikaRequestModel model)
        {
            model.KorisnickoIme = model.KorisnickoIme.Trim().ToLower();

            if (model.Uloge == null || !model.Uloge.Any()) //null ili prazna lista
            {
                return(Error("Ne može se dodati korisnik bez definisane uloge."));
            }

            //Provjeri da li je korisničko ime zauzeto
            if (context.Korisnici.Include(k => k.KorisnikUloge).FirstOrDefault(x => x.KorisnickoIme == model.KorisnickoIme) != null)
            {
                return(Error("Korisničko ime zauzeto."));
            }

            var trenutni = authService.TrenutniKorisnik();

            // Provjeriti pravo dodavanja uloge
            var dozvoljeneUloge = pravoUpravljanjaKorisnikomService.VratiPravaUpravljanjaKorisnikom(trenutni.TrenutnaUlogaId);

            if (model.Uloge.Any(a => dozvoljeneUloge.All(doz => doz.UlogaUpravljanogId != a.VrstaUlogeId)))
            {
                return(Error("Nemate prava da dodate korisnika sa tim ulogama"));
            }

            var hashProvider = Scope.Resolve <IHashProvider>();
            var tajna        = hashProvider.HashPassword(model.Lozinka);

            Entities.Models.Korisnik.Korisnik korisnik = new Entities.Models.Korisnik.Korisnik
            {
                KorisnickoIme  = model.KorisnickoIme,
                Tajna          = tajna,
                DatumKreiranja = DateTime.Now,
                Email          = model.Email,
                PunoIme        = model.PunoIme,
                PolId          = model.PolId,
                KorisnikUloge  = new List <KorisnikUloga>(),
                Onemogucen     = false,
                Jezik          = (int)Jezici.bs
            };

            try
            {
                foreach (var uloga in model.Uloge)
                {
                    var korisnikUloga = new KorisnikUloga
                    {
                        UlogaId = uloga.VrstaUlogeId,
                        KorisnikUlogaDodatnaInformacija = new List <KorisnikUlogaDodatnaInformacija>()
                    };

                    korisnik.KorisnikUloge.Add(korisnikUloga);
                }
                context.Add(korisnik);


                //SaveChanges(context);



                var korisnikUloge = korisnik.KorisnikUloge.ToList();

                var korisnikUlogaNajveca = korisnikUloge[0].KorisnikUlogaId;

                //provjera koja vrsta uloge se dodaje
                var vrijednostUAplikaciji = context.Uloge.Where(u => u.Id == model.Uloge[0].VrstaUlogeId).Select(u => u.VrijednostUAplikaciji).FirstOrDefault();

                if (vrijednostUAplikaciji == (int)Uloga.Support)
                {
                    var kategorije = new List <int>();

                    foreach (var kat in model.Kategorije)
                    {
                        kategorije.Add(kat.ZahtjevKategorijaId);
                    }
                    var projekti = context.ZahtjevKategorije.Where(z => kategorije.Contains(z.Id)).Select(z => z.DioProjekta.ProjekatId).Distinct();

                    foreach (var projekat in projekti)
                    {
                        var korisnikProjekat = new KorisnikProjekat
                        {
                            ProjekatId      = projekat,
                            KorisnikUlogaId = korisnikUlogaNajveca
                        };

                        context.KorisnikProjekti.Add(korisnikProjekat);
                    }
                    foreach (var kategorija in kategorije)
                    {
                        var zahtjevKategorija = new KorisnikKategorija
                        {
                            KorisnickoIme       = model.KorisnickoIme,
                            ZahtjevKategorijaId = kategorija
                        };

                        context.KorisnikKategorije.Add(zahtjevKategorija);
                    }
                }
                else if (vrijednostUAplikaciji != (int)Uloga.Administrator)
                {
                    var korisnikProjekti = context.KorisnikProjekti.ToList();

                    foreach (var projekat in model.Projekti)
                    {
                        var korisnikProjekat = new KorisnikProjekat
                        {
                            ProjekatId      = projekat.ProjekatId,
                            KorisnikUlogaId = korisnikUlogaNajveca
                        };

                        context.KorisnikProjekti.Add(korisnikProjekat);
                    }
                }


                SaveChanges(context);
            }
            catch (Exception e)
            {
                return(Error("Greška", false));
            }
            return(VratiKorisnikaPoKorisnickomImenu(korisnik.KorisnickoIme));
        }
Beispiel #9
0
        public ServiceResult <KorisnikModel> AzurirajKorisnika(String korisnickoIme, AzurirajKorisnikaRequestModel 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());
            }

            var trenutni = authService.TrenutniKorisnik();

            // Provjeriti pravo dodavanja uloge
            var dozvoljeneUloge = pravoUpravljanjaKorisnikomService.VratiPravaUpravljanjaKorisnikom(trenutni.TrenutnaUlogaId);

            if (model.Uloge.Any(a => dozvoljeneUloge.All(doz => doz.UlogaUpravljanogId != a.VrstaUlogeId)))
            {
                return(Error("Nemate prava izmjene korisnika sa tim ulogama"));
            }

            var stareUloge = context.UserRoles
                             .Include(x => x.KorisnikUlogaDodatnaInformacija)
                             .Where(a => a.UserId == korisnik.Id).ToList();

            // Koristi se transakcija zato sto se brisu uloge pa se onda ponovo dodaju
            using (var transaction = context.Database.BeginTransaction())
            {
                try
                {
                    // Obirisi uloge i dodatne informacije
                    foreach (var uloga in stareUloge)
                    {
                        context.KorisnikUlogaDodatneInformacije.RemoveRange(uloga.KorisnikUlogaDodatnaInformacija);
                    }
                    context.UserRoles.RemoveRange(stareUloge);

                    context.SaveChanges();

                    foreach (var novaUloga in model.Uloge)
                    {
                        var nova = new KorisnikUloga
                        {
                            RoleId = novaUloga.VrstaUlogeId,
                            UserId = korisnik.Id,
                            KorisnikUlogaDodatnaInformacija = new List <KorisnikUlogaDodatnaInformacija>()
                        };

                        context.UserRoles.Add(nova);
                    }

                    // postavi vrijednosti
                    korisnik.Email   = model.Email;
                    korisnik.PunoIme = model.PunoIme;

                    SaveChanges(context);

                    if (!string.IsNullOrEmpty(model.Lozinka) && model.Lozinka.Length >= 6)
                    {
                        PostaviLozinku(korisnickoIme, model.Lozinka);
                    }

                    transaction.Commit();
                }
                catch (Exception)
                {
                    return(Error("Greška", false));
                }
            }

            // vrati azuriranog korisnika
            return(VratiKorisnikaPoKorisnickomImenu(korisnickoIme));
        }
Beispiel #10
0
 public Autorizacija(KorisnikUloga uloga)
 {
     Uloga = uloga;
 }