think.studio / laravel-restricted-access

限制对任何实体或页面的访问,或创建分享链接。

1.2.0 2023-07-18 12:46 UTC

This package is auto-updated.

Last update: 2024-09-18 15:14:18 UTC


README

Packagist License Packagist Version Total Downloads Build Status Code Coverage Scrutinizer Code Quality

通过密码、电子邮件或名称限制页面的访问。

安装

使用composer安装包

composer require think.studio/laravel-restricted-access

可选地,您可以使用以下命令发布配置文件:

php artisan vendor:publish --provider="LinkRestrictedAccess\ServiceProvider" --tag="config"

如果您想更改表名或路由,可以通过配置文件进行操作。

运行迁移

php artisan migrate

用法

为模型使用特 HasRestrictedLink

class File extends Model 
{
    use \LinkRestrictedAccess\Models\HasRestrictedLink;
}

然后您可以创建链接

/** @var RestrictedLink $shareLink */
$shareLink = $file->restrictedLinks()->make([
    'name'         => $request->input('name'),
    'pin'          => $request->input('pin'),
    'check_pin'    => $request->boolean('check_pin'),
    'check_name'   => $request->boolean('check_name'),
    'check_email'  => $request->boolean('check_email'),
]);

if ($user = $request->user()) {
    $shareLink->meta->toMorph('creator', $user);
}

$shareLink->save();

示例验证检查。

if($shareUuid = $request->string('share')) {

    $sharedLink = \LinkRestrictedAccess\RestrictedAccess::restrictedLinkModel()::query()->byKey($shareUuid)->firstOrFail();

    if ($sharedLink->needVerification() && !$sharedLink->verifiedOpenActionFromCookie($request)) {
        return // display verification view
    }

    return $sharedLink->linkable;
}

要验证访问,您可以使用路由 restricted-access-link.check-pinrestricted-access-link.open-document

鸣谢

  • Think Studio