public async Task <IActionResult> Post([FromRoute] string userId, [FromBody] ProfileImageDto dto)
        {
            // Angefragter User wird aus der DB geladen.
            var catworkUser = await _context.CatworkUsers.SingleOrDefaultAsync(m => m.UserId == userId);

            if (catworkUser == null)
            {
                return(NotFound());
            }

            // Base64 encodiertes Bild wird in ByteArray umgewandelt
            byte[] imageByteArray = Convert.FromBase64String(dto.Base64);

            // Memorystream wird aus ByteArray erstellt und an den BlobStorageService übergeben.
            // Die URL wird in der DB gespeichert.
            using (var ms = new MemoryStream(imageByteArray))
            {
                catworkUser.ProfilePicture =
                    await _blobStorageService.WriteProfileImageToBlob(ms, userId);
            }

            _context.Update(catworkUser);
            await _context.SaveChangesAsync();

            // Die neue URL wird in den Servicebus geschrieben.
            await _serviceBusService.SendMessageAsync(catworkUser.ProfilePicture);

            return(Ok());
        }
Exemplo n.º 2
0
        public async Task <string> UpdateProfileImage(string userId, ProfileImageDto profileImageDto)
        {
            var user = await GetUserById(userId);

            if (user == null)
            {
                throw new AuthenticationException();
            }

            var uri = ImageService.SaveImage(profileImageDto.Image);

            user.ImageUri = uri ?? throw new ArgumentException("Unable to upload the image");

            var result = await _userManager.UpdateAsync(user);

            if (!result.Succeeded)
            {
                throw new ArgumentException("Failed to update");
            }

            return(await GenerateJwtToken(user));
        }
Exemplo n.º 3
0
 public async Task <IActionResult> UpdateImage([FromForm] ProfileImageDto profileImageDto)
 {
     return(await Do(async() => await _userService.UpdateProfileImage(User.Identity.GetUserId(), profileImageDto)));
 }