slogan3

Ontwikkel een aangepaste plugin voor verbeterde Statamic-functionaliteit

description

Door het ontwikkelen van een aangepaste plugin kunnen gebruikers hun Statamic-site aanpassen aan hun specifieke eisen, waardoor zowel de functionaliteit als de gebruikerservaring verbeteren.

prompt

try_prompt

Ik wil een unieke Statamic-plugin maken die de volgende functies toevoegt: {{plugin_features}}. Mijn huidige Statamic-versie is: ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

ai_answers

provider: openai
model: gpt-4.1-nano
Uitstekend dat je een unieke Statamic-plugin wilt ontwikkelen voor gebruikersregistratie en profielbeheer. Hier is een overzicht van richtlijnen, technische specificaties en best practices voor het ontwikkelproces, afgestemd op Statamic 3.0.0: 1. Planning en ontwerp - Functionaliteiten vastleggen: - Gebruikersregistratie via een frontend formulier. - Inloggen en uitloggen. - Gebruikersprofielen bekijken en bewerken. - User Roles en permissies bepalen. - Data structuur ontwerpen: - Een dedicated gebruikers- of profielblad (bijvoorbeeld een Collection of een dedicated Eloquent-model). 2. Technische specificaties - Gebruik van Statamic's ingebouwde gebruikers- en authenticatiesystemen waar mogelijk. - Voor aangepaste functionaliteiten, overweeg: - Een custom add-on (plugin) ontwikkelen. - Eventueel gebruik maken van Laravel's authenticatie features die onderliggend aan Statamic werken. - Frontend: - Blade templates of Statamic's Antlers templating. - Vue.js of andere JS-frameworks kunnen worden geïntegreerd voor dynamische onderdelen. - Backend: - PHP 8+ (voor compatibiliteit met Statamic 3.0.0 en Laravel 8). 3. Ontwikkelproces - Set-up: - Maak een nieuwe add-on via `php artisan make:addon`. - Structuur aanmaken: directories voor controllers, routes, views, assets. - Functionaliteiten implementeren: - Registratieformulier: - Gebruik Statamic's form system of Laravel's form handling. - Validatie van input. - Authenticatie: - Gebruik Laravel’s Auth-facade voor login/logout. - Zorg dat gebruikersgegevens veilig worden opgeslagen. - Profielbeheer: - Maak routes en controllers voor profiel bekijken en bewerken. - Gebruik Eloquent-modellen voor gebruikersgegevens. - Veiligheid: - Beveilig formulieren met CSRF tokens. - Input validatie. - Beperk toegang tot profielpagina's tot ingelogde gebruikers. 4. Best practices - Modulariteit: - Maak je add-on herbruikbaar en uitbreidbaar. - Documentatie: - Documenteer je code en installatie-instructies. - Testing: - Schrijf unit- en functionele tests. - Versiebeheer: - Gebruik Git voor broncodebeheer. - Compatibiliteit: - Test de plugin grondig op Statamic 3.0.0. 5. Extras en optimalisaties - Voeg optioneel e-mail verificatie toe. - Implementeer wachtwoordherstel. - Maak gebruik van Statamic's API en hooks voor integratie. 6. Deployment - Pack je add-on voor distributie. - Documenteer installatie en configuratie voor gebruikers. Door deze richtlijnen te volgen, ontwikkel je een robuuste, veilige en uitbreidbare plugin die naadloos integreert met Statamic 3.0.0. Veel succes met je ontwikkeling!
provider: deepseek
model: deepseek-chat
Hier is een stapsgewijze handleiding voor het ontwikkelen van een gebruikersregistratie- en profielbeheerplugin voor Statamic 3.0.0: ## 1. Projectstructuur ``` site/addons/UserRegistration/ ├── src/ │ ├── Http/ │ │ ├── Controllers/ │ │ └── Requests/ │ ├── Listeners/ │ ├── Services/ │ └── UserRegistrationServiceProvider.php ├── resources/ │ ├── views/ │ └── config/ ├── database/migrations/ └── composer.json ``` ## 2. Service Provider Setup ```php <?php // UserRegistrationServiceProvider.php namespace App\Addons\UserRegistration; use Statamic\Providers\AddonServiceProvider; class UserRegistrationServiceProvider extends AddonServiceProvider { protected $routes = [ 'web' => __DIR__.'/../routes/web.php', ]; protected $views = __DIR__.'/../resources/views'; protected $middlewareGroups = [ 'web' => [ \App\Addons\UserRegistration\Http\Middleware\Authenticate::class, ], ]; } ``` ## 3. Routes Configuration ```php <?php // routes/web.php Route::group(['prefix' => 'user'], function () { Route::get('register', 'UserRegistrationController@showRegistrationForm')->name('user.register'); Route::post('register', 'UserRegistrationController@register'); Route::get('profile', 'UserProfileController@show')->name('user.profile'); Route::put('profile', 'UserProfileController@update'); Route::get('login', 'UserAuthController@showLoginForm')->name('user.login'); Route::post('login', 'UserAuthController@login'); Route::post('logout', 'UserAuthController@logout')->name('user.logout'); }); ``` ## 4. Gebruikersregistratie Controller ```php <?php namespace App\Addons\UserRegistration\Http\Controllers; use Statamic\Http\Controllers\Controller; use App\Addons\UserRegistration\Http\Requests\RegistrationRequest; use Statamic\Auth\User; class UserRegistrationController extends Controller { public function showRegistrationForm() { return view('user-registration::register'); } public function register(RegistrationRequest $request) { $user = User::make() ->email($request->email) ->data([ 'name' => $request->name, 'password' => bcrypt($request->password) ]); $user->save(); auth()->login($user); return redirect('/user/profile'); } } ``` ## 5. Form Request Validatie ```php <?php namespace App\Addons\UserRegistration\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class RegistrationRequest extends FormRequest { public function rules() { return [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:user_data,email', 'password' => 'required|min:8|confirmed', ]; } } ``` ## 6. Profielbeheer Controller ```php <?php namespace App\Addons\UserRegistration\Http\Controllers; use Statamic\Http\Controllers\Controller; use App\Addons\UserRegistration\Http\Requests\ProfileUpdateRequest; class UserProfileController extends Controller { public function show() { return view('user-registration::profile', [ 'user' => auth()->user() ]); } public function update(ProfileUpdateRequest $request) { $user = auth()->user(); $user->data(array_merge($user->data(), [ 'name' => $request->name, 'bio' => $request->bio, 'location' => $request->location ])); if ($request->password) { $user->set('password', bcrypt($request->password)); } $user->save(); return back()->with('success', 'Profiel bijgewerkt!'); } } ``` ## 7. Views (Blade Templates) ```blade {{-- register.blade.php --}} @extends('layout') @section('content') <form method="POST" action="{{ route('user.register') }}"> @csrf <input type="text" name="name" placeholder="Naam" required> <input type="email" name="email" placeholder="E-mail" required> <input type="password" name="password" placeholder="Wachtwoord" required> <input type="password" name="password_confirmation" placeholder="Bevestig wachtwoord" required> <button type="submit">Registreren</button> </form> @endsection ``` ## 8. Composer.json Configuratie ```json { "name": "your-name/user-registration", "description": "User registration and profile management for Statamic", "type": "statamic-addon", "autoload": { "psr-4": { "App\\Addons\\UserRegistration\\": "src" } }, "extra": { "statamic": { "name": "User Registration", "description": "User registration system" } } } ``` ## 9. Best Practices ### Beveiliging - Gebruik CSRF-tokens in alle formulieren - Implementeer rate limiting voor registratiepogingen - Valideer en sanitiseer alle gebruikersinvoer - Gebruik wachtwoordsterkte-validatie ### Performance - Cache gebruikersgegevens waar mogelijk - Gebruik lazy loading voor gebruikersrelaties - Optimaliseer database queries ### Statamic Integratie - Gebruik Statamic's ingebouwde User model - Integreer met Statamic's permission system - Gebruik Blueprints voor gebruikersdata structuur ### Testing ```php // Voorbeeld test public function test_user_registration() { $response = $this->post('/user/register', [ 'name' => 'Test User', 'email' => 'test@example.com', 'password' => 'password123', 'password_confirmation' => 'password123' ]); $response->assertRedirect('/user/profile'); $this->assertAuthenticated(); } ``` ## 10. Installatie Stappen 1. Maak de addon directory structuur 2. Configureer composer.json 3. Registreer de service provider 4. Publiceer de views en configuratie 5. Voer migraties uit (indien nodig) 6. Test de functionaliteit Deze structuur zorgt voor een schaalbare en onderhoudbare plugin die naadloos integreert met Statamic 3.0.0.