jhumanj/laravel-model-stats

为您的Laravel应用程序提供模型统计仪表板

资助包维护!
JhumanJ

安装: 12,689

依赖项: 0

建议者: 0

安全: 0

星星: 238

关注者: 8

分支: 18

开放性问题: 4

语言:Vue

v0.4.1 2023-08-24 08:08 UTC

This package is auto-updated.

Last update: 2024-09-24 10:38:35 UTC


README

为您的Laravel应用程序提供模型统计仪表板

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Screenshot of sample dashboard

此Laravel包为您提供了Laravel应用程序的统计仪表板。将其视为Grafana的轻量级版本,但它是内置在您的Laravel应用程序中,并且更容易上手。使用Laravel模型统计不需要代码知识,用户可以从Web界面完成所有操作。它还支持自定义代码小部件,允许您使用代码定义小部件数据,就像使用tinker一样。

安装

您可以通过composer安装此包

composer require jhumanj/laravel-model-stats

您可以使用以下命令安装包并运行迁移

php artisan model-stats:install
php artisan migrate

可用的无代码小部件

不同类型的小部件(每日计数、每日平均数等)可供选择。在创建小部件时,您可以选择模型、聚合类型和用于图形的列。然后您可以在仪表板上调整大小和移动小部件。

当前可用的聚合类型

  • 每日计数(所选期间每天记录的数量)。
  • 累积每日计数(所选期间累积的总记录数)。
  • 期间总数(所选期间的新记录数)。
  • 按组计数(所选期间给定列的组计数)。
  • ...(更多即将推出)

对于每种小部件类型,日期可以是任何列:created_atupdated_atcustom_date

自定义代码小部件

您还可以使用自定义代码小部件,允许您使用代码定义小部件数据,就像使用tinker一样。

您的代码必须定义一个包含要返回到所选图表的数据的$result变量。您可以使用$dateFrom$dateTo变量。

条形图的自定义代码示例

$result = [
    'a' => 10,
    'b' => 20
];

自定义代码设置

🚨 在生产数据库上使用自定义代码功能存在极大的风险 🚨

任何可以访问仪表板的恶意用户或任何错误都可能对您的数据库造成损害。不要这样做。这里有一个安全使用此功能的方法

  • 为您的数据库创建一个只读用户
    • 以下是创建PostgreSQL数据库只读用户的步骤:PostgreSQL指南
    • 以下是创建MySQL数据库只读用户的步骤:MySQL指南
  • 将只读数据库连接添加到您的config/database.php文件中
    // in database.php
    
    'connections' => [
    
      // ... your other connections
    
       'readonly' => [
              'driver' => 'pgsql',  // Copy the settings for the driver you use, but change the user
              'url' => env('DATABASE_URL'),
              'host' => env('DB_HOST', '127.0.0.1'),
              'port' => env('DB_PORT', '5432'),
              'database' => env('DB_DATABASE', 'forge'),
              'username' => env('DB_USERNAME_READONLY', 'forge'), // User is changed here
              'password' => env('DB_PASSWORD_READONLY', ''),
              'charset' => 'utf8',
              'prefix' => '',
              'prefix_indexes' => true,
              'schema' => 'public',
              'sslmode' => 'prefer',
          ],
    ]
  • 在您的.env文件中设置以下内容
      MODEL_STATS_CUSTOM_CODE=true
      MODEL_STATS_DB_CONNECTION=readonly
      DB_USERNAME_READONLY=<username>
      DB_PASSWORD_READONLY=<password>

因此,此包将使用只读连接执行您的代码。请注意,这是一个防止错误的保护措施,但不是针对恶意用户的保护措施。可以在自定义代码中覆盖此连接,因此在生产中使用此功能仍存在一些风险。请确保您的仪表板授权配置正确。

禁用自定义代码

您可能希望通过将MODEL_STATS_CUSTOM_CODE环境变量设置为false来禁用自定义代码小部件。

仪表板授权

可以在 /stats 路由访问 ModelStats 控制台。默认情况下,您只能在本地环境中访问此控制台。在您的 app/Providers/ModelStatsServiceProvider.php 文件中,有一个授权门定义。这个授权门控制非本地环境中对 ModelStats 的访问。您可以自由地根据需要修改此门以限制对您的 ModelStats 安装的访问

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

升级

升级 ModelStats 时,请务必重新发布前端资源

php artisan model-stats:publish

变更日志

有关最近更改的更多信息,请参阅 变更日志

贡献

有关详细信息,请参阅 贡献指南

安全漏洞

有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略

鸣谢(贡献者)

灵感来源

许可

MIT 许可证(MIT)。有关更多信息,请参阅 许可文件