Merge branch 'features/events' into 'dev'

Features/events

See merge request sae-but2/2025-26/gestion-benevoles-association/backend!2
This commit is contained in:
T'JAMPENS QUENTIN p2406187
2025-10-27 22:20:00 +00:00
13 changed files with 163 additions and 12 deletions
+33
View File
@@ -0,0 +1,33 @@
<?php
namespace App\Http\Controllers;
use App\Models\Events;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Log;
class EventsController extends Controller
{
public function create(Request $request): JsonResponse
{
if ($request->user()->role != 1) {
return response()->json(['message' => 'Forbidden'], 403);
}
try {
Events::create([
"name" => $request['name'],
"description" => $request['description'],
]);
return response()->json(['message' => 'Event created']);
} catch (\Exception $e) {
Log::info($e->getMessage());
return response()->json(['message' => "Server error"], 500);
}
}
}
+15
View File
@@ -0,0 +1,15 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Events extends Model
{
use HasFactory;
protected $fillable = [
"name",
"description",
];
}
+24
View File
@@ -0,0 +1,24 @@
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Events>
*/
class EventsFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'name' => $this->faker->text(15),
'description' => $this->faker->text(50),
];
}
}
+4 -2
View File
@@ -25,10 +25,12 @@ class UserFactory extends Factory
{
return [
'name' => fake()->name(),
'lastname' => fake()->lastname(),
'email' => fake()->unique()->safeEmail(),
'email_verified_at' => now(),
'password' => static::$password ??= Hash::make('password'),
'password' => Hash::make('password'),
'remember_token' => Str::random(10),
'validate' => rand(0, 1),
'role' => rand(2, 5)
];
}
@@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('events', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('description');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('events');
}
};
+6 -2
View File
@@ -3,7 +3,7 @@
namespace Database\Seeders;
use App\Models\User;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use App\Models\Events;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
@@ -13,11 +13,15 @@ class DatabaseSeeder extends Seeder
*/
public function run(): void
{
// User::factory(10)->create();
User::factory()->create([
'name' => 'Test User',
'email' => 'test@example.com',
'role' => 1
]);
User::factory()->count(10)->create();
Events::factory()->count(10)->create();
}
}
+3
View File
@@ -2,6 +2,7 @@
use App\Http\Controllers\AuthController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\EventsController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
@@ -30,3 +31,5 @@ Route::middleware(['web', 'auth:sanctum'])->post('/users/{id}/validate', [UserCo
Route::middleware(['web', 'auth:sanctum'])->post('/users/{id}/role', [UserController::class, "addRole"]);
Route::middleware(['web', 'auth:sanctum'])->get('/users', [UserController::class, "getUsers"]);
Route::middleware(['web', 'auth:sanctum'])->post('/events/create', [EventsController::class, "create"]);
+36
View File
@@ -0,0 +1,36 @@
meta {
name: Create event
type: http
seq: 1
}
post {
url: {{url}}/api/events/create
body: json
auth: inherit
}
headers {
X-XSRF-TOKEN:
}
body:json {
{
"name": "{{name}}",
"description": "{{description}}"
}
}
vars:pre-request {
name: Mon super event
description: Ma super description
}
assert {
res.status: eq 200
}
settings {
encodeUrl: true
timeout: 0
}
+8
View File
@@ -0,0 +1,8 @@
meta {
name: Events
seq: 7
}
auth {
mode: inherit
}
+2 -2
View File
@@ -23,8 +23,8 @@ body:json {
}
vars:pre-request {
email: test@test.com
password: test
email: test@example.com
password: password
}
assert {
+1 -1
View File
@@ -11,7 +11,7 @@ delete {
}
headers {
X-XSRF-TOKEN: eyJpdiI6IndIakNUdWVLbUs4cEErZHpLYm9xY2c9PSIsInZhbHVlIjoib09MWDhBZWxrZnB0UCthSlpMVE1sT09iY0ZJNlpuZ1NWRWRvWnYvVVMrSm1yeWpob0JFSVpVa1pTTGJpc255eWV4QXlSS2IwZzNCZ0xPL1lMRWVRMDR6eU83OG9CV2J5ZUJqbENRWmdhRGZRM0hXczc2KzNKQVV1YmVCN0NwVHciLCJtYWMiOiIxOGZhNzI1ZDE0NTNlNTVkMDI3NjVhNTRmMjI4YWUwOTI1NjQ3MTllNTU4ZDA2NWQwNjM5MDM5MmE1OTIwYjUzIiwidGFnIjoiIn0=
X-XSRF-TOKEN:
}
settings {
+1 -1
View File
@@ -12,7 +12,7 @@ post {
headers {
Accept: application/json
X-XSRF-TOKEN: eyJpdiI6IkN0OWIwbGM5RU8yd2FzMmFURDRuNUE9PSIsInZhbHVlIjoiRjBtd0o5Um9jaFN4dDkzbGlGNFBEWlNDOEFUdGJQVzgrSmpabTlQMDZUekhnY3NnWG55RUQwUDdKazBlRk1pWTloUGRKQjhNRE5oVCtLT2dLSmY1d2RRSEFuNjZ3UDNWVURLNERBckd1TnMwM2ZOZ2xzM2dlQjFwYlZIemZmRGEiLCJtYWMiOiI4ZGVkNTY3NjIwMjU3YmZiOWRjZDE1NDQ1OGU3ZTkwYzFlYTMzYmEwNDdhNWMwNWQxNWUyMTBjODMyMTY5ZGRlIiwidGFnIjoiIn0=
X-XSRF-TOKEN:
}
body:json {
+1 -4
View File
@@ -1,6 +1,3 @@
vars {
url: http://localhost:8000
}
vars:secret [
token
url
]