feat: usr roles and soft deletes and filament
This commit is contained in:
+8
-13
@@ -4,6 +4,7 @@ namespace App\Models;
|
||||
|
||||
use App\Enums\PacePreference;
|
||||
use App\Enums\PhysicalActivityLevel;
|
||||
use App\Enums\UserRole;
|
||||
use App\Enums\UserSex;
|
||||
use App\Enums\WeightGoal;
|
||||
use Filament\Models\Contracts\FilamentUser;
|
||||
@@ -12,9 +13,9 @@ use Illuminate\Contracts\Auth\MustVerifyEmail;
|
||||
use Illuminate\Contracts\Translation\HasLocalePreference;
|
||||
use Illuminate\Database\Eloquent\Concerns\HasUlids;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
use Laravel\Sanctum\HasApiTokens;
|
||||
@@ -22,7 +23,7 @@ use Laravel\Sanctum\HasApiTokens;
|
||||
class User extends Authenticatable implements FilamentUser, HasLocalePreference, MustVerifyEmail
|
||||
{
|
||||
/** @use HasFactory<\Database\Factories\UserFactory> */
|
||||
use HasApiTokens, HasFactory, HasUlids, Notifiable;
|
||||
use HasApiTokens, HasFactory, HasUlids, Notifiable, SoftDeletes;
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
@@ -33,6 +34,7 @@ class User extends Authenticatable implements FilamentUser, HasLocalePreference,
|
||||
'name',
|
||||
'email',
|
||||
'locale',
|
||||
'role',
|
||||
'email_verified_at',
|
||||
'password',
|
||||
'avatar_url',
|
||||
@@ -79,6 +81,7 @@ class User extends Authenticatable implements FilamentUser, HasLocalePreference,
|
||||
'weight_goal' => WeightGoal::class,
|
||||
'pace_preference' => PacePreference::class,
|
||||
'sex' => UserSex::class,
|
||||
'role' => UserRole::class,
|
||||
'date_of_birth' => 'immutable_date',
|
||||
];
|
||||
}
|
||||
@@ -103,12 +106,6 @@ class User extends Authenticatable implements FilamentUser, HasLocalePreference,
|
||||
return $this->hasOne(StravaConnection::class);
|
||||
}
|
||||
|
||||
public function likedMealPosts(): BelongsToMany
|
||||
{
|
||||
return $this->belongsToMany(MealPosts::class, 'meal_post_likes', 'user_id', 'meal_posts_id')
|
||||
->withTimestamps();
|
||||
}
|
||||
|
||||
public function routeNotificationForExpoPush(): array
|
||||
{
|
||||
return $this->deviceTokens()
|
||||
@@ -122,15 +119,13 @@ class User extends Authenticatable implements FilamentUser, HasLocalePreference,
|
||||
return $this->locale ?: 'en';
|
||||
}
|
||||
|
||||
public function isAdmin()
|
||||
public function isAdmin(): bool
|
||||
{
|
||||
return true;
|
||||
// return $this->role === 'admin';
|
||||
return $this->role === UserRole::ADMIN;
|
||||
}
|
||||
|
||||
public function canAccessPanel(Panel $panel): bool
|
||||
{
|
||||
|
||||
return true;
|
||||
return $this->role === UserRole::ADMIN || $this->role === UserRole::MODERATOR;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user