0.1.10 • Published 2 years ago

nft-login v0.1.10

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

NFT Login from SaaS Deals

This is a react HOC that allows users to authenticate and log in to an application using NFTs they own. It's a higher order component that wraps some web3 calls to make NFT login simpler.

Metamask Transaction Example

About SaaS Deals

SaaS Deals is a a marketplace for new SaaS companies to launch. Users can buy an NFT representing lifetime access to the product. The NFT can be traded on the marketplace and the founders get royalties when the NFT is traded.

Props

PropDescription
keyAPI Key from https://saasdeals.io
urlAPI Endpoint from https://saasdeals.io
contractsAn Array of contract addresses you want to check
messageThe message you want to display to the user when they sign the login message

How It Works

This is a higher order component. Simply wrap your react component in the NFTLogin HOC with the key and your contract addresses and you're all set. You'll need an account on SaaS Deals for this to work.

In the future (if there's demand) we may pull this out into a separate, stand alone service. let me know on Twitter.

Functions

FunctionDescriptionReturns
loginPassed to your component as a prop called login. It takes an optional array of contracts or no arguments example: this.props.login({ contracts: ['0x123'], message: "My Message" }){ success: true, matches: res.matches }
connectWalletPassed to your component as a prop called connectWallet. It takes no arguments. Calling login automatically calls connectWallet so you should not need to call this function directly.{ wallet: String, chain: String, connected: Boolean }
{
  /*... your component */
}

export default NFTLogin(NFTLoginImplementation, {
  key: 'xxx-xx-xx-xx-xx',
  contracts: ['0x...'],
})

Example Usage

import React, { Component } from 'react'
import NFTLogin from 'nft-login'

class NFTLoginImplementation extends Component {
  constructor(props) {
    super(props)
    this.state = { matches: [] }
  }

  login = async () => {
    const matches = await this.props.login()
    // or
    // const matches = await this.props.login({ contracts: ['0x...'], message: "Login with my nft!!!" })

    console.log('~ matches', matches)
    this.setState({ matches })
  }

  render() {
    const { matches } = this.state
    return (
      <div>
        <button type="button" onClick={this.login}>
          Login with nft
        </button>
        <div>{matches.length} matches</div>
      </div>
    )
  }
}

export default NFTLogin(NFTLoginImplementation, {
  key: 'xxx-xx-xx-xx-xx',
  contracts: ['0x...'],
})
0.1.10

2 years ago

0.1.9

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.17

2 years ago

0.0.16

2 years ago

0.0.15

2 years ago

0.0.14

2 years ago

0.0.13

2 years ago

0.0.12

2 years ago

0.0.11

2 years ago

0.0.10

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago