public async Task <IActionResult> CreateSubscription([FromBody] string publisherId) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = (User)HttpContext.Items["user"]; if (_context.Subscriptions.Any(sub => sub.PublisherId == publisherId && sub.UserId == user.Id)) { return(Conflict()); } var subscription = new Subscription() { PublisherId = publisherId, UserId = user.Id, CreatedAt = DateTime.UtcNow }; _context.Subscriptions.Add(subscription); await _context.SaveChangesAsync(); return(new StatusCodeResult(StatusCodes.Status201Created)); }
public async Task <IActionResult> CreateUser([FromBody] UserInputModel input) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (await _context.Users.AnyAsync(x => x.Username == input.Username)) { return(Conflict()); } var user = new User() { Username = input.Username, Password = _authService.HashPassword(input.Password), CreatedAt = DateTime.UtcNow }; _authService.SetOrRefreshAuthenticationToken(user); _context.Users.Add(user); await _context.SaveChangesAsync(); var model = new UserViewModel() { Id = user.Id, Username = user.Username, AuthenticationToken = user.AuthenticationToken }; return(Created("", model)); }
public async Task <IActionResult> Authenticate([FromBody] UserInputModel input) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = await _context.Users.SingleOrDefaultAsync(x => x.Username == input.Username); if (user == null || !_authService.AuthenticateUser(user, input.Password)) { return(Unauthorized()); } _authService.SetOrRefreshAuthenticationToken(user); await _context.SaveChangesAsync(); var model = new UserViewModel() { Id = user.Id, Username = user.Username, AuthenticationToken = user.AuthenticationToken }; return(Ok(model)); }