Expand Link app with analytics, settings, and custom domains.
Deploy Ladill Link / deploy (push) Successful in 37s

Add Bitly-style branded domain support via Ladill Domains SSL API,
account analytics dashboard, settings page with default domain picker,
and fix SSO/dashboard issues from QR Plus template leftovers.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-06-27 12:16:34 +00:00
co-authored by Cursor
parent d9c91ad7d8
commit 9516fcb9f3
38 changed files with 1263 additions and 70 deletions
@@ -4,28 +4,28 @@ namespace App\Http\Controllers\Public;
use App\Http\Controllers\Controller;
use App\Services\Link\LinkManagerService;
use App\Services\Link\LinkPlatformProxy;
use App\Support\LadillLink;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
use Symfony\Component\HttpFoundation\Response;
class LinkRedirectController extends Controller
{
public function __construct(
private LinkManagerService $links,
private LinkPlatformProxy $platform,
) {}
public function resolve(Request $request, string $slug): RedirectResponse|View
public function resolve(Request $request, string $slug, ?string $path = null): RedirectResponse|Response
{
$link = $this->links->resolve($request, $slug);
if ($link !== null) {
return redirect()->away($link->destination_url, 302);
if ($path === null || $path === '') {
$link = $this->links->resolve($request, $slug);
if ($link !== null) {
return redirect()->away($link->destination_url, 302);
}
}
// Legacy QR / storefront codes still resolve on ladill.com/q/*
$legacy = rtrim((string) config('app.platform_url', 'https://ladill.com'), '/').'/q/'.$slug;
$qs = $request->getQueryString();
return redirect()->away($legacy.($qs ? '?'.$qs : ''), 302);
return $this->platform->forward($request, $slug, $path);
}
}