Esempio n. 1
0
        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)
            });
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        private async Task <bool> CreateDefaultUser()
        {
            var register = new LoginRegisterDto();

            register.Email    = "*****@*****.**";
            register.Password = "******";
            var service = new UserService(_context);

            return(await service.Register(register));
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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));
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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)
            });
        }
Esempio n. 13
0
        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
            }));
        }