Compare commits

...

2 Commits

7 changed files with 116 additions and 19 deletions

View File

@ -5,6 +5,8 @@
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Modules\User\Models\User;
use Modules\User\Models\UserRole;
use Modules\User\Models\Role;
use Modules\Main\Models\City;
class CityManager extends Model
{
@ -21,4 +23,14 @@ public function city()
{
return $this->belongsTo(City::class, 'city_id');
}
protected static function booted()
{
static::created(function (CityManager $cityManager)
{
UserRole::create([
'user_id' => $cityManager->user_id,
'role_id' => Role::CITY_MANAGER
]);
});
}
}

View File

@ -0,0 +1,30 @@
<?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
{
Schema::create('docs_cities', function (Blueprint $table)
{
$table->id();
$table->foreignId('docs_id')->references('id')->on('docs')->onDelete('cascade');
$table->foreignId('city_id')->references('id')->on('cities')->onDelete('cascade');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('news');
}
};

View File

@ -2,13 +2,8 @@
namespace Modules\Main\Models\Deal;
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 Modules\User\Models\User;
use Modules\Main\Models\Agent\Agent;
use Modules\Bitrix\Traits\Bitrixable;
class Client extends User
@ -39,8 +34,4 @@ public function ofAgent(Agent $agent)
{
return $this->deals->where('agent_id', $agent->id);
}
public function create()
{
}
}

View File

@ -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
{
}
};

View File

@ -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'
);
}
}

View File

@ -20,4 +20,8 @@ public function role()
{
return $this->belongsTo(Role::class, 'role_id');
}
public static function create(array $attributes = [])
{
return parent::updateOrCreate($attributes);
}
}

View File

@ -1,5 +1,4 @@
@extends('layouts.app')
@section('content')
<div style="max-width:700px">
<form method="POST" action="">
@ -68,7 +67,7 @@ class="form-control rounded-4 bg-white @error('user.phone') is-invalid @enderror
</div>
<div class="form-floating mb-3">
<div class="form-floating">
<input id="details.address" name="details[address]" value=""
class="form-control rounded-4 bg-white @error('details.address') is-invalid @enderror" required
placeholder="Телеграм ник">
@ -79,7 +78,16 @@ class="form-control rounded-4 bg-white @error('details.address') is-invalid @end
</span>
@enderror
</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>