Search in sources :

Example 21 with User

use of ca.corefacility.bioinformatics.irida.model.user.User in project irida by phac-nml.

the class ReadAnalysisPermission method customPermissionAllowed.

/**
 * {@inheritDoc}
 */
@Override
protected boolean customPermissionAllowed(final Authentication authentication, final Analysis analysis) {
    logger.trace("Testing permission for [" + authentication + "] on analysis  [" + analysis + "]");
    final User u = userRepository.loadUserByUsername(authentication.getName());
    final AnalysisSubmission analysisSubmission = analysisSubmissionRepository.findByAnalysis(analysis);
    if (analysisSubmission.getSubmitter().equals(u)) {
        logger.trace("Permission GRANTED for [" + authentication + "] on analysis submission [" + analysisSubmission + "]");
        return true;
    }
    logger.trace("Permission DENIED for [" + authentication + "] on analysis submission [" + analysisSubmission + "]");
    return false;
}
Also used : User(ca.corefacility.bioinformatics.irida.model.user.User) AnalysisSubmission(ca.corefacility.bioinformatics.irida.model.workflow.submission.AnalysisSubmission)

Example 22 with User

use of ca.corefacility.bioinformatics.irida.model.user.User in project irida by phac-nml.

the class UpdateAnalysisSubmissionPermission method customPermissionAllowed.

/**
 * {@inheritDoc}
 */
@Override
protected boolean customPermissionAllowed(Authentication authentication, AnalysisSubmission analysisSubmission) {
    logger.trace("Testing permission for [" + authentication + "] on analysis submission [" + analysisSubmission + "]");
    User u = userRepository.loadUserByUsername(authentication.getName());
    if (analysisSubmission.getSubmitter().equals(u)) {
        logger.trace("Permission GRANTED for [" + authentication + "] on analysis submission [" + analysisSubmission + "]");
        return true;
    }
    logger.trace("Permission DENIED for [" + authentication + "] on analysis submission [" + analysisSubmission + "]");
    return false;
}
Also used : User(ca.corefacility.bioinformatics.irida.model.user.User)

Example 23 with User

use of ca.corefacility.bioinformatics.irida.model.user.User in project irida by phac-nml.

the class ModifyProjectPermission method customPermissionAllowed.

/**
 * {@inheritDoc}
 */
public boolean customPermissionAllowed(Authentication authentication, Project p) {
    logger.trace("Testing permission for [" + authentication + "] can modify project [" + p + "]");
    // check if the user is a project owner for this project
    User u = userRepository.loadUserByUsername(authentication.getName());
    List<Join<Project, User>> projectUsers = pujRepository.getUsersForProjectByRole(p, ProjectRole.PROJECT_OWNER);
    for (Join<Project, User> projectUser : projectUsers) {
        if (projectUser.getObject().equals(u)) {
            logger.trace("Permission GRANTED for [" + authentication + "] on project [" + p + "]");
            // this user is an owner for the project.
            return true;
        }
    }
    // if we've made it this far, then that means that the user isn't
    // directly added to the project, so check if the user is in any groups
    // added to the project.
    final Collection<UserGroupProjectJoin> groups = ugpjRepository.findGroupsByProject(p);
    for (final UserGroupProjectJoin group : groups) {
        if (group.getProjectRole().equals(ProjectRole.PROJECT_OWNER)) {
            final Collection<UserGroupJoin> groupMembers = ugRepository.findUsersInGroup(group.getObject());
            final boolean inGroup = groupMembers.stream().anyMatch(j -> j.getSubject().equals(u));
            if (inGroup) {
                logger.trace("Permission GRANTED for [" + authentication + "] on project [" + p + "] by group membership in [" + group.getLabel() + "]");
                return true;
            }
        } else {
            logger.trace("Group is not PROJECT_OWNER, checking next project.");
        }
    }
    logger.trace("Permission DENIED for [" + authentication + "] on project [" + p + "]");
    return false;
}
Also used : Project(ca.corefacility.bioinformatics.irida.model.project.Project) User(ca.corefacility.bioinformatics.irida.model.user.User) UserGroupProjectJoin(ca.corefacility.bioinformatics.irida.model.user.group.UserGroupProjectJoin) UserGroupJoin(ca.corefacility.bioinformatics.irida.model.user.group.UserGroupJoin) UserGroupJoin(ca.corefacility.bioinformatics.irida.model.user.group.UserGroupJoin) Join(ca.corefacility.bioinformatics.irida.model.joins.Join) UserGroupProjectJoin(ca.corefacility.bioinformatics.irida.model.user.group.UserGroupProjectJoin)

Example 24 with User

use of ca.corefacility.bioinformatics.irida.model.user.User in project irida by phac-nml.

the class UpdateUserGroupPermission method customPermissionAllowed.

/**
 * {@inheritDoc}
 */
