예제 #1
0
        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));
        }
예제 #2
0
        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));
        }