Ejemplo n.º 1
0
            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));
            }
Ejemplo n.º 2
0
Archivo: Edit.cs Proyecto: f1nzer/yapp
            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)));
            }