@Override
public boolean customPermissionAllowed(final Authentication authentication, final UserGroup g) {
    logger.trace("Checking if [" + authentication + "] can modify [" + g + "]");
    final User user = userRepository.loadUserByUsername(authentication.getName());
    final Optional<UserGroupJoin> userInGroup = userGroupJoinRepository.findUsersInGroup(g).stream().filter(j -> j.getSubject().equals(user)).findAny();
    if (userInGroup.isPresent()) {
        final UserGroupJoin j = userInGroup.get();
        if (j.getRole().equals(UserGroupRole.GROUP_OWNER)) {
            logger.trace("User [" + user + "] is GROUP_OWNER in group [" + g + "], access is GRANTED.");
            return true;
        } else {
            logger.trace("User [" + user + "] is *not* GROUP_OWNER in group [" + g + "], access is DENIED.");
            return false;
        }
    } else {
        logger.trace("User [" + user + "] is not in group [" + g + "], access is DENIED.");
        return false;
    }
}
Also used : UserRepository(ca.corefacility.bioinformatics.irida.repositories.user.UserRepository) Logger(org.slf4j.Logger) UserGroupJoinRepository(ca.corefacility.bioinformatics.irida.repositories.user.UserGroupJoinRepository) UserGroupRole(ca.corefacility.bioinformatics.irida.model.user.group.UserGroupJoin.UserGroupRole) LoggerFactory(org.slf4j.LoggerFactory) UserGroupJoin(ca.corefacility.bioinformatics.irida.model.user.group.UserGroupJoin) Autowired(org.springframework.beans.factory.annotation.Autowired) UserGroup(ca.corefacility.bioinformatics.irida.model.user.group.UserGroup) Component(org.springframework.stereotype.Component) UserGroupRepository(ca.corefacility.bioinformatics.irida.repositories.user.UserGroupRepository) BasePermission(ca.corefacility.bioinformatics.irida.security.permissions.BasePermission) Optional(java.util.Optional) User(ca.corefacility.bioinformatics.irida.model.user.User) Authentication(org.springframework.security.core.Authentication) User(ca.corefacility.bioinformatics.irida.model.user.User) UserGroupJoin(ca.corefacility.bioinformatics.irida.model.user.group.UserGroupJoin)

Example 25 with User

use of ca.corefacility.bioinformatics.irida.model.user.User in project irida by phac-nml.

the class UpdateUserPermission method modifyingOwnAccount.

/**
 * Check to see if the user is modifying their own account.
 *
 * @param authentication
 *            the currently logged in user.
 * @param u
 *            the user that is being modified
 * @return true if the authentication and user are the same thing.
 */
private boolean modifyingOwnAccount(Authentication authentication, User u) {
    boolean isOwnAccount = false;
    // business rules specify that the authenticated user must have a
    // role of administrator, or the user is trying to modify their own
    // account.
    logger.trace("User is not admin, checking if user is trying to modify own account.");
    User authenticated = userRepository.loadUserByUsername(authentication.getName());
    isOwnAccount = authenticated.equals(u);
    logger.trace("Allowing modification of user account based on authenticated principle? [" + isOwnAccount + "]");
    return isOwnAccount;
}
Also used : User(ca.corefacility.bioinformatics.irida.model.user.User)

Aggregations

User (ca.corefacility.bioinformatics.irida.model.user.User)252 Test (org.junit.Test)153 Project (ca.corefacility.bioinformatics.irida.model.project.Project)84 WithMockUser (org.springframework.security.test.context.support.WithMockUser)57 Authentication (org.springframework.security.core.Authentication)45 Join (ca.corefacility.bioinformatics.irida.model.joins.Join)34 UsernamePasswordAuthenticationToken (org.springframework.security.authentication.UsernamePasswordAuthenticationToken)27 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)27 PageRequest (org.springframework.data.domain.PageRequest)26 UserGroup (ca.corefacility.bioinformatics.irida.model.user.group.UserGroup)25 ProjectRole (ca.corefacility.bioinformatics.irida.model.enums.ProjectRole)24 ProjectUserJoin (ca.corefacility.bioinformatics.irida.model.joins.impl.ProjectUserJoin)24 AnalysisSubmission (ca.corefacility.bioinformatics.irida.model.workflow.submission.AnalysisSubmission)19 Principal (java.security.Principal)19 ProjectSampleJoin (ca.corefacility.bioinformatics.irida.model.joins.impl.ProjectSampleJoin)18 RelatedProjectJoin (ca.corefacility.bioinformatics.irida.model.joins.impl.RelatedProjectJoin)18 List (java.util.List)18 PreAuthorize (org.springframework.security.access.prepost.PreAuthorize)17 EntityNotFoundException (ca.corefacility.bioinformatics.irida.exceptions.EntityNotFoundException)16 ArrayList (java.util.ArrayList)16