Мы рады сообщить, что в Appwrite 1.0 вы можете импортировать пользователей с разных платформ в Appwrite. Одной из таких платформ является Netlify GoTrue. В этом уроке

мы покажем вам, как экспортировать пользователей с платформы на базе GoTrue и импортировать их в Appwrite.

Во-первых, вам может быть интересно, что такое Appwrite. Appwrite — это Backend-as-a-Service (BaaS) с открытым исходным кодом, упакованный в виде набора микросервисов Docker, чтобы дать разработчикам любого уровня подготовки инструменты, необходимые для создания современных приложения быстро и безопасно.

Для этого руководства вам потребуется установить NodeJS на вашем компьютере, так как мы будем использовать его для экспорта ваших пользователей GoTrue и их импорта в Appwrite. Мы также предоставим сценарий в конце этого руководства, который вы можете скопировать и вставить, чтобы начать работу.

TL;DR — GitHub для завершенного проекта

Предупреждение. Пользователи с паролями длиной менее шести символов не будут работать с Appwrite; в этом случае мы рекомендуем отправить электронное письмо вашим пользователям для сброса пароля.

Итак, давайте перейдем к нашему первому этапу.

Экспорт пользователей из GoTrue

Чтобы экспортировать пользователей из GoTrue, вам нужно подключиться к вашей базе данных Postgres и создать дамп таблицы auth.users. Это можно сделать с помощью модуля узла node-postgres.

Использование модуля node-postgres

Сначала создайте папку проекта и установите модуль node-postgres с помощью npm.

npm install pg

Затем создайте файл с именем main.js и добавьте следующий код.

const { Client } = require('pg')

// Connect to your Postgres database
const client = new Client({
    user: 'postgres',
    host: 'postgres_url',
    database: 'postgres',
    password: 'yourpasword',
    port: 5432,
  })

client.connect()

// Dump the auth.users table
client.query('SELECT * FROM auth.users', (err, res) => {
    if (err) {
        console.log(err.stack)
        client.end()
    } else {
        console.log('Recieved ' + res.rowCount + ' users')
        client.end()
        return res.rows
    }
})

Этот код подключится к вашей базе данных GoTrue и создаст дамп таблицы auth.users. Затем вы можете использовать переменную res.rows для доступа к пользователям. В следующем разделе мы добавим этот код для импорта пользователей в Appwrite.

Импорт пользователей в Appwrite

Теперь, когда мы экспортировали пользователей из GoTrue, мы можем импортировать их в Appwrite. Для этого мы будем использовать Appwrite Server SDK для NodeJS.

Во-первых, мы собираемся установить Appwrite SDK с помощью NPM.

npm install node-appwrite

После этого мы расширим код, который мы написали в предыдущем разделе, чтобы импортировать пользователей в Appwrite.

Добавьте следующее в начало файла, обязательно обновив переменные в соответствии с вашим экземпляром Appwrite:

const SDK = require('node-appwrite')

const appwriteClient = new sdk.Client()

appwriteClient
    .setEndpoint('http://localhost/v1') // Your API Endpoint
    .setProject('projectKey') // Your project ID
    .setKey('Server API Key') // Your secret API key
    .setSelfSigned() // Use only on dev mode with a self-signed SSL cert
;

Затем перезапишите код обратного вызова client.query следующим образом:

console.log('Received ' + res.rowCount + ' users')

for (const user of res.rows) { 
            console.log('Importing user' + user.email)

            await users.createBcryptUser(
                user.id,
                user.email,
                user.encrypted_password
            )
  }

console.log('Successfully Imported ' + res.rowCount + ' users')
client.end()
return res.rows

Этот код будет перебирать каждого пользователя и создавать нового пользователя в Appwrite с помощью метода users.createBcryptUser. Дополнительную информацию об этом методе можно найти в Справочнике по Appwrite API.

После всего этого вы можете запустить скрипт с помощью node main.js, и ваши пользователи будут импортированы в Appwrite. Убедитесь, что у вас есть тестовая учетная запись в GoTrue, чтобы убедиться, что импорт прошел успешно.

Выводы

В этом руководстве показано, как экспортировать пользователей с платформы на основе GoTrue и импортировать их в Appwrite. Мы также предоставили сценарий, который вы можете скопировать и вставить, чтобы начать работу. Если у вас есть вопросы или комментарии, присоединяйтесь к нашему серверу Discord.

Полную версию этого проекта можно найти в репозитории GitHub здесь.

Подробнее о Appwrite

Appwrite — это Backend-as-a-Service (BaaS) с открытым исходным кодом, упакованный в виде набора микросервисов Docker, чтобы дать разработчикам любого уровня подготовки инструменты, необходимые для быстрого и безопасного создания современных приложений.

Пообщайтесь с нами в Discord или узнайте больше о Appwrite:

Попробуйте Appwrite в качестве бэкенда для вашего следующего веб-приложения, Flutter или серверного приложения. Вот несколько полезных ссылок для получения дополнительной информации:

Руководство по написанию приложений

Приложение Discord

Приложение Github

Документация по написанию приложений