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 })); } }
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)); }
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)); }
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 })); } }
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 })); } }
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)); }
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)); }
public Autorizacija(KorisnikUloga uloga) { Uloga = uloga; }