Мы рады сообщить, что в 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 или серверного приложения. Вот несколько полезных ссылок для получения дополнительной информации: