JB Online开发笔记1:框架升级和Telescope

本部分记录升级Laravel框架及相关插件,以及安装Telescope官方库的过程。

升级框架

composer

根据官方指导,需要将composer获取的framework版本更改为^5.7.0,同时如果使用了官方的passport库需要将版本升级至^7.0

另一个受到影响的库是Carbon,需要Carbon1版本1.36.0及以上,使用Carbon2直接获取最新版然后强制修改版本号就行了。

执行composer install/update,提示config文件出现错误。查了一遍后发现是此前安装了pusher但是倒车没有把全部文件都倒回去,缓存的文件中相关的配置仍然存在,导致composer无法进行包检测。解决方法是清除所有缓存文件或者重新进行新的缓存,然后再要求composer重新进行安装/更新和检测。

SVG文件夹

5.7版的框架增加了文件夹public/svg,用于保存40X、50X页面的背景图。需要修改的方式是从源代码中下载对应的文件保存到指定文件夹,由于我没有使用默认的错误页面所以不会受到影响。

为了保持统一,将public/images中的所有SVG图片都移动到了该文件夹下。

其他更新

本次升级同时删除了npm安装的4.7版的fontawesome。网站上所有的图标全部由CDN加载的5.6版的fontawesome样式文件渲染。

Telescope

安装

按照官方文档直接用composer获取,然后执行安装发布指令并迁入数据表即可。

配置

Telescope会注册以telescope->'/telescope'为根的路由,在config/telescope.php中可以定义此系列路由使用的中间件。(默认为web+Authorize::class。)同时配置文件中还有所有记录内容的开关选项,默认为记录所有可记录内容。同时在ServiceProvider中可以对显示内容进行过滤,默认为错误、失败、定时任务和手动监控的内容。

/**
 * Register any application services.
 *
 * @return void
 */
public function register()
{
    // Telescope::night();

    $this->hideSensitiveRequestDetails();

    Telescope::filter(function (IncomingEntry $entry) {
        if ($this->app->environment('local') {
            return true;
        }

        return $entry->isReportableException() ||
               $entry->isFailedJob() ||
               $entry->isScheduledTask() ||
               $entry->hasMonitoredTag();
    });
}

验证

Telescope相关内容的访问权限可以通过增加admin中间件来实现;而官方文档推荐使用gate()方式进行验证(定义在app/Providers/TelescopeServiceProvider.php中)。Gate对某一个权限进行定义,通过一个boolean类型的函数来判断用户是否拥有该权限。(需要注意的是在local环境下Gate允许任意用户通过。)

/**
 * Register the Telescope gate.
 *
 * This gate determines who can access Telescope in non-local environments.
 *
 * @return void
 */
protected function gate()
{
    Gate::define('viewTelescope', function ($user) {
        return in_array($user->email, [
            '[email protected]',
        ]);
    });
}

清除记录

由于Telescope记录内容多,很容易占据数据库空间,所以需要进行定期数据的清除。指令telescope:prune默认会删除24小时以上的记录,可以通过修改--hours=24参数来调整。

添加$schedule->command('telescope:prune')->daily();到任务队列即可。

发布于2019-01-01 12:10

笔记 / Laravel