feat: get current level
This commit is contained in:
parent
45f5413c52
commit
c3246a0ec1
|
|
@ -59,6 +59,9 @@ class AuthController extends Controller
|
||||||
$this->resolveDeviceName($data)
|
$this->resolveDeviceName($data)
|
||||||
)->plainTextToken;
|
)->plainTextToken;
|
||||||
|
|
||||||
|
$user->updateLevel();
|
||||||
|
$user->load('currentLevel');
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'token' => $token,
|
'token' => $token,
|
||||||
'token_type' => 'Bearer',
|
'token_type' => 'Bearer',
|
||||||
|
|
@ -68,7 +71,11 @@ class AuthController extends Controller
|
||||||
|
|
||||||
public function me(Request $request): JsonResponse
|
public function me(Request $request): JsonResponse
|
||||||
{
|
{
|
||||||
|
/** @var \App\Models\User $user */
|
||||||
$user = $request->user();
|
$user = $request->user();
|
||||||
|
$user->updateLevel();
|
||||||
|
$user->load('currentLevel');
|
||||||
|
|
||||||
return response()->json($user);
|
return response()->json($user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ namespace App\Models;
|
||||||
use App\Enums\UserRole;
|
use App\Enums\UserRole;
|
||||||
use Filament\Models\Contracts\HasName;
|
use Filament\Models\Contracts\HasName;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||||
use Illuminate\Notifications\Notifiable;
|
use Illuminate\Notifications\Notifiable;
|
||||||
|
|
@ -45,7 +46,6 @@ class User extends Authenticatable implements HasName, FilamentUser
|
||||||
'password',
|
'password',
|
||||||
'role',
|
'role',
|
||||||
'xp',
|
'xp',
|
||||||
'level',
|
|
||||||
'avatar_uri',
|
'avatar_uri',
|
||||||
'participations',
|
'participations',
|
||||||
'victories',
|
'victories',
|
||||||
|
|
@ -82,6 +82,23 @@ class User extends Authenticatable implements HasName, FilamentUser
|
||||||
->withPivot(['current_step_number', 'status'])
|
->withPivot(['current_step_number', 'status'])
|
||||||
->withTimestamps();
|
->withTimestamps();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function currentLevel(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Level::class, 'level_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateLevel(): void
|
||||||
|
{
|
||||||
|
$level = Level::where('xpThreshold', '<=', $this->xp)
|
||||||
|
->orderBy('xpThreshold', 'desc')
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if ($level && $this->level_id !== $level->id) {
|
||||||
|
$this->level_id = $level->id;
|
||||||
|
$this->save();
|
||||||
|
}
|
||||||
|
}
|
||||||
public function getFilamentName(): string
|
public function getFilamentName(): string
|
||||||
{
|
{
|
||||||
return $this->username;
|
return $this->username;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue