public static function clientUser(BaseOAuth $client) { $attributes = ['name' => $client->getName(), 'service_id' => $client->id]; /** * @var self $model */ if (!($model = self::findOne($attributes))) { $model = new self(array_merge($attributes, ['created_at' => time(), 'data' => json_encode($client->getUserAttributes())])); $model->save(false); $user = new User(['username' => $model->name . $model->id, 'status' => User::STATUS_ACTIVE]); $user->save(false); $model->updateAttributes(['user_id' => $user->id]); return $user; } return $model->user; }