private GQLTypeProjectAuthorization.Model getProjectAuthorizations(Project project, ProjectRole projectRole) { return new GQLTypeProjectAuthorization.Model( projectRole.getId(), projectRole.getName(), projectRole.getDescription(), accountService.findAccountGroupsByProjectRole(project, projectRole), accountService.findAccountsByProjectRole(project, projectRole) ); } }
public T with(int projectId, Class<? extends ProjectFunction> fn) { account.withProjectRole( new ProjectRoleAssociation( projectId, new ProjectRole( "test", "Test", "", Collections.singleton(fn) ) ) ); //noinspection unchecked return (T) this; }
public boolean isGranted(Class<? extends ProjectFunction> fn) { return projectRole.isGranted(fn); } }
private DataFetcher projectAuthorizationsFetcher() { return fetcher( Project.class, (environment, project) -> rolesService.getProjectRoles().stream() .filter(GraphqlUtils.getStringArgument(environment, "role") .map(s -> (Predicate<ProjectRole>) pr -> StringUtils.equals(s, pr.getId())) .orElseGet(() -> pr -> true)) .map(projectRole -> getProjectAuthorizations(project, projectRole)) .collect(Collectors.toList()) ); }
@Override public Collection<AccountGroup> findAccountGroupsByProjectRole(Project project, ProjectRole projectRole, Function<ID, AccountGroup> accountGroupLoader) { return getNamedParameterJdbcTemplate().query( "SELECT G.* FROM ACCOUNT_GROUPS G " + "INNER JOIN GROUP_PROJECT_AUTHORIZATIONS A " + "ON A.ACCOUNTGROUP = G.ID " + "WHERE A.ROLE = :role " + "AND A.PROJECT = :project " + "ORDER BY G.NAME", params("role", projectRole.getId()).addValue("project", project.id()), (rs, num) -> accountGroupLoader.apply(id(rs)) ); }
@Override public Collection<Account> findAccountsByProjectRole(Project project, ProjectRole projectRole, Function<ID, Account> accountLoader) { return getNamedParameterJdbcTemplate().query( "SELECT G.* FROM ACCOUNTS G " + "INNER JOIN PROJECT_AUTHORIZATIONS A " + "ON A.ACCOUNT = G.ID " + "WHERE A.ROLE = :role " + "AND A.PROJECT = :project " + "ORDER BY G.NAME", params("role", projectRole.getId()).addValue("project", project.id()), (rs, num) -> accountLoader.apply(id(rs)) ); }