in src/main/java/com/epam/digital/data/platform/kafkaapi/core/service/AccessPermissionService.java [46:73]
public boolean hasReadAccess(
List<FieldsAccessCheckDto> accessedFieldsDto, JwtClaimsDto userClaims) {
List<String> userRoles = JwtClaimsUtils.getRoles(userClaims);
try (Connection connection = dataSource.getConnection();
CallableStatement statement = connection.prepareCall(PERMISSION_CHECK_SQL_STRING)) { //NOSONAR
for (FieldsAccessCheckDto tableFields : accessedFieldsDto) {
Array userRolesDbArray = connection.createArrayOf("text", userRoles.toArray());
Array searchFieldsDbArray = connection.createArrayOf("text", tableFields.getFields().toArray());
statement.setString(1, tableFields.getTableName()); //NOSONAR
statement.setArray(2, userRolesDbArray);
statement.setString(3, SEARCH_TYPE_OPERATION);
statement.setArray(4, searchFieldsDbArray);
ResultSet rs = statement.executeQuery();
if (rs.next()) {
boolean hasTableAccess = rs.getBoolean(1);
if (!hasTableAccess) {
return false;
}
} else {
return false;
}
}
} catch (SQLException e) {
throw SQLExceptionResolverUtil.getDetailedExceptionFromSql(e);
}
return true;
}