Merge branch 'develop' into trunk

This commit is contained in:
Jérémy Munsch 2022-06-17 12:45:09 +02:00
commit 70b7b011ec
No known key found for this signature in database
GPG key ID: 18361AF3BFEC0FEC
2 changed files with 33 additions and 15 deletions

View file

@ -6,6 +6,8 @@ use App\Models\Site;
use Closure;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use App\Enums\Role;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Session;
class UserSite
{
@ -21,29 +23,35 @@ class UserSite
/** @var \App\Models\User */
$user = auth()->user();
try {
if (!Site::whereId($user->selected_site_id)->exists()) {
$user->selected_site_id = null;
$user->save();
}
if ($request->query('userSite')) {
/** @var \App\Models\Site|null */
$site = $user->role->equals(Role::admin()) ?
Site::whereId($request->query('userSite'))->first() :
$user->sites()->where('site_id', $request->query('userSite'))->first();
if ($site) {
$user->selected_site_id = $site->id;
$user->saveOrFail();
}
}
// Select user site
if (!$user->selected_site_id) {
/** @var \App\Models\Site */
$site = $user->role->equals(Role::admin()) ?
Site::firstOrFail() : $user->sites()->firstOrFail();
$user->selected_site_id = $site->id;
$user->saveOrFail();
}
if ($request->query('userSite')) {
$site = $user->role->equals(Role::admin()) ?
Site::whereId($request->query('userSite'))->firstOrFail() :
$user->sites()->where('site_id', $request->query('userSite'))->firstOrFail();
$user->selected_site_id = $site->id;
$user->saveOrFail();
} elseif (!Site::where('id', $user->selected_site_id)->exists()) {
$site = $user->role->equals(Role::admin()) ?
Site::whereId($request->query('userSite'))->firstOrFail() :
$user->sites()->where('site_id', $request->query('userSite'))
->firstOrFail();
$user->selected_site_id = $site->id;
$user->saveOrFail();
}
} catch (ModelNotFoundException $e) {
abort(400, 'Vous n\'avez pas de site administrable');
Log::warning("$user->name n'as pas de site administrable.");
auth()->logout();
Session::flash('error', "$user->name n'as pas de site administrable.");
return \response()->redirectToRoute('bo.login');
}
return $next($request);
}

View file

@ -179,6 +179,16 @@ class Site extends Model
parent::__construct($attributes);
}
protected static function booted()
{
static::deleted(function (self $model) {
User::whereSelectedSiteId($model->id)->get()
->map(function (User $user) {
$user->selected_site_id = null;
});
});
}
/**
* Has one Societe
*