public async Task <ActionResult <UserDto> > Register(LoginRegisterDto registerData) { var usersData = await System.IO.File.ReadAllTextAsync("Data/users.json"); var users = JsonSerializer.Deserialize <List <User> >(usersData); if (users.Find(x => x.Email == registerData.Email) != null) { return(BadRequest("Email already exists")); } var user = new User { Id = users.Max(u => u.Id) + 1, Email = registerData.Email, Password = registerData.Password, Created = DateTime.Now }; users.Add(user); await System.IO.File.WriteAllTextAsync("Data/users.json", JsonSerializer.Serialize(users)); return(new UserDto { Id = user.Id, Email = user.Email, Created = DateTime.Now, Token = _tokenService.CreateToken(user) }); }
public async Task <ActionResult <LoginResponseDto> > Login([FromBody] LoginRegisterDto model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = await _userService.Login(model); if (user == null) { return(BadRequest("Unable to login")); } var token = GenerateToken(user.User); var loginResult = new LoginResponseDto(); loginResult.Token = new JwtSecurityTokenHandler().WriteToken(token); loginResult.User = user.User; loginResult.CreatedDebates = user.CreatedDebates; loginResult.ParticipatingDebates = user.ParticipatingDebates; return(Ok(loginResult)); }
public async Task <bool> Register(LoginRegisterDto model) { // This may need to be refactored, as it does not specify whyit failed var userExists = await _context.Users.AnyAsync(u => u.Email == model.Email); if (userExists) { return(false); } // Make a new user object User newUser = new User(); newUser.Email = model.Email; newUser.Password = BCrypt.Net.BCrypt.EnhancedHashPassword(model.Password, 12); var profile = new Profile(); profile.User = newUser; profile.Username = newUser.Email.Split("@")[0]; try { // Ensure user is created first await _context.Users.AddAsync(newUser); await _context.Profiles.AddAsync(profile); await _context.SaveChangesAsync(); } catch (Exception ex) { Console.Write(ex); return(false); } return(true); }
public async Task <UserServiceLoginResponseDto> Login(LoginRegisterDto model) { var user = await _context.Users .Include(u => u.Profile) .Include(u => u.Group) .Include(u => u.Rank) .SingleOrDefaultAsync(u => u.Email == model.Email); if (user == null) { return(null); } var result = BCrypt.Net.BCrypt.EnhancedVerify(model.Password, user.Password); if (!result) { return(null); } var userCreatedDebates = await _context.Debates.Where(d => d.CreatedById == user.Id).ToListAsync(); var userParticipatingDebates = await _context.Debates.Where(d => d.CreatedById != user.Id).Include(d => d.Comments).Where(d => d.Comments.Any(c => c.CreatedBy == user)).ToListAsync(); var serviceResponse = new UserServiceLoginResponseDto(); serviceResponse.User = user; serviceResponse.CreatedDebates = userCreatedDebates; serviceResponse.ParticipatingDebates = userParticipatingDebates; return(serviceResponse); }
private async Task <bool> CreateDefaultUser() { var register = new LoginRegisterDto(); register.Email = "*****@*****.**"; register.Password = "******"; var service = new UserService(_context); return(await service.Register(register)); }
public async Task UserService_ShouldCreate_NewUser() { var service = new UserService(_context); var register = new LoginRegisterDto(); register.Email = "*****@*****.**"; register.Password = "******"; var userWasCreated = await service.Register(register); Assert.Equal(true, userWasCreated); }
public async Task UserService_ShouldNotCreate_DuplicateUser() { var service = new UserService(_context); var register = new LoginRegisterDto(); register.Email = "*****@*****.**"; register.Password = "******"; var userWasCreated = await service.Register(register); Assert.Equal(false, userWasCreated); }
public async Task UserController_ShouldNotLogin_IfUserDoesNotExist() { var login = new LoginRegisterDto(); login.Email = "*****@*****.**"; login.Password = "******"; var response = await _client.PostAsJsonAsync("/auth/login", login); Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public async Task UserController_ShouldLogin_IfUserExists() { var login = new LoginRegisterDto(); login.Email = "*****@*****.**"; login.Password = "******"; var response = await _client.PostAsJsonAsync("/auth/login", login); Assert.Equal(HttpStatusCode.OK, response.StatusCode); }
public async Task <ActionResult> Register([FromBody] LoginRegisterDto model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var userRegister = await _userService.Register(model); if (!userRegister) { return(BadRequest("Unable to register user")); } return(Ok(userRegister)); }
private async Task <LoginResponseDto> GetDefaultUser() { var login = new LoginRegisterDto(); login.Email = "*****@*****.**"; login.Password = "******"; var response = await _client.PostAsJsonAsync("/auth/login", login); var responseString = await response.Content.ReadAsStringAsync(); var loginResponse = JsonConvert.DeserializeObject <LoginResponseDto>(responseString); Console.WriteLine($"login response: {loginResponse.User.Password}"); return(loginResponse); }
public async Task <ActionResult <UserDto> > Login(LoginRegisterDto loginData) { var userData = await System.IO.File.ReadAllTextAsync("Data/users.json"); var users = JsonSerializer.Deserialize <List <User> >(userData); var user = users.Find(x => x.Email == loginData.Email && x.Password == loginData.Password); if (user == null) { return(Unauthorized("Username or password is incorrect")); } return(new UserDto { Id = user.Id, Email = user.Email, Created = DateTime.Now, Token = _tokenService.CreateToken(user) }); }
public async Task <IActionResult> Login(LoginRegisterDto loginRegisterDto) { var userFromRepo = await _repo.Login(loginRegisterDto.UserName, loginRegisterDto.Password); if (userFromRepo == null) { return(Unauthorized()); } var claims = new [] { new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()), new Claim(ClaimTypes.Name, userFromRepo.Username) }; var key = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes(_iconfig.GetSection("AppSettings:Token").Value)); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); var tokenDescriptor = new SecurityTokenDescriptor() { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(1), SigningCredentials = creds }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); var user = _mapper.Map <UserForListDto>(userFromRepo); return(Ok(new { token = tokenHandler.WriteToken(token), user })); }