fix! обновлена модель "UserRole": добавлено уникальный ключ. В профиль выводится информация о ролях пользователя.
This commit is contained in:
parent
561ef84570
commit
3bc3407657
@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
\DB::delete('DELETE t1 FROM user_roles t1
|
||||||
|
INNER JOIN user_roles t2
|
||||||
|
WHERE t1.id < t2.id AND t1.user_id = t2.user_id AND t1.role_id = t2.role_id
|
||||||
|
');
|
||||||
|
|
||||||
|
Schema::table('user_roles', function (Blueprint $table)
|
||||||
|
{
|
||||||
|
$table->unique(['user_id', 'role_id']);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
}
|
||||||
|
};
|
||||||
@ -2,13 +2,16 @@
|
|||||||
|
|
||||||
namespace Modules\User\Models;
|
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 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
|
class User extends Authenticatable
|
||||||
{
|
{
|
||||||
use HasApiTokens, HasFactory, Notifiable, ForcedPassword;
|
use HasApiTokens, HasFactory, Notifiable, ForcedPassword;
|
||||||
@ -54,4 +57,22 @@ public function getPartialsName()
|
|||||||
'familyName' => (array_key_exists(2, $name) ? $name[2] : '')
|
'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'
|
||||||
|
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,4 +20,8 @@ public function role()
|
|||||||
{
|
{
|
||||||
return $this->belongsTo(Role::class, 'role_id');
|
return $this->belongsTo(Role::class, 'role_id');
|
||||||
}
|
}
|
||||||
|
public static function create(array $attributes = [])
|
||||||
|
{
|
||||||
|
return parent::updateOrCreate($attributes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
@extends('layouts.app')
|
@extends('layouts.app')
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div style="max-width:700px">
|
<div style="max-width:700px">
|
||||||
<form method="POST" action="">
|
<form method="POST" action="">
|
||||||
@ -68,7 +67,7 @@ class="form-control rounded-4 bg-white @error('user.phone') is-invalid @enderror
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="form-floating mb-3">
|
<div class="form-floating">
|
||||||
<input id="details.address" name="details[address]" value=""
|
<input id="details.address" name="details[address]" value=""
|
||||||
class="form-control rounded-4 bg-white @error('details.address') is-invalid @enderror" required
|
class="form-control rounded-4 bg-white @error('details.address') is-invalid @enderror" required
|
||||||
placeholder="Телеграм ник">
|
placeholder="Телеграм ник">
|
||||||
@ -79,7 +78,16 @@ class="form-control rounded-4 bg-white @error('details.address') is-invalid @end
|
|||||||
</span>
|
</span>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
|
<div class="my-3 d-flex">
|
||||||
|
<div class="me-2">Мои права: </div>
|
||||||
|
<div class="hstack gap-2">
|
||||||
|
@foreach (auth()->user()->roles as $role)
|
||||||
|
<div class="badge bg-secondary">
|
||||||
|
{{ __($role->name) }}
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<button class="btn rounded-4 text-light fw-bold fs-5 w-100 py-3" style="background-color: #20184d;">
|
<button class="btn rounded-4 text-light fw-bold fs-5 w-100 py-3" style="background-color: #20184d;">
|
||||||
Сохранить изменения
|
Сохранить изменения
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user