use of com.objectcomputing.checkins.services.role.Role in project check-ins by objectcomputing.
the class CurrentUserController method currentUser.
/**
* Get user details from Google authentication
*
* @param authentication {@link Authentication} or null
* @return {@link HttpResponse<CurrentUserDTO>}
*/
@Get
public HttpResponse<CurrentUserDTO> currentUser(@Nullable Authentication authentication) {
if (authentication == null) {
return HttpResponse.unauthorized();
}
String workEmail = authentication.getAttributes().get("email").toString();
String imageUrl = authentication.getAttributes().get("picture") != null ? authentication.getAttributes().get("picture").toString() : "";
String name = authentication.getAttributes().get("name").toString().trim();
String firstName = name.substring(0, name.indexOf(' '));
String lastName = name.substring(name.indexOf(' ') + 1).trim();
MemberProfile user = currentUserServices.findOrSaveUser(firstName, lastName, workEmail);
List<Permission> permissions = permissionServices.findUserPermissions(user.getId());
Set<Role> roles = roleServices.findUserRoles(user.getId());
List<String> rolesAsString = roles.stream().map(o -> o.getRole()).collect(Collectors.toList());
return HttpResponse.ok().headers(headers -> headers.location(location(user.getId()))).body(fromEntity(user, imageUrl, permissions, rolesAsString));
}
use of com.objectcomputing.checkins.services.role.Role in project check-ins by objectcomputing.
the class CurrentUserServicesImpl method saveNewUser.
private MemberProfile saveNewUser(String firstName, String lastName, String workEmail) {
MemberProfile emailProfile = memberProfileRepo.findByWorkEmail(workEmail).orElse(null);
if (emailProfile != null) {
throw new AlreadyExistsException(String.format("Email %s already exists in database", workEmail));
}
MemberProfile createdMember = memberProfileRepo.save(new MemberProfile(firstName, null, lastName, null, "", null, "", workEmail, "", null, "", null, null, null, null, null));
Optional<Role> role = roleServices.findByRole("MEMBER");
if (role.isPresent()) {
memberRoleServices.saveByIds(createdMember.getId(), role.get().getId());
} else {
Role memberRole = roleServices.save(new Role(RoleType.MEMBER.name(), "role description"));
memberRoleServices.saveByIds(createdMember.getId(), memberRole.getId());
}
return createdMember;
}
use of com.objectcomputing.checkins.services.role.Role in project check-ins by objectcomputing.
the class MemberProfileServicesImpl method deleteProfile.
@Override
public Boolean deleteProfile(@NotNull UUID id) {
if (!currentUserServices.isAdmin()) {
throw new PermissionException("Requires admin privileges");
}
MemberProfile memberProfile = memberProfileRepository.findById(id).orElse(null);
Set<Role> userRoles = (memberProfile != null) ? roleServices.findUserRoles(memberProfile.getId()) : Collections.emptySet();
if (memberProfile == null) {
throw new NotFoundException("No member profile for id");
} else if (!checkInServices.findByFields(id, null, null).isEmpty()) {
throw new BadArgException(String.format("User %s cannot be deleted since Checkin record(s) exist", MemberProfileUtils.getFullName(memberProfile)));
} else if (!memberSkillServices.findByFields(id, null).isEmpty()) {
throw new BadArgException(String.format("User %s cannot be deleted since MemberSkill record(s) exist", MemberProfileUtils.getFullName(memberProfile)));
} else if (!teamMemberServices.findByFields(null, id, null).isEmpty()) {
throw new BadArgException(String.format("User %s cannot be deleted since TeamMember record(s) exist", MemberProfileUtils.getFullName(memberProfile)));
} else if (!userRoles.isEmpty()) {
throw new BadArgException(String.format("User %s cannot be deleted since user has PDL role", MemberProfileUtils.getFullName(memberProfile)));
}
// Update PDL ID for all associated members before termination
List<MemberProfile> pdlFor = memberProfileRepository.search(null, null, null, null, null, nullSafeUUIDToString(id), null, null, null);
for (MemberProfile member : pdlFor) {
member.setPdlId(null);
memberProfileRepository.update(member);
}
memberProfileRepository.deleteById(id);
return true;
}
use of com.objectcomputing.checkins.services.role.Role in project check-ins by objectcomputing.
the class FeedbackControllerTest method testFindAllAdmin.
@Test
public void testFindAllAdmin() {
final List<Feedback> feedbacks = setupFind();
final MemberProfile admin = getMemberProfileRepository().save(mkMemberProfile("admin"));
final Role role = createAndAssignAdminRole(admin);
final HttpRequest<?> request = HttpRequest.GET("/").basicAuth(admin.getWorkEmail(), role.getRole());
final HttpResponse<List<FeedbackResponseDTO>> response = client.toBlocking().exchange(request, Argument.listOf(FeedbackResponseDTO.class));
assertNotNull(response.getBody().get());
for (FeedbackResponseDTO dto : response.getBody().get()) {
if (dto.getId().equals(feedbacks.get(0).getId())) {
assertEntityEqualsResponse(feedbacks.get(0), dto);
} else {
assertEquals(feedbacks.get(1).getId(), dto.getId());
assertEntityEqualsResponse(feedbacks.get(1), dto);
}
}
assertEquals(HttpStatus.OK, response.getStatus());
}
use of com.objectcomputing.checkins.services.role.Role in project check-ins by objectcomputing.
the class FeedbackControllerTest method testPutSucceed.
@Test
public void testPutSucceed() {
final MemberProfile alice = getMemberProfileRepository().save(mkMemberProfile("Alice"));
final MemberProfile bob = getMemberProfileRepository().save(mkMemberProfile("Bob"));
final Feedback feedback = createFeedback("Alice's feedback", bob, alice, true);
// Update by admin
final MemberProfile admin = getMemberProfileRepository().save(mkMemberProfile("admin"));
Role role = createAndAssignAdminRole(admin);
final FeedbackUpdateDTO dto = new FeedbackUpdateDTO();
dto.setId(feedback.getId());
dto.setContent("Alice's another feedback");
dto.setConfidential(false);
HttpRequest<?> request = HttpRequest.PUT("", dto).basicAuth(admin.getWorkEmail(), role.getRole());
HttpResponse<FeedbackResponseDTO> response = client.toBlocking().exchange(request, FeedbackResponseDTO.class);
assertEquals(HttpStatus.OK, response.getStatus());
assertEquals(feedback.getId(), response.body().getId());
assertEquals(dto.getContent(), response.body().getContent());
assertEquals(dto.getConfidential(), response.body().getConfidential());
// Update by owner
dto.setContent("Alice makes the feedback private again");
dto.setConfidential(true);
request = HttpRequest.PUT("", dto).basicAuth(alice.getWorkEmail(), RoleType.Constants.MEMBER_ROLE);
response = client.toBlocking().exchange(request, FeedbackResponseDTO.class);
assertEquals(HttpStatus.OK, response.getStatus());
assertEquals(dto.getId(), response.body().getId());
assertEquals(dto.getContent(), response.body().getContent());
assertEquals(dto.getConfidential(), response.body().getConfidential());
}
Aggregations