Search in sources :

Example 1 with Role

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));
}
Also used : Role(com.objectcomputing.checkins.services.role.Role) Role(com.objectcomputing.checkins.services.role.Role) Controller(io.micronaut.http.annotation.Controller) Permission(com.objectcomputing.checkins.services.permissions.Permission) Secured(io.micronaut.security.annotation.Secured) PermissionServices(com.objectcomputing.checkins.services.permissions.PermissionServices) Authentication(io.micronaut.security.authentication.Authentication) Set(java.util.Set) MemberProfileUtils(com.objectcomputing.checkins.services.memberprofile.MemberProfileUtils) SecurityRule(io.micronaut.security.rules.SecurityRule) UUID(java.util.UUID) Collectors(java.util.stream.Collectors) List(java.util.List) Tag(io.swagger.v3.oas.annotations.tags.Tag) Nullable(io.micronaut.core.annotation.Nullable) PermissionRepository(com.objectcomputing.checkins.services.permissions.PermissionRepository) HttpResponse(io.micronaut.http.HttpResponse) MemberProfile(com.objectcomputing.checkins.services.memberprofile.MemberProfile) RoleRepository(com.objectcomputing.checkins.services.role.RoleRepository) URI(java.net.URI) RoleServices(com.objectcomputing.checkins.services.role.RoleServices) Get(io.micronaut.http.annotation.Get) MemberProfile(com.objectcomputing.checkins.services.memberprofile.MemberProfile) Permission(com.objectcomputing.checkins.services.permissions.Permission) Get(io.micronaut.http.annotation.Get)

Example 2 with Role

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;
}
Also used : Role(com.objectcomputing.checkins.services.role.Role) AlreadyExistsException(com.objectcomputing.checkins.exceptions.AlreadyExistsException) MemberProfile(com.objectcomputing.checkins.services.memberprofile.MemberProfile)

Example 3 with Role

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;
}
Also used : PermissionException(com.objectcomputing.checkins.exceptions.PermissionException) Role(com.objectcomputing.checkins.services.role.Role) BadArgException(com.objectcomputing.checkins.exceptions.BadArgException) NotFoundException(com.objectcomputing.checkins.exceptions.NotFoundException)

Example 4 with Role

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());
}
Also used : Role(com.objectcomputing.checkins.services.role.Role) MemberProfile(com.objectcomputing.checkins.services.memberprofile.MemberProfile) Test(org.junit.jupiter.api.Test)

Example 5 with Role

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());
}
Also used : Role(com.objectcomputing.checkins.services.role.Role) MemberProfile(com.objectcomputing.checkins.services.memberprofile.MemberProfile) Test(org.junit.jupiter.api.Test)

Aggregations

Role (com.objectcomputing.checkins.services.role.Role)115 MemberProfile (com.objectcomputing.checkins.services.memberprofile.MemberProfile)110 Test (org.junit.jupiter.api.Test)107 HttpClientResponseException (io.micronaut.http.client.exceptions.HttpClientResponseException)55 JsonNode (com.fasterxml.jackson.databind.JsonNode)49 CheckIn (com.objectcomputing.checkins.services.checkins.CheckIn)45 List (java.util.List)6 Permission (com.objectcomputing.checkins.services.permissions.Permission)4 PermissionServices (com.objectcomputing.checkins.services.permissions.PermissionServices)3 RoleServices (com.objectcomputing.checkins.services.role.RoleServices)3 MemberRole (com.objectcomputing.checkins.services.role.member_roles.MemberRole)3 ArrayList (java.util.ArrayList)3 Nullable (io.micronaut.core.annotation.Nullable)2 Set (java.util.Set)2 UUID (java.util.UUID)2 Collectors (java.util.stream.Collectors)2 Singleton (javax.inject.Singleton)2 Environments (com.objectcomputing.checkins.Environments)1 AlreadyExistsException (com.objectcomputing.checkins.exceptions.AlreadyExistsException)1 BadArgException (com.objectcomputing.checkins.exceptions.BadArgException)1