diff --git a/app/Modules/User/Database/Migrations/2025_11_13_000001_unique_columns_in_user_roles_table.php b/app/Modules/User/Database/Migrations/2025_11_13_000001_unique_columns_in_user_roles_table.php new file mode 100644 index 0000000..9d9b552 --- /dev/null +++ b/app/Modules/User/Database/Migrations/2025_11_13_000001_unique_columns_in_user_roles_table.php @@ -0,0 +1,31 @@ +unique(['user_id', 'role_id']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + } +}; diff --git a/app/Modules/User/Models/User.php b/app/Modules/User/Models/User.php index 4991fb3..5976a0c 100644 --- a/app/Modules/User/Models/User.php +++ b/app/Modules/User/Models/User.php @@ -2,13 +2,16 @@ namespace Modules\User\Models; -use Illuminate\Contracts\Auth\MustVerifyEmail; -use Illuminate\Database\Eloquent\Factories\HasFactory; -use Illuminate\Foundation\Auth\User as Authenticatable; -use Illuminate\Notifications\Notifiable; -use Laravel\Sanctum\HasApiTokens; - use App\Models\ForcedPassword; +use Laravel\Sanctum\HasApiTokens; +use Illuminate\Notifications\Notifiable; +use Illuminate\Contracts\Auth\MustVerifyEmail; +use Illuminate\Database\Eloquent\Relations\HasMany; +use Illuminate\Database\Eloquent\Relations\HasManyThrough; +use Illuminate\Database\Eloquent\Factories\HasFactory; + +use Illuminate\Foundation\Auth\User as Authenticatable; + class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable, ForcedPassword; @@ -54,4 +57,22 @@ public function getPartialsName() 'familyName' => (array_key_exists(2, $name) ? $name[2] : '') ]; } + + public function roles(): HasManyThrough + { + return $this->hasManyThrough( + Role::class + , + UserRole::class + , + 'user_id' + , + 'id' + , + 'id' + , + 'role_id' + + ); + } } diff --git a/app/Modules/User/Models/UserRole.php b/app/Modules/User/Models/UserRole.php index b202e7b..4ad17ad 100644 --- a/app/Modules/User/Models/UserRole.php +++ b/app/Modules/User/Models/UserRole.php @@ -20,4 +20,8 @@ public function role() { return $this->belongsTo(Role::class, 'role_id'); } + public static function create(array $attributes = []) + { + return parent::updateOrCreate($attributes); + } } diff --git a/resources/views/user/profile.blade.php b/resources/views/user/profile.blade.php index 87c547c..f646104 100644 --- a/resources/views/user/profile.blade.php +++ b/resources/views/user/profile.blade.php @@ -1,5 +1,4 @@ @extends('layouts.app') - @section('content')