['channel_id'], ]; } protected string $table = 'admin'; protected string $pk = 'id'; protected bool $autoWriteTimestamp = true; protected array $append = [ 'group_arr', 'group_name_arr', 'totp_bound', ]; protected array $hidden = [ 'totp_secret', ]; public function getTotpBoundAttr($value, $row): bool { return \app\common\library\AdminTotp::isBound($row['totp_secret'] ?? ''); } public function getGroupArrAttr($value, $row): array { return Db::name('admin_group_access') ->where('uid', $row['id']) ->column('group_id'); } public function getGroupNameArrAttr($value, $row): array { $groupAccess = Db::name('admin_group_access') ->where('uid', $row['id']) ->column('group_id'); return AdminGroup::whereIn('id', $groupAccess)->column('name'); } public function getAvatarAttr($value): string { return full_url($value ?? '', false, config('buildadmin.default_avatar')); } public function setAvatarAttr($value): string { return $value === full_url('', false, config('buildadmin.default_avatar')) ? '' : $value; } public function resetPassword(int|string $uid, string $newPassword): int { return $this->where(['id' => $uid])->update(['password' => hash_password($newPassword), 'salt' => '']); } }