You've already forked lubo_comment_query
WebAuthn初步接好
This commit is contained in:
68
app/Models/WebauthnCredential.php
Normal file
68
app/Models/WebauthnCredential.php
Normal file
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Models\Casts\TrustPath;
|
||||
use App\Models\Casts\Uuid;
|
||||
use App\Models\Casts\WebAuthnBase64;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Webauthn\PublicKeyCredentialSource;
|
||||
|
||||
class WebauthnCredential extends Model
|
||||
{
|
||||
protected $guarded = ['id'];
|
||||
|
||||
protected $visible = [
|
||||
'id',
|
||||
'name',
|
||||
'type',
|
||||
'attachment_type',
|
||||
'transports',
|
||||
'type_free',
|
||||
'last_used_at',
|
||||
'created_at',
|
||||
'updated_at',
|
||||
];
|
||||
protected $casts = [
|
||||
'aaguid' => Uuid::class,
|
||||
'counter' => 'integer',
|
||||
'credential_id' => WebAuthnBase64::class,
|
||||
'credential_public_key' => WebAuthnBase64::class,
|
||||
'transports' => 'array',
|
||||
'trust_path' => TrustPath::class,
|
||||
'last_used_at' => 'immutable_datetime',
|
||||
];
|
||||
|
||||
public function getPublicKeyCredentialSourceAttribute(): PublicKeyCredentialSource
|
||||
{
|
||||
return new PublicKeyCredentialSource(
|
||||
$this->credential_id,
|
||||
$this->type,
|
||||
$this->transports,
|
||||
$this->attestation_type,
|
||||
$this->trust_path,
|
||||
$this->aaguid ?? \Ramsey\Uuid\Uuid::uuid4(),
|
||||
$this->credential_public_key,
|
||||
(string) $this->user_id,
|
||||
$this->counter,
|
||||
);
|
||||
}
|
||||
|
||||
public function setPublicKeyCredentialSourceAttribute(PublicKeyCredentialSource $source): void
|
||||
{
|
||||
$this->credential_id = $source->getPublicKeyCredentialId();
|
||||
$this->type = $source->getType();
|
||||
$this->transports = $source->getTransports();
|
||||
$this->attestation_type = $source->getAttestationType();
|
||||
$this->trust_path = $source->getTrustPath();
|
||||
$this->aaguid = $source->getAaguid();
|
||||
$this->credential_public_key = $source->getCredentialPublicKey();
|
||||
$this->counter = $source->getCounter();
|
||||
$this->user_id = $source->getUserHandle();
|
||||
}
|
||||
|
||||
public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
{
|
||||
return $this->belongsTo(User::class, "user_id", "id");
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user