Initial commit: Animexe Laravel platform

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-14 00:01:48 +03:00
co-authored by Claude Opus 4.8
commit a63515cfc6
366 changed files with 74773 additions and 0 deletions
@@ -0,0 +1,153 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\MembershipPlan;
use App\Models\Subscription;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
class UserController extends Controller
{
public function index(Request $request)
{
$query = User::latest();
if ($request->search) {
$query->where(function ($q) use ($request) {
$q->where('name', 'like', '%' . $request->search . '%')
->orWhere('email', 'like', '%' . $request->search . '%');
});
}
if ($request->membership) {
$query->where('membership', $request->membership);
}
if ($request->role) {
$query->where('role', $request->role);
}
if ($request->banned) {
$query->where('is_banned', true);
}
$users = $query->paginate(30)->withQueryString();
return view('admin.users.index', compact('users'));
}
public function show(User $user)
{
$user->load(['subscriptions.plan', 'comments']);
$plans = MembershipPlan::where('is_active', true)->get();
return view('admin.users.show', compact('user', 'plans'));
}
public function edit(User $user)
{
return view('admin.users.edit', compact('user'));
}
public function update(Request $request, User $user)
{
if ($user->isAdmin() && !auth()->user()->isAdmin()) {
return back()->with('error', 'Admin kullanıcı düzenlenemez.');
}
$data = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email,' . $user->id,
'role' => 'required|in:user,moderator,admin',
'password' => 'nullable|string|min:8',
'admin_badge' => 'nullable|string|max:32',
]);
if (!empty($data['password'])) {
$data['password'] = Hash::make($data['password']);
} else {
unset($data['password']);
}
$user->update($data);
return redirect()->route('admin.users.show', $user)->with('success', 'Kullanıcı güncellendi.');
}
public function destroy(User $user)
{
if ($user->id === auth()->id()) {
return back()->with('error', 'Kendinizi silemezsiniz.');
}
if ($user->isAdmin()) {
return back()->with('error', 'Admin kullanıcı silinemez.');
}
$user->delete();
return redirect()->route('admin.users.index')->with('success', 'Kullanıcı silindi.');
}
public function ban(Request $request, User $user)
{
$request->validate(['ban_reason' => 'nullable|string|max:500']);
if ($user->isAdmin()) {
return back()->with('error', 'Admin kullanıcı banlanamaz.');
}
$user->update([
'is_banned' => true,
'ban_reason' => $request->ban_reason,
'banned_at' => now(),
]);
return back()->with('success', $user->name . ' banlandı.');
}
public function unban(User $user)
{
$user->update([
'is_banned' => false,
'ban_reason' => null,
'banned_at' => null,
]);
return back()->with('success', $user->name . ' bandan çıkarıldı.');
}
public function givePremium(Request $request, User $user)
{
$request->validate([
'plan_id' => 'required|exists:membership_plans,id',
]);
$plan = MembershipPlan::findOrFail($request->plan_id);
$expiresAt = now()->addDays($plan->duration_days);
$user->update([
'membership' => 'premium',
'premium_expires_at' => $expiresAt,
]);
Subscription::create([
'user_id' => $user->id,
'plan_id' => $plan->id,
'status' => 'active',
'starts_at' => now(),
'expires_at' => $expiresAt,
'payment_method' => 'manual',
'notes' => 'Admin tarafından verildi: ' . auth()->user()->name,
]);
return back()->with('success', $user->name . "'e {$plan->duration_days} günlük premium verildi.");
}
public function removePremium(User $user)
{
$user->update([
'membership' => 'free',
'premium_expires_at' => null,
]);
Subscription::where('user_id', $user->id)
->where('status', 'active')
->update(['status' => 'cancelled']);
return back()->with('success', $user->name . "'in premiumu kaldırıldı.");
}
}