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/webapp/src/app/resources/base.ts |   94 +++++++++++++++++++++++++++++-----------------
 1 files changed, 59 insertions(+), 35 deletions(-)

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

--
Gitblit v1.3.2