
Security News
/Research
Wallet-Draining npm Package Impersonates Nodemailer to Hijack Crypto Transactions
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
guestia_client
Advanced tools
`guestia_client` — web-клиент для работы с юзером aviasales имеет следующий функционал:
guestia_client
— web-клиент для работы с юзером aviasales имеет следующий функционал:
$ npm install guestia_client
Для использования, необходимо создать инстанс класса со следующими параметрами:
{
// Обязательные поля
// Идентификатор девайса
uid: string
// Схема настроек пользователя.
// Определяем как будут хранится те или иные настройки при использовании этого инстанса
schema: {
}
// Опциональные поля
host: string
authHost: string
apiVersion: number
// Источник хранения локально. По-умолчанию 'cookie'
storageProvider: 'localStorage' | 'cookie' | undefined
}
Пример использования:
const client = new Guestia({
uid: Cookie.get('auid'),
schema: {
passengers: {
storageProvider: 'localStorage',
},
currency: {
domain: '.aviasales.ru',
expires: Infinity,
defaultValue: 'rub',
},
},
})
export default client
Чтобы залогинить пользователя необходимо вызвать метод login
с указанием соответствующего метода (провайдера) авторизации.
Пример использования:
const { jwt, userInfo } = await client.login(method)
Где method — строка, один из доступных провайдеров авторизации: vk, facebook, twitter, ok, google, mail_ru, yandex, wechat, line, apple
Пример использования:
client.logout()
Пример использования:
const { jwt } = await client.authorize()
if (jwt) {
console.log('User authorized')
} else {
console.log('User unauthorized')
}
Метод getUserInfo()
возвращает Promise со следующей схемой userInfo
:
interface UserInfo {
details: {
auid: string[]
email: string[]
photos: {
max: string | null
medium: string | null
small: string | null
}
}
first_name: string
id: string
last_ip_address: string
last_login_at: string
last_login_method: string
last_name: string
name: string
}
Пример использования:
const { name } = await client.getUserInfo()
Настройки пользователя всегда хранятся в строчном значении. Если сохраняем объект, то храним json
Пример использования:
const currency = client.getSettings(‘currency’) // rub
const { currency } = client.getAllSettings() // { passenger: null, currency: "rub" }
client.setSettings('currency', 'usd')
Возвращает Promise, который зарезолвится когда произойдёт успешное сохранение
client.getJWT()
Вернёт string | null
По-сути, метод просто декодирует и парсит jwt пользователя. Поэтому он синхронный и возвращает строку
client.getUserId()
На данный момент доступна для google(one-tap) и yandex. В этом случае, sdk возвращает jwt, по которому мы можем авторизовать юзера минуя классическую схему OAuth.
client.jwtAuth(provider: AvailableJwtAuthProviders, idToken: string)
Метод асинхронный и возвращает такой же Promise как и в методе login
Текущая реализация gustia_client работает с авторизационным всплывающим окном и передаёт значение jwt через postMessage в основное окно. Но в такой реализации, есть проблема с webview, т.к. там всплывающие окна являются обычным новым окном из которого мы не можем послать postMessage.
Мы делаем редирект обратно на страницу, с которого было открыто окно авторизации и при этом записываем в куки необходимую информацию о юзере, чтобы его в дальнейшем идентефицировать. Что бы после такого редиректа понять авторизован пользователь или нет, нужно:
const client = new Guestia({…})
const { jwt } = await client.authorize() // Авторизуем, получаем jwt
const isAuthorized = !!jwt // jwt: string | null
FAQs
`guestia_client` — web-клиент для работы с юзером aviasales имеет следующий функционал:
The npm package guestia_client receives a total of 28 weekly downloads. As such, guestia_client popularity was classified as not popular.
We found that guestia_client demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.