示例#1
0
        public async Task <bool> UpdateProfilePictureAsync(UpdateProfilePictureCommand command)
        {
            var user = await _userManager.FindByNameAsync(command.Username);

            var claims = await _userManager.GetClaimsAsync(user);

            IdentityResult result;
            var            pictureClaim    = claims.Of(JwtClaimTypes.Picture);
            var            newPictureClaim = new Claim(JwtClaimTypes.Picture, command.Picture);

            if (pictureClaim != null)
            {
                result = await _userManager.ReplaceClaimAsync(user, pictureClaim, newPictureClaim);
            }
            else
            {
                result = await _userManager.AddClaimAsync(user, newPictureClaim);
            }

            if (result.Succeeded)
            {
                return(true);
            }

            foreach (var error in result.Errors)
            {
                await _bus.RaiseEvent(new DomainNotification(result.ToString(), error.Description));
            }

            return(false);
        }
示例#2
0
        public async Task <bool> UpdateProfilePictureAsync(UpdateProfilePictureCommand command)
        {
            var user = await _userManager.FindByIdAsync(command.Id.ToString());

            user.Picture = command.Picture;


            var result = await _userManager.UpdateAsync(user);

            if (result.Succeeded)
            {
                var claims = await _userManager.GetClaimsAsync(user);
                await AddOrUpdateClaimAsync(user, claims, "picture", user.Picture);

                return(true);
            }


            foreach (var error in result.Errors)
            {
                await _bus.RaiseEvent(new DomainNotification(result.ToString(), error.Description));
            }

            return(false);
        }
示例#3
0
        public async Task Handle(UpdateProfilePictureCommand request, CancellationToken cancellationToken)
        {
            if (!request.IsValid())
            {
                NotifyValidationErrors(request);
                return;
            }

            var result = await _userService.UpdateProfilePictureAsync(request);

            if (result)
            {
                await Bus.RaiseEvent(new ProfilePictureUpdatedEvent(request.Id.Value, request.Picture));
            }
        }
        public async Task <IActionResult> UploadProfilePicture(IFormFile file)
        {
            var updateCommand = new UpdateProfilePictureCommand
            {
                UserId = HttpContext.GetLoggedUserId(),
            };

            using (var stream = new MemoryStream())
            {
                await file.CopyToAsync(stream);

                updateCommand.ProfilePicture = stream.ToArray();
                updateCommand.FileType       = "." + file.FileName.Split('.')[file.FileName.Split('.').Length - 1];
            }

            var response = await _mediator.Send(updateCommand);

            return(Ok(BaseResponse.Ok(response.Message)));
        }
示例#5
0
        public async Task <IActionResult> UpdateProfilePicture([FromRoute] Guid id, [FromForm] UpdateProfilePictureCommand command)
        {
            try
            {
                command.Id = id;

                if (!ModelState.IsValid)
                {
                    return(base.BadRequest(ModelState));
                }

                var result = await _mediator.Send <UpdateProfilePictureCommandResult>(command);

                return(base.Ok(result));
            }
            catch (NotFoundException)
            {
                return(base.NotFound());
            }
        }