Files
vuefilemanager/app/Models/Share.php
2021-03-19 09:04:18 +01:00

56 lines
1.0 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Str;
class Share extends Model
{
use Notifiable, HasFactory;
protected $guarded = ['id'];
protected $appends = ['link'];
public $incrementing = false;
protected $keyType = 'string';
protected $primaryKey = 'token';
protected $casts = [
'is_protected' => 'boolean'
];
/**
* Generate share link
*
* @return string
*/
public function getLinkAttribute()
{
return url('/share', ['token' => $this->attributes['token']]);
}
public function user()
{
return $this->hasOne(User::class, 'id', 'user_id');
}
/**
* Model events
*/
protected static function boot()
{
parent::boot();
static::creating(function ($shared) {
$shared->id = (string)Str::uuid();
$shared->token = Str::random(16);
});
}
}