diff --git a/.editorconfig b/.editorconfig
index 8f0de65..f904d4b 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -4,7 +4,7 @@ root = true
charset = utf-8
end_of_line = lf
indent_size = 4
-indent_style = space
+indent_style = tab
insert_final_newline = true
trim_trailing_whitespace = true
diff --git a/app/Models/User.php b/app/Models/User.php
index 4c3b766..294ab29 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -7,6 +7,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use MongoDB\Laravel\Auth\User as Authenticatable;
+use MongoDB\Laravel\Relations\HasMany;
class User extends Authenticatable
{
@@ -33,4 +34,9 @@ class User extends Authenticatable
'password' => 'hashed',
];
}
+
+ public function posts(): HasMany
+ {
+ return $this->hasMany(Post::class);
+ }
}
diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php
index 4faf484..0b3160f 100644
--- a/app/Providers/AppServiceProvider.php
+++ b/app/Providers/AppServiceProvider.php
@@ -3,8 +3,11 @@
namespace App\Providers;
use App\Models\PersonalAccessToken;
+use Illuminate\Support\Facades\Event;
use Illuminate\Support\ServiceProvider;
use Laravel\Sanctum\Sanctum;
+use SocialiteProviders\Authentik\Provider as AuthentikProvider;
+use SocialiteProviders\Manager\SocialiteWasCalled;
class AppServiceProvider extends ServiceProvider
{
@@ -22,5 +25,10 @@ class AppServiceProvider extends ServiceProvider
public function boot(): void
{
Sanctum::usePersonalAccessTokenModel(PersonalAccessToken::class);
+
+ // Authentik
+ Event::listen(function (SocialiteWasCalled $event) {
+ $event->extendSocialite('authentik', AuthentikProvider::class);
+ });
}
}
diff --git a/bootstrap/app.php b/bootstrap/app.php
index d654276..e924c42 100644
--- a/bootstrap/app.php
+++ b/bootstrap/app.php
@@ -1,8 +1,10 @@
withRouting(
@@ -10,6 +12,14 @@ return Application::configure(basePath: dirname(__DIR__))
api: __DIR__.'/../routes/api.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
+ then: function()
+ {
+ // Auth routing
+ Route::middleware('web')
+ ->prefix('auth')
+ ->controller(AuthController::class)
+ ->group(base_path('routes/auth.php'));
+ }
)
->withMiddleware(function (Middleware $middleware) {
//
diff --git a/bootstrap/providers.php b/bootstrap/providers.php
index 22e5b75..28be7c1 100644
--- a/bootstrap/providers.php
+++ b/bootstrap/providers.php
@@ -3,4 +3,5 @@
return [
App\Providers\AppServiceProvider::class,
MongoDB\Laravel\MongoDBServiceProvider::class,
+ SocialiteProviders\Manager\ServiceProvider::class,
];
diff --git a/composer.json b/composer.json
index e0bd776..59b350d 100644
--- a/composer.json
+++ b/composer.json
@@ -10,10 +10,18 @@
"license": "MIT",
"require": {
"php": "^8.2",
+ "ext-gmp": "*",
+ "intervention/image-driver-vips": "^1.0",
+ "intervention/image-laravel": "^1.5",
"laravel/framework": "^12.0",
"laravel/sanctum": "^4.0",
"laravel/tinker": "^2.10.1",
- "mongodb/laravel-mongodb": "^5.4"
+ "league/flysystem": "^3.29",
+ "league/flysystem-gridfs": "3.x-dev",
+ "livewire/livewire": "^3.6",
+ "mongodb/laravel-mongodb": "^5.4",
+ "predis/predis": "^3.0",
+ "socialiteproviders/authentik": "^5.2"
},
"require-dev": {
"fakerphp/faker": "^1.23",
diff --git a/composer.lock b/composer.lock
index ab7599e..1904b57 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "415b166128e0e640e52224f922594b39",
+ "content-hash": "e877d0f75fea10b62d0f07df7c2cf227",
"packages": [
{
"name": "brick/math",
@@ -510,6 +510,69 @@
],
"time": "2025-03-06T22:45:56+00:00"
},
+ {
+ "name": "firebase/php-jwt",
+ "version": "v6.11.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/firebase/php-jwt.git",
+ "reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/firebase/php-jwt/zipball/d1e91ecf8c598d073d0995afa8cd5c75c6e19e66",
+ "reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "guzzlehttp/guzzle": "^7.4",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpunit/phpunit": "^9.5",
+ "psr/cache": "^2.0||^3.0",
+ "psr/http-client": "^1.0",
+ "psr/http-factory": "^1.0"
+ },
+ "suggest": {
+ "ext-sodium": "Support EdDSA (Ed25519) signatures",
+ "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Firebase\\JWT\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Neuman Vong",
+ "email": "neuman+pear@twilio.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Anant Narayanan",
+ "email": "anant@php.net",
+ "role": "Developer"
+ }
+ ],
+ "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.",
+ "homepage": "https://github.com/firebase/php-jwt",
+ "keywords": [
+ "jwt",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/firebase/php-jwt/issues",
+ "source": "https://github.com/firebase/php-jwt/tree/v6.11.1"
+ },
+ "time": "2025-04-09T20:32:01+00:00"
+ },
{
"name": "fruitcake/php-cors",
"version": "v1.3.0",
@@ -1054,6 +1117,369 @@
],
"time": "2025-02-03T10:55:03+00:00"
},
+ {
+ "name": "intervention/gif",
+ "version": "4.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Intervention/gif.git",
+ "reference": "5999eac6a39aa760fb803bc809e8909ee67b451a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Intervention/gif/zipball/5999eac6a39aa760fb803bc809e8909ee67b451a",
+ "reference": "5999eac6a39aa760fb803bc809e8909ee67b451a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^2.1",
+ "phpunit/phpunit": "^10.0 || ^11.0 || ^12.0",
+ "slevomat/coding-standard": "~8.0",
+ "squizlabs/php_codesniffer": "^3.8"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Intervention\\Gif\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Oliver Vogel",
+ "email": "oliver@intervention.io",
+ "homepage": "https://intervention.io/"
+ }
+ ],
+ "description": "Native PHP GIF Encoder/Decoder",
+ "homepage": "https://github.com/intervention/gif",
+ "keywords": [
+ "animation",
+ "gd",
+ "gif",
+ "image"
+ ],
+ "support": {
+ "issues": "https://github.com/Intervention/gif/issues",
+ "source": "https://github.com/Intervention/gif/tree/4.2.2"
+ },
+ "funding": [
+ {
+ "url": "https://paypal.me/interventionio",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/Intervention",
+ "type": "github"
+ },
+ {
+ "url": "https://ko-fi.com/interventionphp",
+ "type": "ko_fi"
+ }
+ ],
+ "time": "2025-03-29T07:46:21+00:00"
+ },
+ {
+ "name": "intervention/image",
+ "version": "3.11.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Intervention/image.git",
+ "reference": "ebbb711871fb261c064cf4c422f5f3c124fe1842"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Intervention/image/zipball/ebbb711871fb261c064cf4c422f5f3c124fe1842",
+ "reference": "ebbb711871fb261c064cf4c422f5f3c124fe1842",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "intervention/gif": "^4.2",
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.6",
+ "phpstan/phpstan": "^2.1",
+ "phpunit/phpunit": "^10.0 || ^11.0 || ^12.0",
+ "slevomat/coding-standard": "~8.0",
+ "squizlabs/php_codesniffer": "^3.8"
+ },
+ "suggest": {
+ "ext-exif": "Recommended to be able to read EXIF data properly."
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Intervention\\Image\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Oliver Vogel",
+ "email": "oliver@intervention.io",
+ "homepage": "https://intervention.io/"
+ }
+ ],
+ "description": "PHP image manipulation",
+ "homepage": "https://image.intervention.io/",
+ "keywords": [
+ "gd",
+ "image",
+ "imagick",
+ "resize",
+ "thumbnail",
+ "watermark"
+ ],
+ "support": {
+ "issues": "https://github.com/Intervention/image/issues",
+ "source": "https://github.com/Intervention/image/tree/3.11.2"
+ },
+ "funding": [
+ {
+ "url": "https://paypal.me/interventionio",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/Intervention",
+ "type": "github"
+ },
+ {
+ "url": "https://ko-fi.com/interventionphp",
+ "type": "ko_fi"
+ }
+ ],
+ "time": "2025-02-27T13:08:55+00:00"
+ },
+ {
+ "name": "intervention/image-driver-vips",
+ "version": "1.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Intervention/image-driver-vips.git",
+ "reference": "080de0e638bcf508b5e79c2d88e82b0fd91b12b0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Intervention/image-driver-vips/zipball/080de0e638bcf508b5e79c2d88e82b0fd91b12b0",
+ "reference": "080de0e638bcf508b5e79c2d88e82b0fd91b12b0",
+ "shasum": ""
+ },
+ "require": {
+ "intervention/image": "^3.11.0",
+ "jcupitt/vips": "^2.4",
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "ext-fileinfo": "*",
+ "phpstan/phpstan": "^2",
+ "phpunit/phpunit": "^10.0 || ^11.0 || ^12.0",
+ "slevomat/coding-standard": "~8.0",
+ "squizlabs/php_codesniffer": "^3.8"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Intervention\\Image\\Drivers\\Vips\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Oliver Vogel",
+ "email": "oliver@intervention.io",
+ "homepage": "https://intervention.io/"
+ },
+ {
+ "name": "Thomas Picquet",
+ "email": "thomas@sctr.net"
+ }
+ ],
+ "description": "libvips driver for Intervention Image",
+ "homepage": "https://image.intervention.io/",
+ "keywords": [
+ "image",
+ "libvips",
+ "vips"
+ ],
+ "support": {
+ "issues": "https://github.com/Intervention/image-driver-vips/issues",
+ "source": "https://github.com/Intervention/image-driver-vips/tree/1.0.5"
+ },
+ "funding": [
+ {
+ "url": "https://paypal.me/interventionio",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/Intervention",
+ "type": "github"
+ },
+ {
+ "url": "https://ko-fi.com/interventionphp",
+ "type": "ko_fi"
+ }
+ ],
+ "time": "2025-05-05T13:53:52+00:00"
+ },
+ {
+ "name": "intervention/image-laravel",
+ "version": "1.5.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Intervention/image-laravel.git",
+ "reference": "056029431400a5cc56036172787a578f334683c4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Intervention/image-laravel/zipball/056029431400a5cc56036172787a578f334683c4",
+ "reference": "056029431400a5cc56036172787a578f334683c4",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/http": "^8|^9|^10|^11|^12",
+ "illuminate/routing": "^8|^9|^10|^11|^12",
+ "illuminate/support": "^8|^9|^10|^11|^12",
+ "intervention/image": "^3.11",
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "ext-fileinfo": "*",
+ "orchestra/testbench": "^8.18 || ^9.9",
+ "phpunit/phpunit": "^10.0 || ^11.0 || ^12.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "aliases": {
+ "Image": "Intervention\\Image\\Laravel\\Facades\\Image"
+ },
+ "providers": [
+ "Intervention\\Image\\Laravel\\ServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Intervention\\Image\\Laravel\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Oliver Vogel",
+ "email": "oliver@intervention.io",
+ "homepage": "https://intervention.io/"
+ }
+ ],
+ "description": "Laravel Integration of Intervention Image",
+ "homepage": "https://image.intervention.io/",
+ "keywords": [
+ "gd",
+ "image",
+ "imagick",
+ "laravel",
+ "resize",
+ "thumbnail",
+ "watermark"
+ ],
+ "support": {
+ "issues": "https://github.com/Intervention/image-laravel/issues",
+ "source": "https://github.com/Intervention/image-laravel/tree/1.5.6"
+ },
+ "funding": [
+ {
+ "url": "https://paypal.me/interventionio",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/Intervention",
+ "type": "github"
+ },
+ {
+ "url": "https://ko-fi.com/interventionphp",
+ "type": "ko_fi"
+ }
+ ],
+ "time": "2025-04-04T15:09:55+00:00"
+ },
+ {
+ "name": "jcupitt/vips",
+ "version": "v2.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/libvips/php-vips.git",
+ "reference": "a54c1cceea581b592a199edd61a7c06f44a24c08"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/libvips/php-vips/zipball/a54c1cceea581b592a199edd61a7c06f44a24c08",
+ "reference": "a54c1cceea581b592a199edd61a7c06f44a24c08",
+ "shasum": ""
+ },
+ "require": {
+ "ext-ffi": "*",
+ "php": ">=7.4",
+ "psr/log": "^1.1.3|^2.0|^3.0"
+ },
+ "require-dev": {
+ "php-parallel-lint/php-parallel-lint": "^1.3",
+ "phpdocumentor/shim": "^3.3",
+ "phpunit/phpunit": "^9.5",
+ "squizlabs/php_codesniffer": "^3.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Jcupitt\\Vips\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "John Cupitt",
+ "email": "jcupitt@gmail.com",
+ "homepage": "https://github.com/jcupitt",
+ "role": "Developer"
+ }
+ ],
+ "description": "A high-level interface to the libvips image processing library.",
+ "homepage": "https://github.com/libvips/php-vips",
+ "keywords": [
+ "image",
+ "libvips",
+ "processing"
+ ],
+ "support": {
+ "issues": "https://github.com/libvips/php-vips/issues",
+ "source": "https://github.com/libvips/php-vips/tree/v2.5.0"
+ },
+ "time": "2025-04-04T17:10:13+00:00"
+ },
{
"name": "laravel/framework",
"version": "v12.15.0",
@@ -1453,6 +1879,78 @@
},
"time": "2025-03-19T13:51:03+00:00"
},
+ {
+ "name": "laravel/socialite",
+ "version": "v5.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/socialite.git",
+ "reference": "30972c12a41f71abeb418bc9ff157da8d9231519"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/socialite/zipball/30972c12a41f71abeb418bc9ff157da8d9231519",
+ "reference": "30972c12a41f71abeb418bc9ff157da8d9231519",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "firebase/php-jwt": "^6.4",
+ "guzzlehttp/guzzle": "^6.0|^7.0",
+ "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0",
+ "illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0",
+ "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0",
+ "league/oauth1-client": "^1.11",
+ "php": "^7.2|^8.0",
+ "phpseclib/phpseclib": "^3.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.0",
+ "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0|^9.0|^10.0",
+ "phpstan/phpstan": "^1.12.23",
+ "phpunit/phpunit": "^8.0|^9.3|^10.4|^11.5"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "aliases": {
+ "Socialite": "Laravel\\Socialite\\Facades\\Socialite"
+ },
+ "providers": [
+ "Laravel\\Socialite\\SocialiteServiceProvider"
+ ]
+ },
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Laravel\\Socialite\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "Laravel wrapper around OAuth 1 & OAuth 2 libraries.",
+ "homepage": "https://laravel.com",
+ "keywords": [
+ "laravel",
+ "oauth"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/socialite/issues",
+ "source": "https://github.com/laravel/socialite"
+ },
+ "time": "2025-04-21T14:21:34+00:00"
+ },
{
"name": "laravel/tinker",
"version": "v2.10.1",
@@ -1791,6 +2289,52 @@
},
"time": "2024-10-08T08:58:34+00:00"
},
+ {
+ "name": "league/flysystem-gridfs",
+ "version": "3.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/flysystem-gridfs.git",
+ "reference": "10f433bc7135daf0091c75041681d2e80daaaba1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/flysystem-gridfs/zipball/10f433bc7135daf0091c75041681d2e80daaaba1",
+ "reference": "10f433bc7135daf0091c75041681d2e80daaaba1",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mongodb": "^1.3|^2",
+ "league/flysystem": "^3.10.0",
+ "mongodb/mongodb": "^1.2|^2",
+ "php": "^8.0.2"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "League\\Flysystem\\GridFS\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frankdejonge.nl"
+ },
+ {
+ "name": "MongoDB PHP",
+ "email": "driver-php@mongodb.com"
+ }
+ ],
+ "support": {
+ "source": "https://github.com/thephpleague/flysystem-gridfs/tree/3.x"
+ },
+ "time": "2024-11-04T08:31:44+00:00"
+ },
{
"name": "league/flysystem-local",
"version": "3.29.0",
@@ -1896,6 +2440,82 @@
],
"time": "2024-09-21T08:32:55+00:00"
},
+ {
+ "name": "league/oauth1-client",
+ "version": "v1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/oauth1-client.git",
+ "reference": "f9c94b088837eb1aae1ad7c4f23eb65cc6993055"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/f9c94b088837eb1aae1ad7c4f23eb65cc6993055",
+ "reference": "f9c94b088837eb1aae1ad7c4f23eb65cc6993055",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-openssl": "*",
+ "guzzlehttp/guzzle": "^6.0|^7.0",
+ "guzzlehttp/psr7": "^1.7|^2.0",
+ "php": ">=7.1||>=8.0"
+ },
+ "require-dev": {
+ "ext-simplexml": "*",
+ "friendsofphp/php-cs-fixer": "^2.17",
+ "mockery/mockery": "^1.3.3",
+ "phpstan/phpstan": "^0.12.42",
+ "phpunit/phpunit": "^7.5||9.5"
+ },
+ "suggest": {
+ "ext-simplexml": "For decoding XML-based responses."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev",
+ "dev-develop": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\OAuth1\\Client\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ben Corlett",
+ "email": "bencorlett@me.com",
+ "homepage": "http://www.webcomm.com.au",
+ "role": "Developer"
+ }
+ ],
+ "description": "OAuth 1.0 Client Library",
+ "keywords": [
+ "Authentication",
+ "SSO",
+ "authorization",
+ "bitbucket",
+ "identity",
+ "idp",
+ "oauth",
+ "oauth1",
+ "single sign on",
+ "trello",
+ "tumblr",
+ "twitter"
+ ],
+ "support": {
+ "issues": "https://github.com/thephpleague/oauth1-client/issues",
+ "source": "https://github.com/thephpleague/oauth1-client/tree/v1.11.0"
+ },
+ "time": "2024-12-10T19:59:05+00:00"
+ },
{
"name": "league/uri",
"version": "7.5.1",
@@ -2070,6 +2690,82 @@
],
"time": "2024-12-08T08:18:47+00:00"
},
+ {
+ "name": "livewire/livewire",
+ "version": "v3.6.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/livewire/livewire.git",
+ "reference": "56aa1bb63a46e06181c56fa64717a7287e19115e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/livewire/livewire/zipball/56aa1bb63a46e06181c56fa64717a7287e19115e",
+ "reference": "56aa1bb63a46e06181c56fa64717a7287e19115e",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/database": "^10.0|^11.0|^12.0",
+ "illuminate/routing": "^10.0|^11.0|^12.0",
+ "illuminate/support": "^10.0|^11.0|^12.0",
+ "illuminate/validation": "^10.0|^11.0|^12.0",
+ "laravel/prompts": "^0.1.24|^0.2|^0.3",
+ "league/mime-type-detection": "^1.9",
+ "php": "^8.1",
+ "symfony/console": "^6.0|^7.0",
+ "symfony/http-kernel": "^6.2|^7.0"
+ },
+ "require-dev": {
+ "calebporzio/sushi": "^2.1",
+ "laravel/framework": "^10.15.0|^11.0|^12.0",
+ "mockery/mockery": "^1.3.1",
+ "orchestra/testbench": "^8.21.0|^9.0|^10.0",
+ "orchestra/testbench-dusk": "^8.24|^9.1|^10.0",
+ "phpunit/phpunit": "^10.4|^11.5",
+ "psy/psysh": "^0.11.22|^0.12"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "aliases": {
+ "Livewire": "Livewire\\Livewire"
+ },
+ "providers": [
+ "Livewire\\LivewireServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "Livewire\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Caleb Porzio",
+ "email": "calebporzio@gmail.com"
+ }
+ ],
+ "description": "A front-end framework for Laravel.",
+ "support": {
+ "issues": "https://github.com/livewire/livewire/issues",
+ "source": "https://github.com/livewire/livewire/tree/v3.6.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/livewire",
+ "type": "github"
+ }
+ ],
+ "time": "2025-04-12T22:26:52+00:00"
+ },
{
"name": "mongodb/laravel-mongodb",
"version": "5.4.1",
@@ -2176,21 +2872,21 @@
},
{
"name": "mongodb/mongodb",
- "version": "1.21.1",
+ "version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/mongodb/mongo-php-library.git",
- "reference": "37bc8df3a67ddf8380704a5ba5dbd00e92ec1f6a"
+ "reference": "04cd7edc6a28950e3fab6eccb2869d72a0541232"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/37bc8df3a67ddf8380704a5ba5dbd00e92ec1f6a",
- "reference": "37bc8df3a67ddf8380704a5ba5dbd00e92ec1f6a",
+ "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/04cd7edc6a28950e3fab6eccb2869d72a0541232",
+ "reference": "04cd7edc6a28950e3fab6eccb2869d72a0541232",
"shasum": ""
},
"require": {
"composer-runtime-api": "^2.0",
- "ext-mongodb": "^1.21.0",
+ "ext-mongodb": "^2.0",
"php": "^8.1",
"psr/log": "^1.1.4|^2|^3"
},
@@ -2246,9 +2942,9 @@
],
"support": {
"issues": "https://github.com/mongodb/mongo-php-library/issues",
- "source": "https://github.com/mongodb/mongo-php-library/tree/1.21.1"
+ "source": "https://github.com/mongodb/mongo-php-library/tree/2.0.0"
},
- "time": "2025-02-28T17:24:20+00:00"
+ "time": "2025-04-10T08:34:11+00:00"
},
{
"name": "monolog/monolog",
@@ -2752,6 +3448,123 @@
],
"time": "2025-05-08T08:14:37+00:00"
},
+ {
+ "name": "paragonie/constant_time_encoding",
+ "version": "v3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paragonie/constant_time_encoding.git",
+ "reference": "df1e7fde177501eee2037dd159cf04f5f301a512"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/df1e7fde177501eee2037dd159cf04f5f301a512",
+ "reference": "df1e7fde177501eee2037dd159cf04f5f301a512",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9",
+ "vimeo/psalm": "^4|^5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "ParagonIE\\ConstantTime\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com",
+ "homepage": "https://paragonie.com",
+ "role": "Maintainer"
+ },
+ {
+ "name": "Steve 'Sc00bz' Thomas",
+ "email": "steve@tobtu.com",
+ "homepage": "https://www.tobtu.com",
+ "role": "Original Developer"
+ }
+ ],
+ "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)",
+ "keywords": [
+ "base16",
+ "base32",
+ "base32_decode",
+ "base32_encode",
+ "base64",
+ "base64_decode",
+ "base64_encode",
+ "bin2hex",
+ "encoding",
+ "hex",
+ "hex2bin",
+ "rfc4648"
+ ],
+ "support": {
+ "email": "info@paragonie.com",
+ "issues": "https://github.com/paragonie/constant_time_encoding/issues",
+ "source": "https://github.com/paragonie/constant_time_encoding"
+ },
+ "time": "2024-05-08T12:36:18+00:00"
+ },
+ {
+ "name": "paragonie/random_compat",
+ "version": "v9.99.100",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paragonie/random_compat.git",
+ "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
+ "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">= 7"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*|5.*",
+ "vimeo/psalm": "^1"
+ },
+ "suggest": {
+ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
+ },
+ "type": "library",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com",
+ "homepage": "https://paragonie.com"
+ }
+ ],
+ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
+ "keywords": [
+ "csprng",
+ "polyfill",
+ "pseudorandom",
+ "random"
+ ],
+ "support": {
+ "email": "info@paragonie.com",
+ "issues": "https://github.com/paragonie/random_compat/issues",
+ "source": "https://github.com/paragonie/random_compat"
+ },
+ "time": "2020-10-15T08:29:30+00:00"
+ },
{
"name": "phpoption/phpoption",
"version": "1.9.3",
@@ -2827,6 +3640,179 @@
],
"time": "2024-07-20T21:41:07+00:00"
},
+ {
+ "name": "phpseclib/phpseclib",
+ "version": "3.0.43",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpseclib/phpseclib.git",
+ "reference": "709ec107af3cb2f385b9617be72af8cf62441d02"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/709ec107af3cb2f385b9617be72af8cf62441d02",
+ "reference": "709ec107af3cb2f385b9617be72af8cf62441d02",
+ "shasum": ""
+ },
+ "require": {
+ "paragonie/constant_time_encoding": "^1|^2|^3",
+ "paragonie/random_compat": "^1.4|^2.0|^9.99.99",
+ "php": ">=5.6.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "*"
+ },
+ "suggest": {
+ "ext-dom": "Install the DOM extension to load XML formatted public keys.",
+ "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.",
+ "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.",
+ "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
+ "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "phpseclib/bootstrap.php"
+ ],
+ "psr-4": {
+ "phpseclib3\\": "phpseclib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jim Wigginton",
+ "email": "terrafrost@php.net",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Patrick Monnerat",
+ "email": "pm@datasphere.ch",
+ "role": "Developer"
+ },
+ {
+ "name": "Andreas Fischer",
+ "email": "bantu@phpbb.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Hans-Jürgen Petrich",
+ "email": "petrich@tronic-media.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Graham Campbell",
+ "email": "graham@alt-three.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.",
+ "homepage": "http://phpseclib.sourceforge.net",
+ "keywords": [
+ "BigInteger",
+ "aes",
+ "asn.1",
+ "asn1",
+ "blowfish",
+ "crypto",
+ "cryptography",
+ "encryption",
+ "rsa",
+ "security",
+ "sftp",
+ "signature",
+ "signing",
+ "ssh",
+ "twofish",
+ "x.509",
+ "x509"
+ ],
+ "support": {
+ "issues": "https://github.com/phpseclib/phpseclib/issues",
+ "source": "https://github.com/phpseclib/phpseclib/tree/3.0.43"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/terrafrost",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/phpseclib",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-12-14T21:12:59+00:00"
+ },
+ {
+ "name": "predis/predis",
+ "version": "v3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/predis/predis.git",
+ "reference": "34fb0a7da0330df1bab4280fcac4afdeeccc3edf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/predis/predis/zipball/34fb0a7da0330df1bab4280fcac4afdeeccc3edf",
+ "reference": "34fb0a7da0330df1bab4280fcac4afdeeccc3edf",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "psr/http-message": "^1.0|^2.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.3",
+ "phpstan/phpstan": "^1.9",
+ "phpunit/phpcov": "^6.0 || ^8.0",
+ "phpunit/phpunit": "^8.0 || ~9.4.4"
+ },
+ "suggest": {
+ "ext-relay": "Faster connection with in-memory caching (>=0.6.2)"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Predis\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Till Krüss",
+ "homepage": "https://till.im",
+ "role": "Maintainer"
+ }
+ ],
+ "description": "A flexible and feature-complete Redis/Valkey client for PHP.",
+ "homepage": "http://github.com/predis/predis",
+ "keywords": [
+ "nosql",
+ "predis",
+ "redis"
+ ],
+ "support": {
+ "issues": "https://github.com/predis/predis/issues",
+ "source": "https://github.com/predis/predis/tree/v3.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/tillkruss",
+ "type": "github"
+ }
+ ],
+ "time": "2025-05-16T18:30:32+00:00"
+ },
{
"name": "psr/clock",
"version": "1.0.0",
@@ -3530,6 +4516,130 @@
],
"time": "2024-04-27T21:32:50+00:00"
},
+ {
+ "name": "socialiteproviders/authentik",
+ "version": "5.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/SocialiteProviders/Authentik.git",
+ "reference": "4cf129cf04728a38e0531c54454464b162f0fa66"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/SocialiteProviders/Authentik/zipball/4cf129cf04728a38e0531c54454464b162f0fa66",
+ "reference": "4cf129cf04728a38e0531c54454464b162f0fa66",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": "^8.0",
+ "socialiteproviders/manager": "^4.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "SocialiteProviders\\Authentik\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "rf152",
+ "email": "git@rf152.co.uk"
+ }
+ ],
+ "description": "Authentik OAuth2 Provider for Laravel Socialite",
+ "keywords": [
+ "authentik",
+ "laravel",
+ "oauth",
+ "provider",
+ "socialite"
+ ],
+ "support": {
+ "docs": "https://socialiteproviders.com/authentik",
+ "issues": "https://github.com/socialiteproviders/providers/issues",
+ "source": "https://github.com/socialiteproviders/providers"
+ },
+ "time": "2023-11-07T22:21:16+00:00"
+ },
+ {
+ "name": "socialiteproviders/manager",
+ "version": "v4.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/SocialiteProviders/Manager.git",
+ "reference": "8180ec14bef230ec2351cff993d5d2d7ca470ef4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/8180ec14bef230ec2351cff993d5d2d7ca470ef4",
+ "reference": "8180ec14bef230ec2351cff993d5d2d7ca470ef4",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/support": "^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0",
+ "laravel/socialite": "^5.5",
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.2",
+ "phpunit/phpunit": "^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "SocialiteProviders\\Manager\\ServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "SocialiteProviders\\Manager\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Andy Wendt",
+ "email": "andy@awendt.com"
+ },
+ {
+ "name": "Anton Komarev",
+ "email": "a.komarev@cybercog.su"
+ },
+ {
+ "name": "Miguel Piedrafita",
+ "email": "soy@miguelpiedrafita.com"
+ },
+ {
+ "name": "atymic",
+ "email": "atymicq@gmail.com",
+ "homepage": "https://atymic.dev"
+ }
+ ],
+ "description": "Easily add new or override built-in providers in Laravel Socialite.",
+ "homepage": "https://socialiteproviders.com",
+ "keywords": [
+ "laravel",
+ "manager",
+ "oauth",
+ "providers",
+ "socialite"
+ ],
+ "support": {
+ "issues": "https://github.com/socialiteproviders/manager/issues",
+ "source": "https://github.com/socialiteproviders/manager"
+ },
+ "time": "2025-02-24T19:33:30+00:00"
+ },
{
"name": "symfony/clock",
"version": "v7.2.0",
@@ -7109,16 +8219,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "11.5.20",
+ "version": "11.5.21",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "e6bdea63ecb7a8287d2cdab25bdde3126e0cfe6f"
+ "reference": "d565e2cdc21a7db9dc6c399c1fc2083b8010f289"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e6bdea63ecb7a8287d2cdab25bdde3126e0cfe6f",
- "reference": "e6bdea63ecb7a8287d2cdab25bdde3126e0cfe6f",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d565e2cdc21a7db9dc6c399c1fc2083b8010f289",
+ "reference": "d565e2cdc21a7db9dc6c399c1fc2083b8010f289",
"shasum": ""
},
"require": {
@@ -7141,7 +8251,7 @@
"sebastian/code-unit": "^3.0.3",
"sebastian/comparator": "^6.3.1",
"sebastian/diff": "^6.0.2",
- "sebastian/environment": "^7.2.0",
+ "sebastian/environment": "^7.2.1",
"sebastian/exporter": "^6.3.0",
"sebastian/global-state": "^7.0.2",
"sebastian/object-enumerator": "^6.0.1",
@@ -7190,7 +8300,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.20"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.21"
},
"funding": [
{
@@ -7214,7 +8324,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-11T06:39:52+00:00"
+ "time": "2025-05-21T12:35:00+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -7593,23 +8703,23 @@
},
{
"name": "sebastian/environment",
- "version": "7.2.0",
+ "version": "7.2.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5"
+ "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5",
- "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/a5c75038693ad2e8d4b6c15ba2403532647830c4",
+ "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4",
"shasum": ""
},
"require": {
"php": ">=8.2"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^11.3"
},
"suggest": {
"ext-posix": "*"
@@ -7645,15 +8755,27 @@
"support": {
"issues": "https://github.com/sebastianbergmann/environment/issues",
"security": "https://github.com/sebastianbergmann/environment/security/policy",
- "source": "https://github.com/sebastianbergmann/environment/tree/7.2.0"
+ "source": "https://github.com/sebastianbergmann/environment/tree/7.2.1"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/environment",
+ "type": "tidelift"
}
],
- "time": "2024-07-03T04:54:44+00:00"
+ "time": "2025-05-21T11:55:47+00:00"
},
{
"name": "sebastian/exporter",
@@ -8319,11 +9441,14 @@
],
"aliases": [],
"minimum-stability": "stable",
- "stability-flags": {},
+ "stability-flags": {
+ "league/flysystem-gridfs": 20
+ },
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
- "php": "^8.2"
+ "php": "^8.2",
+ "ext-gmp": "*"
},
"platform-dev": {},
"plugin-api-version": "2.6.0"
diff --git a/config/cache.php b/config/cache.php
index 925f7d2..d8378a7 100644
--- a/config/cache.php
+++ b/config/cache.php
@@ -90,6 +90,16 @@ return [
'driver' => 'octane',
],
+ 'mongodb' => [
+ 'driver' => 'mongodb',
+ 'connection' => 'mongodb',
+ 'collection' => 'cache',
+ 'lock_connection' => 'mongodb',
+ 'lock_collection' => 'cache_locks',
+ 'lock_lottery' => [2, 100],
+ 'lock_timeout' => 86400,
+ ],
+
],
/*
diff --git a/config/filesystems.php b/config/filesystems.php
index 3d671bd..60e60ee 100644
--- a/config/filesystems.php
+++ b/config/filesystems.php
@@ -60,6 +60,11 @@ return [
'report' => false,
],
+ 'gridfs' => [
+ 'driver' => 'gridfs',
+ 'connection' => 'mongodb',
+ ],
+
],
/*
diff --git a/config/services.php b/config/services.php
index 27a3617..319963d 100644
--- a/config/services.php
+++ b/config/services.php
@@ -35,4 +35,11 @@ return [
],
],
+ 'authentik' => [
+ 'base_url' => env('AUTHENTIK_BASE_URL'),
+ 'client_id' => env('AUTHENTIK_CLIENT_ID'),
+ 'client_secret' => env('AUTHENTIK_CLIENT_SECRET'),
+ 'redirect' => env('AUTHENTIK_REDIRECT_URI'),
+ ],
+
];
diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php
index 05fb5d9..d5e7e7f 100644
--- a/database/migrations/0001_01_01_000000_create_users_table.php
+++ b/database/migrations/0001_01_01_000000_create_users_table.php
@@ -1,8 +1,9 @@
text('user_agent')->nullable();
$table->longText('payload');
$table->integer('last_activity')->index();
+ $table->expire('expires_at', 0);
});
}
diff --git a/database/migrations/0001_01_01_000001_create_cache_table.php b/database/migrations/0001_01_01_000001_create_cache_table.php
index b9c106b..f35381c 100644
--- a/database/migrations/0001_01_01_000001_create_cache_table.php
+++ b/database/migrations/0001_01_01_000001_create_cache_table.php
@@ -1,8 +1,9 @@
-
-
-
-
-
- Laravel
-
-
-
-
-
-
- @if (file_exists(public_path('build/manifest.json')) || file_exists(public_path('hot')))
- @vite(['resources/css/app.css', 'resources/js/app.js'])
- @else
-
- @endif
-
-
-
- @if (Route::has('login'))
-
- @endif
-
-
-
-
-
Let's get started
-
Laravel has an incredibly rich ecosystem.
We suggest starting with the following.
-
-
-
-
- {{-- Laravel Logo --}}
-
-
- {{-- Light Mode 12 SVG --}}
-
-
- {{-- Dark Mode 12 SVG --}}
-
-
-
-
-
-
- @if (Route::has('login'))
-
- @endif
-
-
diff --git a/routes/web.php b/routes/web.php
index 86a06c5..67ab539 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -1,7 +1,27 @@
name('home');
+
+// Authenticated routes
+Route::middleware('auth')->group(function () {
+ Route::get('/upload', UploadPage::class)->name('upload');
+});
+
+// Post routes
+Route::middleware('auth')->prefix('posts')->group(function () {
+ Route::get('/', PostsPage::class)->name('posts.home');
+ Route::get('/{post}', ViewPost::class);
+ Route::get('/{post}/edit', EditPost::class);
+ Route::get('/{post}/download', function(Post $post) {
+ return Storage::download("posts/$post->id/full", config('app.name') . "_$post->id.$post->extension");
+ });
});
diff --git a/vite.config.js b/vite.config.js
index 29fbfe9..421b569 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -1,6 +1,5 @@
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
-import tailwindcss from '@tailwindcss/vite';
export default defineConfig({
plugins: [
@@ -8,6 +7,5 @@ export default defineConfig({
input: ['resources/css/app.css', 'resources/js/app.js'],
refresh: true,
}),
- tailwindcss(),
],
});