public async Task <UserEnvelope> Handle(Command message, CancellationToken cancellationToken) { if (await _context.Persons.Where(x => x.UserName == message.User.Username).AnyAsync(cancellationToken)) { throw new RestException(HttpStatusCode.BadRequest); } if (await _context.Persons.Where(x => x.Email == message.User.Email).AnyAsync(cancellationToken)) { throw new RestException(HttpStatusCode.BadRequest); } var salt = Guid.NewGuid().ToByteArray(); var person = new Person { UserName = message.User.Username, Email = message.User.Email, Hash = _passwordHasher.Hash(message.User.Password, salt), Salt = salt }; _context.Persons.Add(person); await _context.SaveChangesAsync(cancellationToken); var user = _mapper.Map <Domain.Person, User>(person); user.Token = await _jwtTokenGenerator.CreateToken(person.UserName); return(new UserEnvelope(user)); }
public async Task <UserEnvelope> Handle(Command message, CancellationToken cancellationToken) { var currentUsername = _currentUserAccessor.GetCurrentUsername(); var person = await _context.Persons.Where(x => x.UserName == currentUsername).FirstOrDefaultAsync(cancellationToken); person.UserName = message.User.UserName ?? person.UserName; person.Email = message.User.Email ?? person.Email; person.Image = message.User.Image ?? person.Image; if (!string.IsNullOrWhiteSpace(message.User.Password)) { var salt = Guid.NewGuid().ToByteArray(); person.Hash = _passwordHasher.Hash(message.User.Password, salt); person.Salt = salt; } await _context.SaveChangesAsync(cancellationToken); return(new UserEnvelope(_mapper.Map <Domain.Person, User>(person))); }