fix: Improve login, server selection and proxy configuration (#2511)

No potentially malicious URLs referenced in markdown; added
servers stays in server selector list; the currently active server
is visible on the bottom right of smaller screens; a proxy configuration
can be provided now and works; a trailing slash in the added server
is no problem anymore, because it's removed.

FIXES: WEB-193
This commit is contained in:
Felix van Hove
2025-06-11 11:32:36 -06:00
committed by GitHub
parent 46c4a1988d
commit b4503d34f3
6 changed files with 24 additions and 15 deletions
+1 -1
View File
@@ -20,7 +20,7 @@ const proxyConfig = [
{
context: '/api',
pathRewrite: { '^/api': '' },
target: 'http://api.icndb.com',
target: 'https://api.chucknorris.io',
changeOrigin: true
}
];
+7 -5
View File
@@ -1,6 +1,6 @@
'use strict';
const HttpsProxyAgent = require('https-proxy-agent');
const { HttpsProxyAgent } = require('https-proxy-agent');
/*
* API proxy configuration.
@@ -19,9 +19,9 @@ const proxyConfig = [
];
/*
* Configures a corporate proxy agent for the API proxy if needed.
* Configures a proxy agent for the API proxy if needed.
*/
function setupForCorporateProxy(proxyConfig) {
function setupForProxy(proxyConfig) {
if (!Array.isArray(proxyConfig)) {
proxyConfig = [proxyConfig];
}
@@ -30,14 +30,16 @@ function setupForCorporateProxy(proxyConfig) {
let agent = null;
if (proxyServer) {
console.log(`Using corporate proxy server: ${proxyServer}`);
console.log(`Using proxy server: ${proxyServer}`);
agent = new HttpsProxyAgent(proxyServer);
proxyConfig.forEach((entry) => {
entry.agent = agent;
});
} else {
console.warn('No proxy server configured. API requests will not be proxied.');
}
return proxyConfig;
}
module.exports = setupForCorporateProxy(proxyConfig);
module.exports = setupForProxy(proxyConfig);
+2 -2
View File
@@ -66,11 +66,11 @@
-->
<mifosx-login-form *ngIf="!resetPassword && !twoFactorAuthenticationRequired"></mifosx-login-form>
<div class="layout-row m-t-20">
<div class="layout-row">
<mifosx-reset-password *ngIf="resetPassword"></mifosx-reset-password>
<mifosx-two-factor-authentication *ngIf="twoFactorAuthenticationRequired"></mifosx-two-factor-authentication>
</div>
<div class="layout-row m-t-20">
<div class="layout-row">
<!-- Contact Information/Resources (hidden on smaller screens) -->
<mat-list class="information-list align-items-center custom-horizontal-list hide-lt-lg">
<mat-list-item
+4 -3
View File
@@ -1,4 +1,4 @@
<div class="layout-column m-b-20" ngClass="{{ styleClass }}" id="footer" *ngIf="displayBackEndInfo">
<div class="layout-column m-b-20 f12" ngClass="{{ styleClass }}" id="footer" *ngIf="displayBackEndInfo">
<mat-divider class="divider align-center"></mat-divider>
<div class="layout-column m-b-20 content-wrapper footer-center">
<table class="versions">
@@ -15,8 +15,9 @@
</td>
</tr>
<tr *ngIf="displayBackEndInfo">
<td colspan="2" class="center footer-content">
<b>{{ server }}</b>
<td class="footer-content">{{ 'labels.inputs.Server' | translate }}</td>
<td class="right footer-content">
{{ server }}
</td>
</tr>
<tr *ngIf="isBusinessDateDefined">
@@ -65,9 +65,13 @@ export class ServerSelectorComponent implements OnInit {
*/
addNewServer(): void {
let servers;
this.settingsService.setServer(this.form.value.url);
let url = this.form.value.url;
if (url.endsWith('/')) {
url = url.slice(0, -1);
}
this.settingsService.setServer(url);
servers = this.settingsService.servers;
servers.push(this.form.value.url);
servers.push(url);
this.settingsService.setServers(servers);
window.location.reload();
}
+4 -2
View File
@@ -205,8 +205,10 @@ export class WebAppComponent implements OnInit {
}
// Set default max date picker as Today
this.settingsService.setBusinessDate(this.dateUtils.formatDate(new Date(), SettingsService.businessDateFormat));
// Set the server list from the env var FINERACT_API_URLS
this.settingsService.setServers(environment.baseApiUrls.split(','));
// Set the server list from the env var FINERACT_API_URLS, but avoid overwriting "Add new server" user choice
if (!this.settingsService.servers) {
this.settingsService.setServers(environment.baseApiUrls.split(','));
}
// Set the Tenant Identifier(s) list from the env var
if (!localStorage.getItem('mifosXTenantIdentifier')) {
this.settingsService.setTenantIdentifier(environment.fineractPlatformTenantId || 'default');