%PDF- %PDF-
Direktori : /var/www/html/o91-api/app/Models/ |
Current File : /var/www/html/o91-api/app/Models/User.php |
<?php namespace App\Models; use Carbon\Carbon; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Passport\HasApiTokens; use Spatie\MediaLibrary\Exceptions\FileCannotBeAdded; use Spatie\MediaLibrary\Exceptions\FileCannotBeAdded\InvalidBase64Data; use Spatie\MediaLibrary\HasMedia\HasMedia; use Spatie\MediaLibrary\HasMedia\HasMediaTrait; use Spatie\Permission\Traits\HasRoles; /** * @property integer id * @property string name * @property string surname * @property string email * @property string password * @property boolean is_confirmed * @property boolean is_enabled * @property mixed created_at * @property mixed updated_at */ class User extends Authenticatable implements HasMedia { use HasApiTokens, Notifiable, HasRoles, HasMediaTrait; const AVATAR = 'avatars'; const AVATAR_DISK = 'avatars'; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'surname', 'password', 'email', 'is_confirmed', 'is_enabled', ]; protected $guarded = [ 'role_id', ]; protected $guard_name = 'api'; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; protected $casts = [ 'id' => 'integer', 'name' => 'string', 'surname' => 'string', 'email' => 'string', 'is_confirmed' => 'boolean', 'is_enabled' => 'boolean', ]; public function setPasswordAttribute($value) { $this->attributes['password'] = bcrypt($value); } public function getCreatedAtAttribute($value) { return Carbon::parse($value) ->toIso8601String(); } public function getUpdatedAtAttribute($value) { return Carbon::parse($value) ->toIso8601String(); } public function confirm() { $this->is_confirmed = true; $this->save(); return $this; } public function enable() { $this->is_enabled = true; $this->save(); return $this; } public function disable() { $this->is_enabled = false; $this->save(); return $this; } public function updatePassword($password) { $this->password = $password; $this->save(); return $this; } public function registerMediaCollections() { $this->addMediaCollection(self::AVATAR) ->useDisk(self::AVATAR_DISK); } /** * @param $baseImage * * @return User * @throws FileCannotBeAdded * @throws InvalidBase64Data */ public function uploadImage($baseImage) { $name = md5(time()); try { if ($media = $this->getMedia(self::AVATAR) ->first()) { $media->delete(); } $this->addMediaFromBase64($baseImage) ->usingName($name) ->usingFileName("$name.jpg") ->toMediaCollection(self::AVATAR); return $this; } catch (InvalidBase64Data $e) { throw $e; } catch (FileCannotBeAdded $e) { throw $e; } } public function getAvatar() { $media = $this->getMedia(self::AVATAR) ->first(); if ($media) { return asset($media->getUrl()); } return asset('svg/user.png'); } }