// [] фронтенд, ['logged'] закрытый фронтенд, ['logged', 'admin'] бэкенд
protected $authRoles = [];
class AuthController extends AppController {}
class PageController extends AppController {}
class BackendPageController extends AuthController {}
abstract class AuthController extends Controller
abstract class AuthController
{
// [] фронтенд, ['logged'] закрытый фронтенд, ['logged', 'admin'] бэкенд
protected $authRoles = [];
protected function checkAuth()
{
$auth = Auth::instance($_SESSION ?? []);
if (! $auth->getUser()) {
throw new HttpException(null, 401);
}
if (! $auth->loggedIn($this->authRoles)) {
throw new HttpException(null, 403);
}
}
}
public sfunction overwrite(array $array, array ...$arrays): array
{
$intersected = array_intersect_key(array_replace(...$arrays), $array);
return array_replace($array, $intersected);
}