Пример #1
0
        public async Task UploadNewImageForUser(long userId, IFormFile image)
        {
            UserImage newUserImage = new UserImage
            {
                Extension = Path.GetExtension(image.FileName)
            };

            // Register new image
            await _databaseContext.UserImages.AddAsync(newUserImage);

            await _databaseContext.SaveChangesAsync();

            using (FileStream fileStream = File.Create(GetImagePath(newUserImage)))
            {
                await image.CopyToAsync(fileStream);
            }

            User targetUser = _databaseContext.Users.Include(user => user.Image).Single(user => user.Id == userId);

            UserImage oldUserImage = targetUser.Image;

            // Swap user image first, to ensure that foreign key constraint is not broken by removing the old image
            targetUser.ImageId = newUserImage.Id;
            await _databaseContext.SaveChangesAsync();

            if (_databaseContext.UserImages.First().Id != oldUserImage.Id)
            {
                File.Delete(GetImagePath(oldUserImage));
                _databaseContext.UserImages.Remove(oldUserImage);
                await _databaseContext.SaveChangesAsync();
            }
        }
Пример #2
0
        public async Task <IActionResult> Register([FromBody] UserCredentials userCredentials)
        {
            byte[] salt = _hashService.GenerateSalt();

            await _databaseContext.Users.AddAsync(new User
            {
                CreatedAt = DateTime.Now,
                Name      = userCredentials.Username,
                Password  = _hashService.HashPassword(userCredentials.Password, salt),
                Salt      = Convert.ToBase64String(salt)
            });

            await _databaseContext.SaveChangesAsync();

            if (_authService.Authorize(userCredentials.Username, userCredentials.Password, out ClientSession clientSession))
            {
                return(Ok(clientSession));
            }

            return(Unauthorized());
        }
Пример #3
0
        public async Task PostMessage([FromBody] Message message)
        {
            await _database.Messages.AddAsync(message);

            await _database.SaveChangesAsync();
        }