import com.prueba.core.context.integration.database.impl.DataBaseAccessImpl;
import com.prueba.core.context.web.application.ApplicationWebContext;
+import com.prueba.persistence.domain.ApplicationResourceResource;
public class ApplicationResourceDao {
- public static final String URL_PATTERN = "URL_PATTERN";
- public static final String HTTP_METHOD = "HTTP_METHOD";
+ private static final String URL_PATTERN = "URL_PATTERN";
+ private static final String HTTP_METHOD = "HTTP_METHOD";
- public List<Map<String, String>> findURLsByUserName(String userName) {
+ public List<ApplicationResourceResource> findURLsByUserName(String userName) {
final DataSource dataSource = ApplicationWebContext.getInstance().getDataSource();
final DataBaseAccessImpl dataBaseAccess = new DataBaseAccessImpl(dataSource);
- return dataBaseAccess.executeQuery(""
+ final List<Map<String, String>> results = dataBaseAccess.executeQuery(""
+ "SELECT APP_RES.URL_PATTERN, APP_RES.HTTP_METHOD FROM APPLICATION_ROLE APP_ROLE "
+ "INNER JOIN APPLICATION_RESOURCE_APPLICATION_ROLE APP_RES_APP_ROLE ON APP_ROLE.CODE = APP_RES_APP_ROLE.APPLICATION_ROLE_CODE "
+ "INNER JOIN APPLICATION_RESOURCE APP_RES ON APP_RES.URL_PATTERN = APP_RES_APP_ROLE.APPLICATION_RESOURCE_URL_PATTERN "
preparedStatement -> {
preparedStatement.setString(1, userName);
});
+
+ final List<ApplicationResourceResource> applicationResources = new ArrayList<>();
+ if (!results.isEmpty()) {
+ results.forEach(row ->
+ {
+ ApplicationResourceResource resource =
+ new ApplicationResourceResource(row.get(URL_PATTERN), row.get(HTTP_METHOD));
+ applicationResources.add(resource);
+ });
+ }
+
+ return applicationResources;
}
}
--- /dev/null
+package com.prueba.persistence.domain;
+
+public class ApplicationResourceResource {
+ private final String urlPattern;
+ private final String httpMethod;
+
+ public ApplicationResourceResource() {
+ this.urlPattern = null;
+ this.httpMethod = null;
+ }
+
+ public ApplicationResourceResource(String urlPattern, String httpMethod) {
+ this.urlPattern = urlPattern;
+ this.httpMethod = httpMethod;
+ }
+
+ public String getUrlPattern() {
+ return urlPattern;
+ }
+
+ public String getHttpMethod() {
+ return httpMethod;
+ }
+
+}
import com.prueba.core.context.util.AntPathMatcher;
import com.prueba.persistence.dao.ApplicationResourceDao;
+import com.prueba.persistence.domain.ApplicationResourceResource;
public class AuthorizationServicesImpl {
private static final Logger LOGGER = LoggerFactory.getLogger(AuthorizationServicesImpl.class);
-
private static final String USER_NAME_PARAM = "username";
private static final String API_URL_PATTERN = "/app/api/users/{" + USER_NAME_PARAM + "}";
final ApplicationResourceDao dao = new ApplicationResourceDao();
- final List<Map<String, String>> urls = dao.findURLsByUserName(userName);
+ final List<ApplicationResourceResource> urls = dao.findURLsByUserName(userName);
- return urls.stream().anyMatch(urlMap ->
+ return urls.stream().anyMatch(url ->
{
- final String urlPatternValue = urlMap.get(ApplicationResourceDao.URL_PATTERN);
+ final String urlPatternValue = url.getUrlPattern();
final String urlReplacedPatternValue = urlPatternValue.replace("{" + USER_NAME_PARAM + "}", userNameParam);
- final String httpMethodValue = urlMap.get(ApplicationResourceDao.HTTP_METHOD);
+ final String httpMethodValue = url.getHttpMethod();
return urlReplacedPatternValue.equals(uri) && httpMethodValue.equals(httpMethod);
});