コード例 #1
0
        public async Task <TokenResponseDTO> Register(RegistrationRequestDTO data)
        {
            var user = _userRepository
                       .FindByPredicate(u => u.Email == data.Email)
                       .FirstOrDefault();

            if (user != null)
            {
                throw new EntityAlreadyExistsException("User already exist");
            }

            var newUser = _mapper.Map <ApplicationUser>(data);

            newUser.Role     = "User";
            newUser.Password = _hasher.Hash(data.Password);

            await _userRepository.AddAsync(newUser);

            var tokenDescriptor = GetTokenDescriptor(newUser);

            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(new TokenResponseDTO {
                Token = tokenHandler.WriteToken(token)
            });
        }
コード例 #2
0
        public Task <TokenResponseDTO> Authenticate(RegistrationRequestDTO data)
        {
            var user = _userRepository
                       .FindByPredicate(u => u.Email == data.Email && _hasher.Check(u.Password, data.Password))
                       .FirstOrDefault();

            if (user == null)
            {
                throw new InvalidAuthenticateException("Wrong login or password");
            }

            var tokenDescriptor = GetTokenDescriptor(user);

            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(Task.Run(() => new TokenResponseDTO {
                Token = tokenHandler.WriteToken(token)
            }));
        }