olssonm/identity-number

此包已被放弃,不再维护。作者建议使用olssonm/swedish-entity包。

Laravel验证器,用于瑞典个人身份号码/社会保障号码(personnummer)

v7.0 2020-12-09 13:44 UTC

README

Latest Version on Packagist Software License Build Status Scrutinizer Score

⚠️ 已放弃 该包已放弃,转而使用olssonm/swedish-entity

尽管该包在未来一段时间内仍然可用,但将不会进行更新。请尽可能迁移到olssonm/swedish-entity

瑞典“personnummer”验证器(即个人身份号码、社会保障号码或简称“PIN”)。

此验证器还处理瑞典组织号和称为“Samordningsnummer”(即协调号)的临时个人身份号码。

可用于独立包或与Laravel一起使用。

此包不仅适用于最后四位数字的Luhn算法,还检查出生日期是否有效。

当然,你可以向验证器投入任何你想要的格式,例如10位变体(7712112775)或12位变体(197712112775),带或不带连字符(771211-277519771211-2775)。

安装

通过Composer

$ composer require olssonm/identity-number

在Laravel中

此包使用Package Auto-Discovery来加载服务提供者。安装后,您应该会看到以下消息

Discovered Package: olssonm/identity-number

否则,按照标准的Laravel流程,只需在您的提供者数组中注册此包即可

'providers' => [
    Olssonm\IdentityNumber\IdentityNumberServiceProvider::class,
]

使用方法

独立使用

安装后,通过composer安装的包可以直接使用

use Olssonm\IdentityNumber\Pin;

Personnummer ("个人身份号码")

Pin::isValid('19771211-2775'); // Defaults to identity number
// true

Pin::isValid('19771211-2775', 'identity'); // Identity validation specified
// true

Organisationsnummer ("组织号码")

Pin::isValid('556016-0681', 'organization')
// true

Samordningsnummer ("协调号码")

Pin::isValid('19671180-2850', 'coordination');
// true

协调号码验证器以与个人身份验证器相同的方式处理,但不会对出生日期进行检查/验证。

IdentityNumberFormatter类

IdentityNumberFormatter类允许您根据自定义需求格式化PIN/身份。该类也用于内部验证,但如果您想确保在数据库中保存的值与传递给验证器的值相同,则应在验证之前应用格式化。

use Olssonm\IdentityNumber\IdentityNumberFormatter;

// Format to a 10-character PIN without a seperator
$formatter = new IdentityNumberFormatter('19860210-7313', 10, false);

// Get the formatted output
$formatter->getFormatted(); // 8602107313

// You can also clean the number from all unwanted characters
(new IdentityNumberFormatter('a19860210 - 7313', 12, true))->clean()->getFormatted(); // 19860210-7313

Laravel验证器

通过服务提供者扩展了Illuminate\Validator,因此您只需使用identity_numbercoordination_numberorganization_number规则,就像使用任何其他规则一样。

// Personal identity numbers
public function store(Request $request) {
    $this->validate($request, [
        'number' => 'required|identity_number'
    ]);
}

// Coordination numbers
public function store(Request $request) {
    $this->validate($request, [
        'number' => 'required|coordination_number'
    ]);
}

// Organization numbers
public function store(Request $request) {
    $this->validate($request, [
        'number' => 'required|organization_number'
    ]);
}

当然,您可以自定义错误消息

$validator = Validator::make($request->all(), [
    'number' => 'required|identity_number'
], [
    'number.identity_number' => "Hey! That's not a personnummer!"
]);

if($validator->fails()) {
    return $this->returnWithErrorAndInput($validator);
}

如果您在整个应用程序中使用验证,您可能还希望将错误消息放入您的 lang-files 中。

测试

$ composer test

$ phpunit

许可

MIT 许可证(MIT)。请参阅许可文件以获取更多信息。

© 2020 Marcus Olsson