dainsys / timy
3.4.2
2021-06-10 04:17 UTC
Requires
- php: >=7.0
- consoletvs/charts: 6.*
- dainsys/components: ^1.0
- guzzlehttp/guzzle: ^6.3|^7.0.1
- laravel/framework: ^6.0|^7.0|^8.0
- laravel/ui: ^3.0
- livewire/livewire: ^v2.0
- maatwebsite/excel: ^3.1
- pusher/pusher-php-server: ~4.0
Requires (Dev)
- orchestra/canvas: 9999999-dev
- orchestra/testbench: 6.x-dev
- dev-master
- 3.x-dev
- 3.4.2
- 3.4.1
- 3.4.0
- 3.3.1
- 3.3.0
- 3.2.7
- 3.2.6
- 3.2.5
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.1
- 3.1.0
- 3.0.0
- 2.x-dev
- 2.5.0
- 2.4.6
- 2.4.5
- 2.4.4
- 2.4.3
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.1
- 2.3.0
- 2.2.10
- 2.2.9
- 2.2.8
- 2.2.7
- 2.2.6
- 2.2.5
- 2.2.4
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.1
- 2.1.0
- 2.0.0
- 1.4.1
- 1.4.0
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.1
- 1.0.0
- 0.7.1
- 0.7.0
- 0.6.4
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.4
- 0.5.3
- 0.5.2
- 0.5.1
- 0.5
- 0.4.4
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4
- 0.3.5
- 0.3.4
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3
- 0.2
- 0.1.1
- 0.1
This package is auto-updated.
Last update: 2021-06-10 04:18:18 UTC
README
将用户时间跟踪功能添加到Laravel 7、Livewire和Bootstrap 4。
安装
- 使用composer安装:
composer require dainsys/timy2。可选:该包应由Laravel自动发现。然而,您可以在config.app文件中的providers数组中注册它
'providers' => [ Dainsys\Timy\TimyServiceProvider::class, ]
您可能想要发布配置文件:
php artisan vendor:publish --tag=timy-config以更改默认配置。请注意创建默认处置选项。 - 接下来,您可能想要运行以下命令来运行迁移:
php artisan migrate。您也可以使用以下命令发布迁移:
php artisan vendor:publish --tag=tiy-migrations并在迁移之前更新它们。 - 将
use Dainsys\Timy\Timeable特质添加到您的User模型中。use Dainsys\Timy\Timeable; class User extends Authenticatable { use Timeable; }
此包依赖于
laravel/ui来处理认证。请遵循其安装指南认证。我们建议运行以下命令:php artisan ui --auth vue。 - 根据
laravel/livewire的要求,确保您更新了您的布局视图@livewireStyles </head> <body> ... @livewireScripts @stack('scripts') </body> </html>
- 确保在
config.app文件中取消注释App\Providers\BroadcastServiceProvider::class。 - 接下来,将以下路由粘贴到您的
routes\channels.php文件中Broadcast::channel('Timy.User.{id}', function ($user, $id) { return (int) $user->id == (int) $id; }); Broadcast::channel('Timy.Admin', function ($user) { return \Illuminate\Support\Facades\Gate::allows(config('timy.roles.admin')); });
- 在检查已登录用户后,将timy菜单包含在您的主导航栏中:
@include('timy::_timy-menu')。或者,您可以链接到以下端点:用户:URL=
/timy/user,名称=user_dashboard,网关(blade @can指令)=timy-user管理员用户:URL=/timy/admin,名称=admin_dashboard,网关(blade @can指令)=timy-admin超级管理员用户:URL=/timy/super_admin,名称=supepr_admin_dashboard,网关(blade @can指令)=timy-super-admin - 接下来,在.env文件中定义超级用户,通过在变量
TIMY_SUPER_USER_EMAIL=中提供其电子邮件来定义它。此用户将具有丰富的应用控制。 - 接下来,从Pusher获取您的凭证,并在.env文件中定义以下变量。请确保将您的
BROADCAST_DRIVER变量设置为pusherBROADCAST_DRIVER=pusher PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= PUSHER_APP_CLUSTER= MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
- 更新您的
package.json文件,添加以下依赖项"laravel-echo": "^1.8.0", "pusher-js": "^6.0.3",
- 在您的
resources/js/bootstrap.js中取消注释Laravel Echo部分import Echo from 'laravel-echo'; window.Pusher = require('pusher-js'); window.Echo = new Echo({ broadcaster: 'pusher', key: process.env.MIX_PUSHER_APP_KEY, cluster: process.env.MIX_PUSHER_APP_CLUSTER, forceTLS: true });
- 然后安装前端依赖并编译:
npm install && npm run dev。 - 可选:此包包含一个每5分钟运行一次的artisan命令,以检查用户的ip是否仍然活跃。默认情况下它是禁用的:要激活它,请执行以下操作
- 确保您的服务器正在运行Laravel文档中建议的
cron job调度,启动调度会话:* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1 - 在
config\timy.php文件中将with_scheduled_commands变量设置为true:'with_scheduled_commands' => env('TIMY_WITH_SCHEDULED_COMMANDS', true)。
- 确保您的服务器正在运行Laravel文档中建议的
功能
- 为了使包正常工作,需要认证用户。我们利用了
laravel/ui包。 - 用户和管理员应具有有效的角色分配。
- 当会话启动时,所有之前打开的定时器都会关闭,并打开一个新的定时器。
- 只有超级管理员可以管理角色。
- 管理员控制器受保护,只为分配了
timy-admin角色的用户工作。 - 在页面加载时
- 如果用户正在运行一个特定处置的定时器,关闭该定时器后,将使用相同的处置启动一个新的定时器。
- 即使没有正在运行的定时器,页面重新加载时也会使用之前的处置启动一个新的定时器。
- 如果之前的逻辑都失败,默认情况下将使用配置中设置的处置来启动一个新的定时器。
- 如果用户更改了处置下拉菜单(Vue 组件),将创建一个新的定时器,并关闭所有之前的定时器。
- 当用户更改他们的处置时,管理员仪表板将动态更新。
- 当管理员更新特定用户的处置时,用户界面将更新,并且用户会收到通知。
API 端点
- GET 端点
/timy/api/timers_filtered或路由route('timy.timers_filtered')返回一个 Json 格式的资源,包含所有定时器,通过查询字符串进行筛选。以下 GET 变量允许您筛选列表disposition=value将只返回包含给定值的disposition名称的定时器。user=value将只返回包含给定值的user名称的定时器。from_date=date将只返回start_date更新或等于给定日期的定时器。to_date=date将只返回start_date更旧或等于给定日期的定时器。payable=true将只返回disposition被标记为payable的定时器。invoiceable=true将只返回disposition被标记为invoiceable的定时器。running=true将只返回finished_at字段为 null 的定时器,这表示当前正在运行的定时器。
- 访问 GET 路由
/timy/api/get_open_timer_hours或路由route('timy.getOpenTimersHours')以获取当前用户打开的定时器的当前小时数。非常适合显示实时更新,计算小时数,而无需关闭当前定时器。