🤝 Senhub Connector
By the integration, your DApps can fully communicate with Senhub platform.
Installation
npm i @sentre/connector
or,
yarn add @sentre/connector
To use
@solana/wallet-adapter
Withimport {
PhantomWalletAdapter,
SlopeWalletAdapter,
} from '@solana/wallet-adapter-wallets'
import { SentreWalletAdapter } from '@sentre/connector'
// Add SentreWalletAdapter with your provided app id to @solana/wallet-adapter
// Example: https://solana-labs.github.io/wallet-adapter/
const appId = 'my-app-id'
const wallets = [
new SentreWalletAdapter({ appId }),
new PhantomWalletAdapter(),
new SlopeWalletAdapter(),
// Other wallets
]
Manual integration
import { WalletConnector } from '@sentre/connector'
const wallet = new WalletConnector('my_app_id')
const isConnected = await wallet.isConnected()
if (isConnected) {
// Get the address
const address = await wallet.getAddress()
// Sign a transaction
const signedTransaction = await wallet.signTransaction(transaction)
// Sign multiple transactions
const signedTransactions = await wallet.signAllTransactions(transactions)
// Sign a message
const { signature, address, message } = await wallet.signMessage(
'the message needs to be signed',
)
}
Testing
OAuth
This module is heavily inspired by JWT. However, JST (Json Solana Token) adopted Solana wallet adapter standard as the main cryptography mechanism.
Usage
import { OAuth } from '@sentre/connector'
const jst = OAuth.issue({ issuer: 'hub.sentre.io' }) // Default at one month of expiration
// On client side
// To sign the jst to get bearer
const bearer = await OAuth.sign(jst, signer)
// On server side
// To verify the bearer
const ok = OAuth.verify(bearer)
// If you want to catch error messages
try {
OAuth.verify(bearer, true)
} catch (er: any) {
console.log(`Verify failed because: ${er.message}`)
}
// To read bearer details
const { publicKey, signature, jst } = OAuth.parse(bearer)