Checkpoint: Les connecteurs web acceptent désormais les noms de domaine saisis sans protocole : HTTPS est ajouté automatiquement dans l’interface et à l’API. Les URL HTTP(S) valides restent acceptées et les adresses incorrectes affichent un message métier clair. Sept tests dédiés, la suite complète (71 tests), TypeScript et build ont été validés.
This commit is contained in:
24
shared/webPortalUrl.ts
Normal file
24
shared/webPortalUrl.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
/**
|
||||
* Ajoute HTTPS aux adresses de portail saisies sous forme de domaine simple.
|
||||
* Les protocoles explicites sont conservés afin que la validation puisse refuser
|
||||
* proprement ceux qui ne sont pas HTTP(S).
|
||||
*/
|
||||
export function normalizeWebPortalUrl(value: string): string {
|
||||
const trimmed = value.trim();
|
||||
if (!trimmed) return "";
|
||||
if (trimmed.startsWith("//")) return `https:${trimmed}`;
|
||||
if (/^[a-z][a-z\d+.-]*:\/\//i.test(trimmed) || /^(?:mailto|tel|data):/i.test(trimmed)) {
|
||||
return trimmed;
|
||||
}
|
||||
return `https://${trimmed}`;
|
||||
}
|
||||
|
||||
/** Vérifie qu’une URL de portail est une adresse HTTP(S) avec un hôte. */
|
||||
export function isValidWebPortalUrl(value: string): boolean {
|
||||
try {
|
||||
const url = new URL(value);
|
||||
return (url.protocol === "https:" || url.protocol === "http:") && Boolean(url.hostname);
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user