@relationlabs/auth
TypeScript icon, indicating that this package has built-in type declarations

1.0.7 • Public • Published

@relationlabs/auth

JS SDK for relation auth provide authentication and registration functions.

Quick Start

Install

$ npm i @relationlabs/auth
# or
$ yarn add @relationlabs/auth
# or
$ pnpm i @relationlabs/auth

Usage

authByPersonal

import { authByPersonal } from '@relationlabs/auth'
const { token, error } = authByPersonal(options)

options

  • message - string: Current timestamp string (valid within 15 minutes)
  • signature - string: Current timestamp string signed by your wallet
  • walletName - string: Your Wallet Name (metamask, binance, polkadot, or other)
  • chainName - string: Your Chain Name (eth, substrate, or other)

authByMetamask

import { authByMetamask } from '@relationlabs/auth'
const { token, error } = authByMetamask()

authByEthereum

import { authByEthereum } from '@relationlabs/auth'
import { ethers } from 'ethers'

const provider = new ethers.providers.Web3Provider(window.ethereum)
const { token, error } = authByEthereum(provider)

options

  • provider - Provider: (ethers.providers.Web3Provider, ethers.providers.JsonRpcProvider, or other)

Result AuthResult

interface AuthResult {
  token: string
  error?: string
}

Example

Metamask

import { authByMetamask } from '@relationlabs/auth'
const { token, error } = authByMetamask()

Other ethereum wallets

import { authByEthereum } from '@relationlabs/auth'
import { ethers } from 'ethers'

const provider = new ethers.providers.Web3Provider(window.BinanceChain)
const { token, error } = authByEthereum(provider, {
  walletName: 'binance',
  chainName: 'eth',
})

Other wallets

Wallet Connect

import QRCodeModal from '@walletconnect/qrcode-modal'
import WalletConnect from '@walletconnect/client'
import { authByPersonal } from '@relationlabs/auth';

const connector = new WalletConnect({
  bridge: 'https://bridge.walletconnect.org',
  qrcodeModal: QRCodeModal,
})

if (connector.connected) {
  await connector.killSession()
}
connector.createSession()
const message = `${new Date().getTime()}`
const accounts = connector.accounts

return connector.signPersonalMessage([message, accounts[0]])
const signature = await signPersonalMessage(connector, accounts, message)
const { token, error } = await authByPersonal({
  message,
  signature,
  walletName: 'metamask',
  chainName: 'eth',
})

Polkadot

import { web3Accounts, web3FromSource } from '@polkadot/extension-dapp'

const allAccounts = await web3Accounts()
if (allAccounts.length <= 0) throw new Error('There is no polkadot account')
const account = allAccounts[0]
const injector = await web3FromSource(account.meta.source)
const signRaw = injector?.signer?.signRaw
if (!signRaw) throw new Error('There is no polkadot signer')
const message = `${new Date().getTime()}`
const { signature } = await signRaw({
  address: account.address,
  data: stringToHex(message),
  type: 'bytes',
})
const { token, error } = await authByPersonal({
  message,
  signature,
  walletName: 'polkadot',
  chainName: 'substrate',
})

Readme

Keywords

none

Package Sidebar

Install

npm i @relationlabs/auth

Weekly Downloads

1

Version

1.0.7

License

MIT

Unpacked Size

98.8 kB

Total Files

21

Last publish

Collaborators

  • ins893412899
  • relationlabs