Files
lernapp/app/Http/Controllers/Admin/UserController.php
T
root 44f281514b Add grade/Klasse system: assign class levels to users, questions, and quizzes
- users.grade: set per child in admin (Klasse 1–10)
- quizzes.grade, questions.grade: optional target class (null = all)
- Children only see content matching their grade or without grade set
- Admin views show grade badge in user list, quiz list, questions list
- Quiz create/edit and user create/edit have Klasse dropdown
2026-05-06 07:19:17 +00:00

57 lines
2.3 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
class UserController extends Controller {
public function index() {
$users = User::where('role','child')->withCount('attempts')->orderBy('name')->get();
return view('admin.users.index', compact('users'));
}
public function create() { return view('admin.users.create'); }
public function store(Request $r) {
$r->validate([
'name' => 'required|string|max:60',
'email' => 'required|email|unique:users',
'password' => 'required|min:6',
'grade' => 'nullable|integer|min:1|max:13',
]);
User::create([
'name' => $r->name,
'email' => $r->email,
'password' => Hash::make($r->password),
'role' => 'child',
'points' => 0,
'grade' => $r->grade ?: null,
]);
return redirect()->route('admin.users.index')->with('success','Kind-Konto erstellt.');
}
public function edit(User $user) { return view('admin.users.edit', compact('user')); }
public function update(Request $r, User $user) {
$r->validate([
'name' => 'required|string|max:60',
'email' => 'required|email|unique:users,email,'.$user->id,
'password' => 'nullable|min:6',
'points' => 'required|integer|min:0',
'grade' => 'nullable|integer|min:1|max:13',
]);
$user->fill(['name'=>$r->name,'email'=>$r->email,'points'=>$r->points,'grade'=>$r->grade ?: null]);
if ($r->filled('password')) $user->password = Hash::make($r->password);
$user->save();
return redirect()->route('admin.users.index')->with('success','Gespeichert.');
}
public function destroy(User $user) {
$user->delete();
return redirect()->route('admin.users.index')->with('success','Konto gelöscht.');
}
public function reset(User $user) {
$user->attempts()->delete();
$user->redemptions()->delete();
$user->update(['points' => 0]);
return redirect()->route('admin.users.index')
->with('success', $user->name . ': Punktestand und Verlauf zurückgesetzt.');
}
}