Skip to content

Commit 4d340f1

Browse files
committed
Temporary signed URL generator
1 parent ee3767b commit 4d340f1

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Api;
4+
5+
use App\Enums\LicenseSource;
6+
use App\Enums\Subscription;
7+
use App\Http\Controllers\Controller;
8+
use App\Http\Resources\Api\LicenseResource;
9+
use App\Jobs\CreateAnystackLicenseJob;
10+
use App\Models\License;
11+
use App\Models\User;
12+
use Illuminate\Http\Request;
13+
use Illuminate\Support\Facades\Hash;
14+
use Illuminate\Support\Facades\URL;
15+
use Illuminate\Support\Str;
16+
use Illuminate\Validation\Rules\Enum;
17+
18+
class TemporaryLinkController extends Controller
19+
{
20+
public function store(Request $request)
21+
{
22+
$validated = $request->validate([
23+
'email' => 'required|email',
24+
'route' => 'required|string',
25+
]);
26+
27+
$url = URL::temporarySignedRoute(
28+
$validated['route'],
29+
now()->addMinutes($request->integer('expiration', 30)),
30+
[
31+
'email' => $validated['email']
32+
]
33+
);
34+
35+
return response()->json(['url' => $url]);
36+
}
37+
}

routes/api.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?php
22

33
use App\Http\Controllers\Api\LicenseController;
4+
use App\Http\Controllers\Api\TemporaryLinkController;
45
use Illuminate\Http\Request;
56
use Illuminate\Support\Facades\Route;
67

@@ -19,6 +20,7 @@
1920
Route::post('/licenses', [LicenseController::class, 'store']);
2021
Route::get('/licenses/{key}', [LicenseController::class, 'show']);
2122
Route::get('/licenses', [LicenseController::class, 'index']);
23+
Route::post('/temp-links', [TemporaryLinkController::class, 'store']);
2224
});
2325

2426
Route::middleware('auth:sanctum')->group(function () {

0 commit comments

Comments
 (0)