🐞 fix: change url validation to require scheme and allow path

This commit is contained in:
Keith Solomon
2025-05-29 07:15:29 -05:00
parent de88a320d7
commit c6070dffeb
4 changed files with 8 additions and 1369 deletions

View File

@@ -4,7 +4,11 @@
const isValidDomain = (domain) => { const isValidDomain = (domain) => {
// Regular expression to validate a domain name // Regular expression to validate a domain name
const domainRegex = /^(?!:\/\/)([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}$/; // const domainRegex = /^(?!:\/\/)([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}$/;
// Regular expression to validate a domain name. Requires http or https prefix.
// Allows for optional path after the domain.
const domainRegex = /^https?:\/\/[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(\/[^\s]*)?\/?$/;
return domainRegex.test(domain); return domainRegex.test(domain);
} }

View File

@@ -12,7 +12,6 @@ class SiteModel {
/** /**
* Inserts a new site into the database. * Inserts a new site into the database.
* *
* @param {string} name - The name of the site.
* @param {string} domainName - The domain name of the site. * @param {string} domainName - The domain name of the site.
* *
* @returns {Promise<Object>} - The result of the insert operation. * @returns {Promise<Object>} - The result of the insert operation.
@@ -20,7 +19,7 @@ class SiteModel {
async insert(domainName) { async insert(domainName) {
// validate inputs // validate inputs
if (!domainName) { if (!domainName) {
throw new Error('Name and domain name are required to insert a site.'); throw new Error('Domain name is required to insert a site.');
} }
// validate domain name format // validate domain name format

File diff suppressed because it is too large Load Diff

View File

@@ -3,8 +3,8 @@
<legend class="fieldset-legend h3">Start a new test</legend> <legend class="fieldset-legend h3">Start a new test</legend>
<div class="flex gap-0"> <div class="flex gap-0">
<div class="w-fit m-0 p-0"> <div class="w-fit m-0 p-0">
<input type="text" class="input w-full border-r-0 rounded-r-none" name="domain" id="domain" placeholder="Site/URL to test" /> <input type="text" class="input w-full border-r-0 rounded-r-none" name="domain" id="domain" placeholder="https://example.com/" />
<p class="label pt-2">Add either single URL or link to sitemap</p> <p class="label pt-2">Single URL or link to sitemap, including "http" or "https"</p>
</div> </div>
<button type="submit" class="btn btn-info">Test</button> <button type="submit" class="btn btn-info">Test</button>
</div> </div>