public async Task CreateUserWithOutCompanyRole() { using var helper = await new SimpleTestHelperBuilderCompanyUser().Build(); var uri = $"api/companies/{helper.Company.Id}/users"; PropertyUserLoginDTO user = GetUser("Phillip", "Schmidt", "Test123456", new List <RoleDTO>() { new RoleDTO() { Name = "Mitarbeiter" } }); var response = await helper.client.PostAsync(uri, user.ToStringContent()); var newUser = await response.Content.Parse <PropertyUserDTO>(); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); var uriUser = $"api/companies/{helper.Company.Id}/users/{newUser.User.Id}"; response = await helper.client.GetAsync(uriUser); var exists = await response.Content.Parse <PropertyUserDTO>() != null; Assert.IsTrue(exists); var signInNewUser = await SignIn(helper.client, newUser.User.Username, "Test123456"); helper.client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", signInNewUser.Token); response = await helper.client.PostAsync(uri, user.ToStringContent()); Assert.IsFalse(response.IsSuccessStatusCode); }
public async Task CreateUserTrue() { using var helper = await new SimpleTestHelperBuilderCompanyUser().Build(); var uri = $"api/companies/{helper.Company.Id}/users"; PropertyUserLoginDTO user = GetUser("Phillip", "Schmidt", "Test123456", new List <RoleDTO>() { new RoleDTO() { Name = "Mitarbeiter" } }); var response = await helper.client.PostAsync(uri, user.ToStringContent()); var newUser = await response.Content.Parse <PropertyUserDTO>(); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); var uriUser = $"api/companies/{helper.Company.Id}/users/{newUser.User.Id}"; response = await helper.client.GetAsync(uriUser); var exists = await response.Content.Parse <PropertyUserDTO>() != null; Assert.IsTrue(exists); }
public async Task CreateUserFirstNameFalse() { using var helper = await new SimpleTestHelperBuilderCompanyUser().Build(); var uri = $"api/companies/{helper.Company.Id}/users"; PropertyUserLoginDTO user = GetUser(" ", "Schmidt", "Test123456", new List <RoleDTO>() { new RoleDTO() { Name = "Mitarbeiter" } }); var response = await helper.client.PostAsync(uri, user.ToStringContent()); Assert.IsFalse(response.IsSuccessStatusCode); }
public async Task <PropertyUserDTO> CreateComapanyUserAsync(string companyId, PropertyUserLoginDTO user) { var company = await _companyRepository.GetCompanyByIdAsync(companyId); var requestUserId = _httpContextAccessor.HttpContext.User.GetUserId(); var requestUser = await GetCompanyUserAsync(companyId, requestUserId.ToString()); if (requestUser is null) { throw new HttpStatusException(400, "Der angefragte Benutzer Existiert nicht in der Firma"); } if (requestUser.Roles.FirstOrDefault(x => x.Name.Equals(Role.CompanyRole.Name)) is null) { throw new HttpStatusException(400, "Nur der Firmen Account darf einen Benutzer erstellen"); } // create new user User newUser = new User() { Firstname = user.Firstname, Lastname = user.Lastname }; // generate username newUser.Username = await _authService.GenerateUserNameAsync(newUser.Firstname, newUser.Lastname); // password hashed by BCrypt with workFactor of 11 => round about 150-300 ms depends on hardware. newUser.HashedPassword = _authService.GetHashedPassword(user.Password); // save user await _userService.CreateNewUserAsync(newUser); var roles = await GetRoleIds(user.Roles); company.Users.Add(new PropertyUser() { UserId = newUser.Id, RoleIds = roles }); await _companyRepository.UpdateAsync(company); var roleList = await _roleService.GetRolesAsync(); var roleDTOs = new List <RoleDTO>(); foreach (var roleId in roles) { roleDTOs.Add(new RoleDTO(roleList.FirstOrDefault(x => x.Id.Equals(roleId)))); } return(new PropertyUserDTO() { User = new UserDTO(newUser), Roles = roleDTOs }); }
public async Task <PropertyUserDTO> UpdateComapanyUserAsync(string companyId, string userId, PropertyUserLoginDTO user) { if (!userId.Equals(user.UserId)) { throw new HttpStatusException(400, "Die angegebene UserID stimmt nicht mit dem User Überein"); } var userToUpdate = new User() { Firstname = user.Firstname, Lastname = user.Lastname, HashedPassword = _authService.GetHashedPassword(user.Password) }; await _userService.UpdateUserAsync(new ObjectId(userId), userToUpdate); var roles = await GetRoleIds(user.Roles); var company = await _companyRepository.GetCompanyByIdAsync(companyId); var companyUser = company.Users.FirstOrDefault(x => x.UserId.Equals(userId)); if (companyUser is null) { throw new HttpStatusException(400, "Es wurde kein User mit dieser ID gefunden"); } companyUser.RoleIds = roles; await _companyRepository.UpdateAsync(company); var roleDTOs = new List <RoleDTO>(); var roleList = await _roleService.GetRolesAsync(); foreach (var roleId in roles) { roleDTOs.Add(new RoleDTO(roleList.FirstOrDefault(x => x.Id.Equals(roleId)))); } return(new PropertyUserDTO() { User = new UserDTO(userToUpdate), Roles = user.Roles }); }
public async Task <ActionResult <PropertyUserDTO> > UpdateCompanyUser([FromRoute] string companyId, string userId, PropertyUserLoginDTO user) { var updatedUser = await _companyUserService.UpdateComapanyUserAsync(companyId, userId, user); return(Ok(updatedUser)); }
public async Task <ActionResult <PropertyUserDTO> > CreateCompanyUser([FromRoute] string companyId, PropertyUserLoginDTO user) { var newUser = await _companyUserService.CreateComapanyUserAsync(companyId, user); return(Ok(newUser)); }