#pragma warning disable CS1998 protected override async Task <AuthenticateResult> HandleAuthenticateAsync() { if (!Request.Headers.ContainsKey("Authorization")) { return(AuthenticateResult.Fail("Missing authorization header")); } MKorisnik korisnik = null; try { var authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]); var credentialBytes = Convert.FromBase64String(authHeader.Parameter); var credentials = Encoding.UTF8.GetString(credentialBytes).Split(':'); var username = credentials[0]; var password = credentials[1]; AuthenticateRequest request = new AuthenticateRequest() { Username = username, Password = password }; korisnik = _korisniciService.Authenticate(request); } catch { return(AuthenticateResult.Fail("Invalid Authorization Header")); } if (korisnik == null) { return(AuthenticateResult.Fail("Invalid username or password")); } var claims = new List <Claim> { new Claim(ClaimTypes.NameIdentifier, korisnik.KorisnickoIme), new Claim(ClaimTypes.Email, korisnik.Email) }; foreach (var i in korisnik.KorisnikUloga) { claims.Add(new Claim(ClaimTypes.Role, i.Uloga.Naziv)); } var identity = new ClaimsIdentity(claims, Scheme.Name); var principal = new ClaimsPrincipal(identity); var ticket = new AuthenticationTicket(principal, Scheme.Name); //Thread.CurrentPrincipal = principal; return(AuthenticateResult.Success(ticket)); }
protected override async Task <AuthenticateResult> HandleAuthenticateAsync() { if (!Request.Headers.ContainsKey("Authorization")) { return(AuthenticateResult.Fail("Missing Authorization Header")); } MKorisnik user = null; try { var authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]); var credentialBytes = Convert.FromBase64String(authHeader.Parameter); var credentials = Encoding.UTF8.GetString(credentialBytes).Split(':'); var username = credentials[0]; var password = credentials[1]; user = await _userService.Authenticate(username, password); } catch { return(AuthenticateResult.Fail("Invalid Authorization Header")); } if (user == null) { return(AuthenticateResult.Fail("Invalid Username or Password")); } var claims = new List <Claim> { //claim je nesto sto mi tvrdimo da postoji new Claim(ClaimTypes.NameIdentifier, user.KorisnickoIme), new Claim(ClaimTypes.Name, user.Ime), }; foreach (var role in user.KorisnikUloga) { claims.Add(new Claim(ClaimTypes.Role, role.Uloga.Naziv)); } var identity = new ClaimsIdentity(claims, Scheme.Name); var principal = new ClaimsPrincipal(identity); var ticket = new AuthenticationTicket(principal, Scheme.Name); Thread.CurrentPrincipal = principal; return(AuthenticateResult.Success(ticket)); }
private async void btnSacuvaj_Click(object sender, EventArgs e) { var upsertKorisnik = new KorisnikUpsertRequest(); if (_UposlenikId.HasValue) { MKorisnik korisnik = null; MUposlenik uposlenik = null; var trenutniUposlenik = await _uposlenik.GetById <MUposlenik>(_UposlenikId); //ovde menjamo postojece podatke za tablu korisnik if (!IzmjenaSlike) { upsertUposlenik.Slika = _Slika; } upsertKorisnik.Id = APIService.trenutniKorisnik.Id; upsertKorisnik.Email = txtIzmenaEmail.Text; upsertKorisnik.KorisnickoIme = txtIzmenaKorisnickoIme.Text; upsertKorisnik.StaraLozinka = txtStaraLozinka.Text; upsertKorisnik.Lozinka = txtNovaLozinka.Text; if (txtStaraLozinka.Text != null && txtNovaLozinka.Text != null) { korisnik = await _korisnik.Update <MKorisnik>(APIService.trenutniKorisnik.Id, upsertKorisnik); } //izmena za tablelu uposlenik upsertUposlenik.Id = trenutniUposlenik.Id; upsertUposlenik.Ime = txtIzmenaIme.Text; upsertUposlenik.Prezime = txtIzmenaPrezime.Text; upsertUposlenik.DatumRodjenja = trenutniUposlenik.DatumRodjenja; upsertUposlenik.KorisnikId = APIService.trenutniKorisnik.Id; uposlenik = await _uposlenik.Update <MUposlenik>(_UposlenikId, upsertUposlenik); if (korisnik != null && uposlenik != null) { MessageBox.Show("Uspjesno izmjenjeni podaci!"); } else { MessageBox.Show("Doslo je do greske!"); } frmNoviUposlenik_Load(this, EventArgs.Empty); } if (ValidirajPolja()) { // dodavanje korisnickog naloga upsertKorisnik.Email = txtEmail.Text; upsertKorisnik.KorisnickoIme = txtKorisnickoIme.Text; upsertKorisnik.Lozinka = txtLozinka.Text; upsertKorisnik.PotrvrdnaLozinka = txtLozinka.Text; var noviKorisnik = await _korisnik.Insert <MKorisnik>(upsertKorisnik); //korisnik_uloga dodavanje var upsertKorisnikUloga = new KorisnikUlogaUpsertRequest(); var upsertUposlenikTip = new UTUUpsertRequest(); var tipUposlenikaId = cbTipUposlenika.SelectedValue; if (int.TryParse(tipUposlenikaId.ToString(), out int TUId)) { upsertKorisnikUloga.UlogaId = TUId; } upsertKorisnikUloga.KorisnikId = noviKorisnik.Id; await _korisnikUloga.Insert <MKorisnikUloga>(upsertKorisnikUloga); //dodavanje objekta uposlenik upsertUposlenik.Ime = txtIme.Text; upsertUposlenik.Prezime = txtPrezime.Text; upsertUposlenik.DatumRodjenja = dtpDatumRodjenja.Value; upsertUposlenik.KorisnikId = noviKorisnik.Id; var noviUposlenik = await _uposlenik.Insert <MUposlenik>(upsertUposlenik); if (noviUposlenik != null) { MessageBox.Show("Uposlenik uspjesno dodan!"); this.Close(); Parent.Reload(); } //uposlenik_tipUposlenika var TipId = cbTipUposlenika.SelectedValue; if (int.TryParse(TipId.ToString(), out int Id)) { upsertUposlenikTip.TipUposlenikaId = Id; } upsertUposlenikTip.UposlenikId = noviUposlenik.Id; await _UposlenikTip.Insert <MUposlenikTipUposlenika>(upsertUposlenikTip); } }