From 78b085815b9873acdf178b2e9c9598d065fd40c0 Mon Sep 17 00:00:00 2001
From: Joaquín Reñé <jrene@curisit.net>
Date: Mon, 20 Apr 2026 19:30:51 +0000
Subject: [PATCH] #4479 - upgrade SecurisServer to Java 21
---
securis/src/main/java/net/curisit/securis/ioc/EntityManagerProducer.java | 3
securis/src/main/webapp/src/app/resources/licenses.ts | 22 ++-
securis/src/main/java/net/curisit/securis/RestServicesApplication.java | 4
securis/src/main/webapp/src/app/resources/base.ts | 94 +++++++++-----
securis/src/main/java/net/curisit/securis/services/ApiResource.java | 2
securis/src/main/webapp/src/app/resources/users.ts | 5
securis/src/main/java/net/curisit/securis/ioc/RequestsInterceptor.java | 5
securis/src/main/webapp/src/app/resources/organizations.ts | 5
securis/src/main/webapp/src/app/footer.component.ts | 2
securis/src/main/webapp/src/app/forms/base.ts | 2
securis/src/main/webapp/src/app/resources/applications.ts | 5
securis/src/main/java/net/curisit/securis/services/ApplicationResource.java | 4
securis/src/main/java/net/curisit/securis/services/PackResource.java | 2
securis/src/main/webapp/WEB-INF/log4j2.xml | 55 +-------
securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java | 4
securis/src/main/webapp/src/app/resources/packs.ts | 33 +++--
securis/src/main/webapp/WEB-INF/web.xml | 12 +
securis/src/main/java/net/curisit/securis/services/UserResource.java | 35 +++++
securis/src/main/webapp/src/app/forms/pack.form.component.ts | 2
securis/src/main/webapp/src/app/resources/license_types.ts | 5
securis/src/main/webapp/src/app/user.service.ts | 4
securis/src/main/java/net/curisit/securis/services/OrganizationResource.java | 44 ++++---
securis/src/main/java/net/curisit/securis/LicenseGenerator.java | 4
23 files changed, 197 insertions(+), 156 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/LicenseGenerator.java b/securis/src/main/java/net/curisit/securis/LicenseGenerator.java
index 419ba29..c9c8f79 100644
--- a/securis/src/main/java/net/curisit/securis/LicenseGenerator.java
+++ b/securis/src/main/java/net/curisit/securis/LicenseGenerator.java
@@ -27,7 +27,7 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import jakarta.inject.Singleton;
+import jakarta.enterprise.context.ApplicationScoped;
/**
* LicenseGenerator
@@ -39,7 +39,7 @@
* @author JRA
* Last reviewed by JRA on Oct 5, 2025.
*/
-@Singleton
+@ApplicationScoped
public class LicenseGenerator {
private static final Logger LOG = LogManager.getLogger(LicenseGenerator.class);
diff --git a/securis/src/main/java/net/curisit/securis/RestServicesApplication.java b/securis/src/main/java/net/curisit/securis/RestServicesApplication.java
index b6a7ea3..6300925 100644
--- a/securis/src/main/java/net/curisit/securis/RestServicesApplication.java
+++ b/securis/src/main/java/net/curisit/securis/RestServicesApplication.java
@@ -8,7 +8,7 @@
import jakarta.ws.rs.core.Application;
-/// import net.curisit.securis.ioc.RequestsInterceptor;
+import net.curisit.securis.ioc.RequestsInterceptor;
import net.curisit.securis.services.ApiResource;
import net.curisit.securis.services.ApplicationResource;
import net.curisit.securis.services.BasicServices;
@@ -50,7 +50,7 @@
classes.add(OrganizationResource.class);
classes.add(LicenseTypeResource.class);
classes.add(PackResource.class);
- /// classes.add(RequestsInterceptor.class);
+ classes.add(RequestsInterceptor.class);
// classes.add(TransactionsInterceptor.class);
// classes.add(JpaJacksonProvider.class);
// classes.add(JacksonConfig.class);
diff --git a/securis/src/main/java/net/curisit/securis/ioc/EntityManagerProducer.java b/securis/src/main/java/net/curisit/securis/ioc/EntityManagerProducer.java
index dc560fa..f40d3ab 100644
--- a/securis/src/main/java/net/curisit/securis/ioc/EntityManagerProducer.java
+++ b/securis/src/main/java/net/curisit/securis/ioc/EntityManagerProducer.java
@@ -21,8 +21,7 @@
private static final Logger log = LogManager.getLogger(EntityManagerProducer.class);
- @Inject
- private EntityManagerProvider emProvider;
+ @Inject private EntityManagerProvider emProvider;
@Produces
@RequestScoped
diff --git a/securis/src/main/java/net/curisit/securis/ioc/RequestsInterceptor.java b/securis/src/main/java/net/curisit/securis/ioc/RequestsInterceptor.java
index 64e3e92..6865d77 100644
--- a/securis/src/main/java/net/curisit/securis/ioc/RequestsInterceptor.java
+++ b/securis/src/main/java/net/curisit/securis/ioc/RequestsInterceptor.java
@@ -28,7 +28,7 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-
+import org.jboss.resteasy.core.ResteasyContext;
import net.curisit.securis.db.User;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
@@ -189,6 +189,9 @@
sc.setOrganizationsIds(getUserOrganizations(username));
sc.setApplicationsIds(getUserApplications(username));
ctx.setSecurityContext(sc);
+
+ ResteasyContext.pushContext(BasicSecurityContext.class, sc);
+
return true;
}
diff --git a/securis/src/main/java/net/curisit/securis/services/ApiResource.java b/securis/src/main/java/net/curisit/securis/services/ApiResource.java
index 07da3d2..a151588 100644
--- a/securis/src/main/java/net/curisit/securis/services/ApiResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/ApiResource.java
@@ -7,6 +7,7 @@
import java.util.Date;
import java.util.List;
+import jakarta.enterprise.context.RequestScoped;
import jakarta.inject.Inject;
import jakarta.persistence.EntityManager;
import jakarta.persistence.NoResultException;
@@ -76,6 +77,7 @@
* Last reviewed by JRA on Oct 5, 2025.
*/
@Path("/api")
+@RequestScoped
public class ApiResource {
private static final Logger LOG = LogManager.getLogger(ApiResource.class);
diff --git a/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java b/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
index 3022fde..7d1265d 100644
--- a/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
@@ -10,6 +10,7 @@
import java.util.Set;
import jakarta.annotation.security.RolesAllowed;
+import jakarta.enterprise.context.RequestScoped;
import jakarta.inject.Inject;
import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery;
@@ -63,12 +64,13 @@
* Last reviewed by JRA on Oct 5, 2025.
*/
@Path("/application")
+@RequestScoped
public class ApplicationResource {
@Inject TokenHelper tokenHelper;
@Inject MetadataHelper metadataHelper;
- @Context EntityManager em;
+ @Inject EntityManager em;
private static final Logger LOG = LogManager.getLogger(ApplicationResource.class);
diff --git a/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java b/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
index 04c15a2..4be86cf 100644
--- a/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
@@ -10,6 +10,7 @@
import java.util.stream.Collectors;
import jakarta.annotation.security.RolesAllowed;
+import jakarta.enterprise.context.RequestScoped;
import jakarta.inject.Inject;
import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery;
@@ -57,6 +58,7 @@
* Last reviewed by JRA on Oct 5, 2025.
*/
@Path("/licensetype")
+@RequestScoped
public class LicenseTypeResource {
private static final Logger LOG = LogManager.getLogger(LicenseTypeResource.class);
@@ -64,7 +66,7 @@
@Inject TokenHelper tokenHelper;
@Inject MetadataHelper metadataHelper;
- @Context EntityManager em;
+ @Inject EntityManager em;
public LicenseTypeResource() { }
diff --git a/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java b/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
index 30d5940..831e5a3 100644
--- a/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
@@ -10,6 +10,7 @@
import jakarta.annotation.security.RolesAllowed;
import jakarta.enterprise.context.RequestScoped;
+import jakarta.inject.Inject;
import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery;
import jakarta.servlet.http.HttpServletRequest;
@@ -26,6 +27,7 @@
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.Response.Status;
+import jakarta.ws.rs.core.SecurityContext;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -55,8 +57,7 @@
private static final Logger LOG = LogManager.getLogger(OrganizationResource.class);
- @Context EntityManager em;
- @Context BasicSecurityContext bsc;
+ @Inject EntityManager em;
public OrganizationResource() { }
@@ -72,23 +73,28 @@
@Path("/")
@Produces({ MediaType.APPLICATION_JSON })
@Securable
- public Response index() {
- LOG.info("Getting organizations list ");
- em.clear();
- TypedQuery<Organization> q;
- if (bsc.isUserInRole(BasicSecurityContext.ROL_ADMIN)) {
- LOG.info("GEtting all orgs for user: " + bsc.getUserPrincipal());
- q = em.createNamedQuery("list-organizations", Organization.class);
- } else {
- if (bsc.getOrganizationsIds() == null || bsc.getOrganizationsIds().isEmpty()) {
- return Response.ok().build();
- } else {
- q = em.createNamedQuery("list-organizations-by-ids", Organization.class);
- q.setParameter("list_ids", bsc.getOrganizationsIds());
- }
- }
- List<Organization> list = q.getResultList();
- return Response.ok(list).build();
+ public Response index(@Context SecurityContext securityContext) {
+ BasicSecurityContext bsc = org.jboss.resteasy.core.ResteasyContext.getContextData(BasicSecurityContext.class);
+ if (bsc == null) {
+ LOG.error("BasicSecurityContext not found in ResteasyContext");
+ return Response.status(Status.UNAUTHORIZED).build();
+ }
+ LOG.info("Getting organizations list ");
+ em.clear();
+ TypedQuery<Organization> q;
+ if (bsc.isUserInRole(BasicSecurityContext.ROL_ADMIN)) {
+ LOG.info("Getting all orgs for user: " + bsc.getUserPrincipal());
+ q = em.createNamedQuery("list-organizations", Organization.class);
+ } else {
+ if (bsc.getOrganizationsIds() == null || bsc.getOrganizationsIds().isEmpty()) {
+ return Response.ok().build();
+ } else {
+ q = em.createNamedQuery("list-organizations-by-ids", Organization.class);
+ q.setParameter("list_ids", bsc.getOrganizationsIds());
+ }
+ }
+ List<Organization> list = q.getResultList();
+ return Response.ok(list).build();
}
/**
diff --git a/securis/src/main/java/net/curisit/securis/services/PackResource.java b/securis/src/main/java/net/curisit/securis/services/PackResource.java
index 5049445..b390b87 100644
--- a/securis/src/main/java/net/curisit/securis/services/PackResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/PackResource.java
@@ -11,6 +11,7 @@
import java.util.Set;
import jakarta.annotation.security.RolesAllowed;
+import jakarta.enterprise.context.RequestScoped;
import jakarta.inject.Inject;
import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery;
@@ -66,6 +67,7 @@
* Last reviewed by JRA on Oct 5, 2025.
*/
@Path("/pack")
+@RequestScoped
public class PackResource {
private static final Logger LOG = LogManager.getLogger(PackResource.class);
diff --git a/securis/src/main/java/net/curisit/securis/services/UserResource.java b/securis/src/main/java/net/curisit/securis/services/UserResource.java
index 3674d25..85fd4b7 100644
--- a/securis/src/main/java/net/curisit/securis/services/UserResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/UserResource.java
@@ -407,11 +407,15 @@
LOG.info("login() called. session={}", request.getSession(false));
LOG.info("login() username='{}'", username);
- LOG.info("UserResource instance={}", this);
- LOG.info("Injected em={}", em);
- LOG.info("Injected tokenHelper={}", tokenHelper);
- LOG.info("Injected cache={}", cache);
-
+ boolean trazalogin = false;
+
+ if (trazalogin) {
+ LOG.info("UserResource instance={}", this);
+ LOG.info("Injected em={}", em);
+ LOG.info("Injected tokenHelper={}", tokenHelper);
+ LOG.info("Injected cache={}", cache);
+ }
+
if (username == null || username.trim().isEmpty()) {
LOG.error("login() username is null or empty");
throw new SeCurisServiceException(ErrorCodes.UNAUTHORIZED_ACCESS, "Wrong credentials");
@@ -432,6 +436,27 @@
String securedPassword = Utils.sha256(password);
LOG.info("login() hashed password generated? {}", securedPassword != null);
+ if (trazalogin) {
+ LOG.info("login() stored password hash='{}'", user.getPassword());
+ LOG.info("login() computed password hash='{}'", securedPassword);
+ LOG.info("login() stored length={}, computed length={}",
+ user.getPassword() == null ? null : user.getPassword().length(),
+ securedPassword == null ? null : securedPassword.length());
+
+
+ LOG.info("raw password='{}'", password);
+ LOG.info("sha256(raw)='{}'", Utils.sha256(password));
+ LOG.info("sha256(trim)='{}'", Utils.sha256(password == null ? null : password.trim()));
+ LOG.info("sha256(lower)='{}'", Utils.sha256(password == null ? null : password.toLowerCase()));
+ LOG.info("sha256(upper)='{}'", Utils.sha256(password == null ? null : password.toUpperCase()));
+ LOG.info("sha256(username+password)='{}'", Utils.sha256(username + password));
+ LOG.info("sha256(password+username)='{}'", Utils.sha256(password + username));
+ LOG.info("stored hash='{}'", user.getPassword());
+
+ LOG.info("password.equals('admin')={}", "admin".equals(password));
+ LOG.info("password length={}", password == null ? null : password.length());
+ }
+
if (securedPassword == null || !securedPassword.equals(user.getPassword())) {
LOG.error("Wrong password for user '{}'", username);
throw new SeCurisServiceException(ErrorCodes.UNAUTHORIZED_ACCESS, "Wrong credentials");
diff --git a/securis/src/main/webapp/WEB-INF/log4j2.xml b/securis/src/main/webapp/WEB-INF/log4j2.xml
index a3ae586..17943a4 100644
--- a/securis/src/main/webapp/WEB-INF/log4j2.xml
+++ b/securis/src/main/webapp/WEB-INF/log4j2.xml
@@ -1,48 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
- <Appenders>
-
- <RollingFile name="defaultFile"
- fileName="${sys:catalina.home}/logs/securis-server.log" append="true"
- filePattern="${sys:catalina.home}/logs/securis-server-%d{yyyy-MM-dd-HH}.log.gz">
- <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" />
- <Policies>
- <TimeBasedTriggeringPolicy interval="1"
- modulate="true" />
- </Policies>
- <DefaultRolloverStrategy max="10" />
- </RollingFile>
- <Async name="defaultFileAsync" includeLocation="true">
- <AppenderRef ref="defaultFile" />
- </Async>
-
- <Console name="stdout" target="SYSTEM_OUT">
- <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" />
- </Console>
-
- <Console name="console" target="SYSTEM_OUT">
- <PatternLayout pattern="%m%n" />
- </Console>
- </Appenders>
- <Loggers>
-
- <Logger name="net.curisit" level="INFO" additivity="false">
- <AppenderRef ref="defaultFileAsync" />
- <AppenderRef ref="stdout" />
- </Logger>
-
- <Logger name="console" level="INFO" additivity="false">
- <AppenderRef ref="console" />
- </Logger>
-
-<!-- <logger name="org.hibernate.type.descriptor.sql.BasicBinder"
- level="TRACE" additivity="false">
- <appender-ref ref="stdout" />
- </logger> -->
-
- <Root level="INFO">
- <AppenderRef ref="stdout" />
- </Root>
-
- </Loggers>
+ <Appenders>
+ <Console name="STDOUT" target="SYSTEM_OUT">
+ <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
+ </Console>
+ </Appenders>
+ <Loggers>
+ <Root level="info">
+ <AppenderRef ref="STDOUT"/>
+ </Root>
+ </Loggers>
</Configuration>
diff --git a/securis/src/main/webapp/WEB-INF/web.xml b/securis/src/main/webapp/WEB-INF/web.xml
index 32393d6..24ec927 100644
--- a/securis/src/main/webapp/WEB-INF/web.xml
+++ b/securis/src/main/webapp/WEB-INF/web.xml
@@ -36,16 +36,18 @@
<param-name>resteasy.providers</param-name>
<param-value>net.curisit.securis.DefaultExceptionHandler</param-value>
</context-param>
+
+ <context-param>
+ <param-name>resteasy.injector.factory</param-name>
+ <param-value>org.jboss.resteasy.cdi.CdiInjectorFactory</param-value>
+ </context-param>
+
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/api</param-value>
</context-param>
- <context-param>
- <param-name>resteasy.injector.factory</param-name>
- <param-value>org.jboss.resteasy.cdi.CdiInjectorFactory</param-value>
- </context-param>
<filter>
@@ -56,7 +58,7 @@
</filter>
<filter-mapping>
<filter-name>DevFilter</filter-name>
- <url-pattern>/api/*</url-pattern>
+ <url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
diff --git a/securis/src/main/webapp/src/app/footer.component.ts b/securis/src/main/webapp/src/app/footer.component.ts
index 309167b..2018eaa 100644
--- a/securis/src/main/webapp/src/app/footer.component.ts
+++ b/securis/src/main/webapp/src/app/footer.component.ts
@@ -17,7 +17,7 @@
ngOnInit(): void {
//TODO Move to service
- this.http.get("version", /* workaround to avoid OPTIONS method request*/ new BaseRequestOptions())
+ this.http.get("api/version", /* workaround to avoid OPTIONS method request*/ new BaseRequestOptions())
.map((res) => <string>res.json().version)
.subscribe(
version => this.securisVersion = version,
diff --git a/securis/src/main/webapp/src/app/forms/base.ts b/securis/src/main/webapp/src/app/forms/base.ts
index 5d66cf4..58775c2 100644
--- a/securis/src/main/webapp/src/app/forms/base.ts
+++ b/securis/src/main/webapp/src/app/forms/base.ts
@@ -84,7 +84,7 @@
this.toaster.success(this.$L.get('{} was sucessfully deleted', this.resourceName.capitalize()));
this.goBack();
},
- err => this.toaster.success(err.message, this.$L.get('Error deleting the {}', this.resourceName))
+ err => this.toaster.error(err.message, this.$L.get('Error deleting the {}', this.resourceName))
);
}
});
diff --git a/securis/src/main/webapp/src/app/forms/pack.form.component.ts b/securis/src/main/webapp/src/app/forms/pack.form.component.ts
index 97f4832..9676626 100644
--- a/securis/src/main/webapp/src/app/forms/pack.form.component.ts
+++ b/securis/src/main/webapp/src/app/forms/pack.form.component.ts
@@ -34,7 +34,7 @@
}
loadCombos(): void {
- this.http.get('organization')
+ this.http.get('api/organization')
.map(response => response.json().map((org : any) => <IComboOption>{id: org.id, label: `(${org.code}) ${org.name}`}))
.subscribe(
data => super.setViewData(() => this.organizations = (<IComboOption[]>data).sort((e1, e2) => e1.label.localeCompare(e2.label))),
diff --git a/securis/src/main/webapp/src/app/resources/applications.ts b/securis/src/main/webapp/src/app/resources/applications.ts
index ecfa6a8..d6d8f8f 100644
--- a/securis/src/main/webapp/src/app/resources/applications.ts
+++ b/securis/src/main/webapp/src/app/resources/applications.ts
@@ -1,6 +1,7 @@
import { Observable } from 'rxjs/Rx';
import { Injectable } from '@angular/core';
import { Http, RequestOptions } from '@angular/http';
+import { Locker } from 'angular-safeguard';
import { SeCurisResourceServices } from './base';
import { LocaleService } from '../common/i18n';
@@ -18,8 +19,8 @@
@Injectable()
export class ApplicationsService extends SeCurisResourceServices {
- constructor(http: Http, $L: LocaleService) {
- super($L, http, 'application');
+ constructor(http: Http, $L: LocaleService, store: Locker) {
+ super($L, http, store, 'application');
}
diff --git a/securis/src/main/webapp/src/app/resources/base.ts b/securis/src/main/webapp/src/app/resources/base.ts
index 2833eb0..3f5f39d 100644
--- a/securis/src/main/webapp/src/app/resources/base.ts
+++ b/securis/src/main/webapp/src/app/resources/base.ts
@@ -1,53 +1,77 @@
import { LocaleService } from '../common/i18n';
import { BasicService } from '../common/utils';
import { Observable } from 'rxjs/Observable';
-import { Http, RequestOptionsArgs, URLSearchParams } from '@angular/http';
+import { Http, RequestOptionsArgs, URLSearchParams, Headers } from '@angular/http';
+import { Locker } from 'angular-safeguard';
+
export class MySearchParams extends URLSearchParams {
- constructor(obj : any = {}) {
- var searchQuery = Object.keys(obj).map(key => `${key}=${encodeURIComponent(obj[key])}`).join('&');
+ constructor(obj: any = {}) {
+ const searchQuery = Object.keys(obj).map(key => `${key}=${encodeURIComponent(obj[key])}`).join('&');
super(searchQuery);
}
}
export class SeCurisResourceServices extends BasicService {
- constructor($L: LocaleService,
- protected http: Http,
- protected resource: string) {
- super($L);
- }
+ constructor($L: LocaleService,
+ protected http: Http,
+ protected store: Locker,
+ protected resource: string) {
+ super($L);
+ this.resource = `api/${resource}`;
+ }
- public get(id?: any) : Observable<any> {
- let url = `${this.resource}/${id || ''}`;
- return this.http.get(url).map(response => response.json()).catch(err => super.processErrorResponse(err));
+ protected getAuthHeaders(): RequestOptionsArgs {
+ const token = this.store.get('token');
+ const headers = new Headers();
+ if (token) {
+ headers.append('X-SECURIS-TOKEN', token);
}
+ headers.append('Content-Type', 'application/json');
+ return { headers: headers };
+ }
- public create(data: any) : Observable<any> {
- let url = `${this.resource}`;
- return this.http.post(url, JSON.stringify(data)).map(response => response.json()).catch(err => super.processErrorResponse(err));
- }
+ public get(id?: any): Observable<any> {
+ const url = `${this.resource}/${id || ''}`;
+ return this.http.get(url, this.getAuthHeaders())
+ .map(response => response.json())
+ .catch(err => super.processErrorResponse(err));
+ }
- public modify(id: any, data: any) : Observable<any> {
- let url = `${this.resource}/${id}`;
- return this.http.post(url, JSON.stringify(data)).map(response => response.json()).catch(err => super.processErrorResponse(err));
- }
+ public create(data: any): Observable<any> {
+ const url = `${this.resource}`;
+ return this.http.post(url, JSON.stringify(data), this.getAuthHeaders())
+ .map(response => response.json())
+ .catch(err => super.processErrorResponse(err));
+ }
- public remove(id: any) : Observable<any> {
- let url = `${this.resource}/${id}`;
- return this.http.delete(url).map(response => response.json()).catch(err => super.processErrorResponse(err));
- }
-
- public action(id: any, action: string, method = 'POST', params : any = {}) : Observable<any> {
- let url = `${this.resource}/${id}/${action}`;
- params.action = action;
- var options:RequestOptionsArgs = {
- url: url,
- method: method,
- search: (method == 'GET') && new MySearchParams(params) || undefined,
- body: (method == 'POST') && JSON.stringify(params) || undefined
- };
- return this.http.request(url, options).map(response => response.json()).catch(err => super.processErrorResponse(err));
- }
+ public modify(id: any, data: any): Observable<any> {
+ const url = `${this.resource}/${id}`;
+ // Se usa POST para modificar (según tu diseño original)
+ return this.http.post(url, JSON.stringify(data), this.getAuthHeaders())
+ .map(response => response.json())
+ .catch(err => super.processErrorResponse(err));
+ }
+ public remove(id: any): Observable<any> {
+ const url = `${this.resource}/${id}`;
+ return this.http.delete(url, this.getAuthHeaders())
+ .map(response => response.json())
+ .catch(err => super.processErrorResponse(err));
+ }
+ public action(id: any, action: string, method: string = 'POST', params: any = {}): Observable<any> {
+ const url = `${this.resource}/${id}/${action}`;
+ params.action = action;
+ const options: RequestOptionsArgs = {
+ url: url,
+ method: method,
+ search: (method === 'GET') ? new MySearchParams(params) : undefined,
+ headers: this.getAuthHeaders().headers,
+ body: (method === 'POST') ? JSON.stringify(params) : undefined
+ };
+ return this.http.request(url, options)
+ .map(response => response.json())
+ .catch(err => super.processErrorResponse(err));
+ }
}
\ No newline at end of file
diff --git a/securis/src/main/webapp/src/app/resources/license_types.ts b/securis/src/main/webapp/src/app/resources/license_types.ts
index c12c90e..066af99 100644
--- a/securis/src/main/webapp/src/app/resources/license_types.ts
+++ b/securis/src/main/webapp/src/app/resources/license_types.ts
@@ -1,6 +1,7 @@
import { Observable } from 'rxjs/Rx';
import { Injectable } from '@angular/core';
import { Http, RequestOptions } from '@angular/http';
+import { Locker } from 'angular-safeguard';
import { SeCurisResourceServices } from './base';
import { LocaleService } from '../common/i18n';
@@ -15,8 +16,8 @@
@Injectable()
export class LicenseTypesService extends SeCurisResourceServices {
- constructor(http: Http, $L: LocaleService) {
- super($L, http, 'licensetype');
+ constructor(http: Http, $L: LocaleService, store: Locker) {
+ super($L, http, store, 'licensetype');
}
diff --git a/securis/src/main/webapp/src/app/resources/licenses.ts b/securis/src/main/webapp/src/app/resources/licenses.ts
index bb51ddd..65dc318 100644
--- a/securis/src/main/webapp/src/app/resources/licenses.ts
+++ b/securis/src/main/webapp/src/app/resources/licenses.ts
@@ -2,6 +2,7 @@
import { Observable } from 'rxjs/Rx';
import { Injectable } from '@angular/core';
import { Http, RequestOptions, ResponseContentType, Response } from '@angular/http';
+import { Locker } from 'angular-safeguard';
import { SeCurisResourceServices } from './base';
import { saveAs } from "file-saver";
@@ -78,14 +79,13 @@
@Injectable()
export class LicensesService extends SeCurisResourceServices {
- constructor(http: Http,
- $L: LocaleService) {
- super($L, http, 'license');
+ constructor(http: Http, $L: LocaleService, store: Locker) {
+ super($L, http, store, 'license');
}
public getByPack(packId: number) {
let url = `${this.resource}?packId=${packId}`;
- return this.http.get(url).map(response => response.json());
+ return this.http.get(url, this.getAuthHeaders()).map(response => response.json());
}
public activate(id: number) {
@@ -114,12 +114,14 @@
public download(id: number) {
let url = `${this.resource}/${id}/download`;
- return this.http.get(url).map((response : Response) => {
- let filename = JSON.parse(response.headers.get('Content-Disposition').match(/".*"$/g)[0]);
- let content = JSON.stringify(response.json(), null, 2);
- saveAs( new Blob([ content ], { type : 'application/octet-stream' }), filename);
- return Observable.of(true);
- }).catch(err => super.processErrorResponse(err));
+ return this.http.get(url, this.getAuthHeaders())
+ .map((response: Response) => {
+ let filename = JSON.parse(response.headers.get('Content-Disposition').match(/".*"$/g)[0]);
+ let content = JSON.stringify(response.json(), null, 2);
+ saveAs(new Blob([content], { type: 'application/octet-stream' }), filename);
+ return Observable.of(true);
+ })
+ .catch(err => super.processErrorResponse(err));
}
public isActionAvailable(action:string, lic:any) {
diff --git a/securis/src/main/webapp/src/app/resources/organizations.ts b/securis/src/main/webapp/src/app/resources/organizations.ts
index 27568b5..7d67518 100644
--- a/securis/src/main/webapp/src/app/resources/organizations.ts
+++ b/securis/src/main/webapp/src/app/resources/organizations.ts
@@ -1,6 +1,7 @@
import { Observable } from 'rxjs/Rx';
import { Injectable } from '@angular/core';
import { Http, RequestOptions } from '@angular/http';
+import { Locker } from 'angular-safeguard';
import { SeCurisResourceServices } from './base';
import { LocaleService } from '../common/i18n';
@@ -13,8 +14,8 @@
@Injectable()
export class OrganizationsService extends SeCurisResourceServices {
- constructor(http: Http, $L: LocaleService) {
- super($L, http, 'organization');
+ constructor(http: Http, $L: LocaleService, store: Locker) {
+ super($L, http, store, 'organization');
}
diff --git a/securis/src/main/webapp/src/app/resources/packs.ts b/securis/src/main/webapp/src/app/resources/packs.ts
index a03baf2..af18bca 100644
--- a/securis/src/main/webapp/src/app/resources/packs.ts
+++ b/securis/src/main/webapp/src/app/resources/packs.ts
@@ -1,6 +1,7 @@
import { Observable } from 'rxjs/Rx';
import { Injectable } from '@angular/core';
import { Http, RequestOptions } from '@angular/http';
+import { Locker } from 'angular-safeguard';
import { SeCurisResourceServices, MySearchParams } from './base';
import { LocaleService } from '../common/i18n';
@@ -82,19 +83,21 @@
@Injectable()
export class PacksService extends SeCurisResourceServices {
- constructor(http: Http, $L: LocaleService) {
- super($L, http, 'pack');
+ constructor(http: Http, $L: LocaleService, store: Locker) {
+ super($L, http, store, 'pack');
}
public get(filter?: PacksFilter | number | string) {
- if (!filter || typeof filter === "number" || typeof filter === "string") {
- return super.get(filter);
- }
- let searchParams = new MySearchParams(filter);
- let url = `${this.resource}/?${searchParams}`;
- return this.http.get(url).map(response => response.json()).catch(err => super.processErrorResponse(err));
- }
-
+ if (!filter || typeof filter === "number" || typeof filter === "string") {
+ return super.get(filter);
+ }
+ const searchParams = new MySearchParams(filter);
+ const url = `${this.resource}/?${searchParams}`;
+ // Añade las cabeceras usando el método de la base
+ return this.http.get(url, this.getAuthHeaders())
+ .map(response => response.json())
+ .catch(err => super.processErrorResponse(err));
+ }
public activate(id: number) {
return super.action(id, "activate");
@@ -108,12 +111,12 @@
return super.action(id, "putonhold");
}
public nextLicCode(id: number) {
- let url = `pack/${id}/next_license_code`
- return this.http.get(url).map(response => response.text());
+ const url = `api/pack/${id}/next_license_code`;
+ return this.http.get(url, this.getAuthHeaders())
+ .map(response => response.text());
}
-
-
- public isActionAvailable(action:string, pack:any) {
+
+ public isActionAvailable(action:string, pack:any) {
var validStatuses = PACK_ACTIONS_BY_STATUS[action];
return pack && validStatuses && validStatuses.indexOf(pack.status) !== -1;
}
diff --git a/securis/src/main/webapp/src/app/resources/users.ts b/securis/src/main/webapp/src/app/resources/users.ts
index 09eebb3..adb2c24 100644
--- a/securis/src/main/webapp/src/app/resources/users.ts
+++ b/securis/src/main/webapp/src/app/resources/users.ts
@@ -1,6 +1,7 @@
import { Observable } from 'rxjs/Rx';
import { Injectable } from '@angular/core';
import { Http, RequestOptions } from '@angular/http';
+import { Locker } from 'angular-safeguard';
import { SeCurisResourceServices } from './base';
import { LocaleService } from '../common/i18n';
@@ -18,8 +19,8 @@
@Injectable()
export class UsersService extends SeCurisResourceServices {
- constructor(http: Http, $L: LocaleService) {
- super($L, http, 'user');
+ constructor(http: Http, $L: LocaleService, store: Locker) {
+ super($L, http, store, 'user');
}
diff --git a/securis/src/main/webapp/src/app/user.service.ts b/securis/src/main/webapp/src/app/user.service.ts
index 45bb541..95273eb 100644
--- a/securis/src/main/webapp/src/app/user.service.ts
+++ b/securis/src/main/webapp/src/app/user.service.ts
@@ -27,7 +27,7 @@
params.append('username', username);
params.append('password', password);
let options = new RequestOptions({ headers: new Headers({ "Content-Type": "application/x-www-form-urlencoded" })});
- return this.http.post('user/login', params.toString(), options)
+ return this.http.post('api/user/login', params.toString(), options)
.map((resp) => this.mapLogin(resp))
.catch((err) => super.processErrorResponse(err));
}
@@ -47,7 +47,7 @@
}
var token = this.store.get("token");
let option = new RequestOptions({ headers: new Headers({ 'X-SECURIS-TOKEN': token }) });
- return this.http.get('check', option)
+ return this.http.get('api/check', option)
.map((resp) => this.mapCheck(resp))
.catch((err) => super.processErrorResponse(err));
}
--
Gitblit v1.3.2