예제 #1
0
        public async Task <IActionResult> Procitano([FromBody] StringModel model)
        {
            ApplicationUser user = await _userManager.GetUserAsync(HttpContext.User);

            Guid idRazg;
            var  flag = Guid.TryParse(model.Value, out idRazg);

            if (flag == false)
            {
                return(BadRequest());
            }
            KorisnikUrazgovoru k = _ctx.KorisnikUrazgovoru.Where(k => k.IdKorisnik == user.Id && k.IdRazgovor == idRazg).SingleOrDefault();

            if (k == null)
            {
                return(NotFound());
            }
            k.Procitano = true;
            _ctx.SaveChanges();
            var neprocitane = _ctx.Razgovor.Where(r => r.KorisnikUrazgovoru.Where(k => k.IdKorisnik == user.Id && k.Procitano == false).Count() > 0).Select(r => r.Id.GetHashCode()).ToList();
            await _hubContext.Clients.User(user.Id.ToString()).SendAsync("Neprocitane", neprocitane);

            var m = new StringModel {
                Value = "Ok"
            };

            return(Ok(m));
        }
예제 #2
0
        public async Task <IActionResult> Index(IndexViewModel model)
        {
            ApplicationUser user = await _userManager.GetUserAsync(HttpContext.User);

            bool mod = isMod(user.Id);

            if (!mod)
            {
                return(RedirectToAction("Prava", "Zbor"));
            }
            if (model.Novi.Naziv.Trim().Equals(""))
            {
                ModelState.AddModelError("Naziv", "Naziv je obavezan");
            }
            if (model.Novi.Opis.Trim().Equals(""))
            {
                ModelState.AddModelError("Opis", "Opis je obavezan");
            }
            if (_ctx.Forum.Where(f => f.Naziv.Equals(model.Novi.Naziv)).SingleOrDefault() != null)
            {
                ModelState.AddModelError("Opis", "Podforum ovog naziva već postoji.");
            }
            if (ModelState.IsValid)
            {
                model.Novi.Id = Guid.NewGuid();
                _ctx.Forum.Add(model.Novi);
                _ctx.SaveChanges();
                return(RedirectToAction("Index"));
            }
            model.KategorijaForuma = _ctx.KategorijaForuma.Include(k => k.Forum).ThenInclude(f => f.Tema).OrderBy(k => k.Redoslijed).ToList();
            return(View(model));
        }
예제 #3
0
        public async Task <IActionResult> Uredi([FromBody] PretragaModel model)
        {
            ApplicationUser user = await _userManager.GetUserAsync(HttpContext.User);

            _ctx.Korisnik.Find(user.Id).Opis = model.Tekst;
            _ctx.SaveChanges();
            return(Ok());
        }
예제 #4
0
        public async Task Procitano(Guid idRazg)
        {
            var user             = new { Id = Guid.Parse(Context.User.Claims.First(i => i.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier").Value) };
            KorisnikUrazgovoru k = _ctx.KorisnikUrazgovoru.Where(k => k.IdKorisnik == user.Id && k.IdRazgovor == idRazg).SingleOrDefault();

            k.Procitano = true;
            _ctx.SaveChanges();
            await NeprocitanePoruke();

            await Clients.User(user.Id.ToString()).SendAsync("ProcitanaPoruka", idRazg);
        }
예제 #5
0
        public async Task <IActionResult> RegisterApi([FromBody] RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                    //var callbackUrl = Url.EmailConfirmationLink(user.Id, code, Request.Scheme);
                    //await _emailSender.SendEmailConfirmationAsync(model.Email, callbackUrl);

                    //await _signInManager.SignInAsync(user, isPersistent: false);
                    _logger.LogInformation("User created a new account with password.");

                    Korisnik k = new Korisnik();
                    k.Id            = user.Id;
                    k.Ime           = model.Ime;
                    k.Prezime       = model.Prezime;
                    k.Opis          = model.Opis;
                    k.IdSlika       = Guid.Empty;
                    k.DatumRodjenja = Convert.ToDateTime(model.DatumRodjenja);
                    _ctx.Korisnik.Add(k);
                    _ctx.SaveChanges();



                    return(Ok());
                }
                AddErrors(result);
            }
            var poruke = "";

            foreach (var modelState in ModelState.Values)
            {
                foreach (var error in modelState.Errors)
                {
                    poruke += error.ErrorMessage + "\n";
                }
            }
            // If we got this far, something failed, redisplay form
            return(BadRequest(poruke));
        }
예제 #6
0
        public async Task <ApplicationUser> Authenticate(string username, string password)
        {
            var user = await _userManager.FindByNameAsync(username);

            var valid = await _userManager.CheckPasswordAsync(user, password);

            // return null if user not found
            if (!valid)
            {
                return(null);
            }

            // authentication successful so generate jwt token
            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes(_appSettings.Secret);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.Name, username),
                    new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())
                }),
                Expires            = DateTime.UtcNow.AddDays(7),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);

            user.Token = tokenHandler.WriteToken(token);
            await _userManager.UpdateAsync(user);

            _ctx.SaveChanges();
            return(user);
        }
예제 #7
0
        public async Task <IActionResult> Objavi([FromBody] StringModel model)
        {
            ApplicationUser user = await _userManager.GetUserAsync(HttpContext.User);

            Guid idRep;
            var  flag = Guid.TryParse(model.Value, out idRep);

            if (flag == false)
            {
                return(BadRequest());
            }
            //provjera usera bla bla
            var d = _ctx.RepozitorijKorisnik.Find(idRep);

            if (d == null)
            {
                return(NotFound());
            }
            if (d.IdKorisnik != user.Id)
            {
                return(Forbid());
            }
            d.Privatno = false;
            _ctx.SaveChanges();
            var m = new StringModel {
                Value = "Ok"
            };

            return(Ok(m));
        }