init:wq
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
package ru.copperside.repository;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
|
||||
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import ru.copperside.model.dto.RolePermissionDto;
|
||||
import ru.copperside.sql.SqlRegistry;
|
||||
import ru.copperside.util.PermissionsCompiler;
|
||||
import ru.copperside.model.permission.Permission;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static ru.copperside.util.RepoMappingHelper.*;
|
||||
|
||||
@Repository
|
||||
@RequiredArgsConstructor
|
||||
public class PermissionsRepositoryJdbc implements PermissionsRepository{
|
||||
private final NamedParameterJdbcTemplate namedParameterJdbcTemplate;
|
||||
private final SqlRegistry sqlRegistry;
|
||||
private final ObjectMapper objectMapper;
|
||||
|
||||
@Override
|
||||
public List<RolePermissionDto> findRoleByHierarchyId(Long hierarchyId) {
|
||||
var p = new MapSqlParameterSource().addValue("hierarchyId", hierarchyId);
|
||||
|
||||
return namedParameterJdbcTemplate.query(sqlRegistry.get("auth/find_inherited_role_permissions_by_hierarchyid"), p, (rs, rn) -> {
|
||||
return new RolePermissionDto(
|
||||
rs.getLong("HIERARCHYID"),
|
||||
rs.getInt("LEVEL"),
|
||||
rs.getLong("ROLEID"),
|
||||
rs.getLong("PERMISSIONID"),
|
||||
rs.getString("PERMISSION_STRID"),
|
||||
readLargeText(rs, "SETTINGS"),
|
||||
getNullableBoolean(rs, "ACTION"),
|
||||
readLargeText(rs, "PDATA"),
|
||||
rs.getString("COMMAND"),
|
||||
rs.getString("HTTP")
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RolePermissionDto> findPersonalByHierarchyId(Long hierarchyId) {
|
||||
var p = new MapSqlParameterSource().addValue("hierarchyId", hierarchyId);
|
||||
|
||||
return namedParameterJdbcTemplate.query(sqlRegistry.get("auth/find_inherited_permissions_by_hierarchyid"), p, (rs, rn) ->
|
||||
new RolePermissionDto(
|
||||
getNullableLong(rs, "HIERARCHYID"),
|
||||
rs.getInt("LEVEL"),
|
||||
getNullableLong(rs, "ROLEID"), // здесь всегда null из SQL
|
||||
rs.getLong("PERMISSIONID"),
|
||||
rs.getString("PERMISSION_STRID"),
|
||||
readLargeText(rs, "SETTINGS"),
|
||||
getNullableBoolean(rs, "ACTION"),
|
||||
readLargeText(rs, "PDATA"),
|
||||
rs.getString("COMMAND"),
|
||||
rs.getString("HTTP")
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Permission> findCompiledByHierarchyId(Long hierarchyId) {
|
||||
var rolePerms = findRoleByHierarchyId(hierarchyId);
|
||||
var personalPerms = findPersonalByHierarchyId(hierarchyId);
|
||||
return new PermissionsCompiler(objectMapper).compile(rolePerms, personalPerms);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user