예제 #1
0
        public async Task <ActionResult> ChangeUserEmail(long id, ChangeUserEmailModel changeUserEmailModel)
        {
            var currentUserId = long.Parse(User.Identity.Name);

            if (id != currentUserId)
            {
                return(Forbid());
            }

            if (id != changeUserEmailModel.Id)
            {
                return(BadRequest());
            }

            var user = await _context.Users.FindAsync(id);

            if (!_userService.VerifyPassword(user, changeUserEmailModel.Password))
            {
                return(BadRequest(new { message = "Neteisingas slaptažodis" }));
            }
            _mapper.Map(changeUserEmailModel, user);
            await _context.SaveChangesAsync();

            return(NoContent());
        }
예제 #2
0
        /// <inheritdoc/>
        public async Task ChangeUserEmailAsync(Guid id, ChangeUserEmailModel model, CancellationToken cancellationToken)
        {
            using (var scope = _serviceProvider.CreateScope())
                using (var context = scope.ServiceProvider.GetRequiredService <DatabaseContext>())
                {
                    var user = await context.Users.FirstOrDefaultAsync(x => x.Id == id, cancellationToken)
                               .ConfigureAwait(false);

                    if (user == null)
                    {
                        throw new ArgumentException("User not found");
                    }

                    if (model.NewEmail == user.Email || model.OldEmail == model.NewEmail)
                    {
                        throw new InvalidDataException("Emails are equal.");
                    }

                    user.Email = model.NewEmail;
                    await context.SaveChangesAsync(cancellationToken).ConfigureAwait(false);
                }
        }
예제 #3
0
 public async Task ChangeUserEmailAsync([FromBody] ChangeUserEmailModel model, CancellationToken cancellationToken)
 {
     await _accountService.ChangeUserEmailAsync(Guid.Parse(User.Identity.Name), model, cancellationToken).ConfigureAwait(false);
 }
예제 #4
0
 public ActionResult ChangeEmail(ChangeUserEmailModel model)
 {
     return(ValidatedCommandResult(model, new ChangeUserEmailCommand(_authenticationService.Identity, model.Password, model.NewEmail), "EmailChangeRequested"));
 }