Files
zh-chat-server/app/Models/User.php
2022-11-01 16:39:45 +08:00

79 lines
1.9 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Jason\Api\Api;
use Laravel\Sanctum\HasApiTokens;
use Tencent\TLSSigAPIv2;
use Illuminate\Support\Facades\Crypt;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable, SoftDeletes;
protected $guarded = [];
protected $hidden = [
'password',
'remember_token',
];
protected $casts = [
'privacy' => 'boolean',
];
protected static function boot()
{
parent::boot();
self::created(function ($model) {
$model->info()->create([
'nickname' => '用户'.substr($model->username, -4),
]);
$params = [
'Identifier' => (string) $model->id,
'Nick' => '用户'.substr($model->username, -4),
'FaceUrl' => '',
];
app('im')->send('im_open_login_svc', 'account_import', $params);
$model->setting()->create();
});
}
public function getUserSigAttribute(): string
{
$api = new TLSSigAPIv2(config('im.sdk_app_id'), config('im.secret_key'));
return $api->genUserSig($this->id, 15552000);
}
public function getTokenAttribute(): string
{
return Api::login($this);
}
public function setPasswordAttribute($value): void
{
$this->attributes['password'] = bcrypt($value);
}
public function setMnemonicAttribute($value): void
{
$this->attributes['mnemonic'] = Crypt::encrypt($value);
}
public function info(): HasOne
{
return $this->hasOne(UserInfo::class);
}
public function setting(): HasOne
{
return $this->hasOne(UserSetting::class);
}
}