sysborg/check-my-domain

A lightweight Laravel package for domain ownership verification using DNS TXT records.

0.0.3 2025-07-24 02:32 UTC

This package is auto-updated.

Last update: 2025-07-24 02:34:15 UTC


README

A lightweight and developer-friendly Laravel package for verifying domain ownership using DNS TXT records.

License Laravel

๐Ÿš€ Features

  • ๐Ÿ” Verifies domain ownership via DNS TXT records.
  • โš™๏ธ Easily configurable and customizable.
  • ๐Ÿ”— Prefix-based hashing for safe and unique TXT records.
  • โšก Simple to integrate into any Laravel project.

๐Ÿ“ฆ Installation

composer require sysborg/check-my-domain

๐Ÿ› ๏ธ Configuration

Optionally publish the configuration file:

php artisan vendor:publish --tag=check-my-domain-config

This will publish the file to: config/checkMyDomain.php

Example config (config/checkMyDomain.php)

return [

    'prefix' => 'sbv',

    'settings' => [
        'use-domain' => true,
    ],
];
Key Description
prefix Prefix used in the TXT record name/value (e.g., sbv=...)
use-domain If true, includes the domain name in the generated hash

๐Ÿง  Usage

Injecting the Service

use Facades\Sysborg\CheckMyDomain\Lib\Domain;

$domainService = Domain::methodName(...parameters);

Generating a TXT Record

$record = Domain::generateTxtRecord('example.com', 'user-123');

// Output: sbv=4f8a3bd9eabf3c22bb9a5e2dd5c03f4c8ae6d2ef9f709137b20a2fd4e9d1

Validating Against DNS

$isVerified = Domain::compareTxtRecord('example.com', $record);

if ($isVerified) {
    echo 'โœ… Domain verified successfully!';
} else {
    echo 'โŒ Domain verification failed.';
}

๐Ÿงช Testing

composer test

Or use PHPUnit directly if configured:

./vendor/bin/phpunit

๐Ÿ“ Directory Structure

src/
โ”œโ”€โ”€ config/
โ”‚   โ””โ”€โ”€ checkMyDomain.php
โ”œโ”€โ”€ Exceptions/
โ”‚   โ”œโ”€โ”€ InvalidDomainException.php
โ”‚   โ””โ”€โ”€ InvalidPrefixException.php
โ”œโ”€โ”€ Lib/
โ”‚   โ””โ”€โ”€ Domain.php
โ”œโ”€โ”€ Providers/
โ”‚   โ””โ”€โ”€ CheckMyDomainProvider.php

๐Ÿ“š How It Works

  1. The package generates a unique hash based on your prefix, user ID, domain, and timestamp.
  2. The user adds the TXT record to their DNS zone (e.g. sbv=abcdef123456...).
  3. You use compareTxtRecord() to query the domain and validate if the correct TXT record is present.

This makes it easy to verify domain ownership for:

  • User-generated domains
  • SaaS onboarding
  • API clients or webhook callbacks

๐Ÿงฉ Integration Ideas

  • ๐Ÿ”— Connect to onboarding flows (verify user domains).
  • ๐Ÿ›ก๏ธ Add protection to webhook registration or integrations.
  • โš™๏ธ Automate DNS verification with APIs like Cloudflare.

๐Ÿ‘ฅ Credits

Maintained by Sysborg Created by Anderson Arruda

๐Ÿ“„ License

MIT License. See LICENSE file for details.