49 lines
974 B
PHP
49 lines
974 B
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
use Illuminate\Support\Str;
|
|
|
|
class PersonalAccessToken extends Model
|
|
{
|
|
protected $fillable = [
|
|
'user_id',
|
|
'name',
|
|
'token',
|
|
'abilities',
|
|
'last_used_at',
|
|
];
|
|
|
|
protected $hidden = [
|
|
'token',
|
|
];
|
|
|
|
protected function casts(): array
|
|
{
|
|
return [
|
|
'abilities' => 'array',
|
|
'last_used_at' => 'datetime',
|
|
];
|
|
}
|
|
|
|
public static function issueFor(User $user, string $name = 'mobile-app'): string
|
|
{
|
|
$plainTextToken = Str::random(64);
|
|
|
|
$user->tokens()->create([
|
|
'name' => $name,
|
|
'token' => hash('sha256', $plainTextToken),
|
|
'abilities' => ['*'],
|
|
]);
|
|
|
|
return $plainTextToken;
|
|
}
|
|
|
|
public function user(): BelongsTo
|
|
{
|
|
return $this->belongsTo(User::class);
|
|
}
|
|
}
|