Merge branch 'develop' into trunk
This commit is contained in:
commit
70b7b011ec
2 changed files with 33 additions and 15 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
*
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue