New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

reclaim-identity-js

Package Overview
Dependencies
Maintainers
0
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

reclaim-identity-js

Reclaim Identity is a JavaScript library for integrating Reclaim Protocol authentication into both Node.js and browser applications. It provides a simple interface for handling user authentication, including sign-in, sign-out, and monitoring authenticatio

  • 1.0.0
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

Reclaim Identity

Reclaim Identity is a JavaScript library for integrating Reclaim Protocol authentication into both Node.js and browser applications. It provides a simple interface for handling user authentication, including sign-in, sign-out, and monitoring authentication state changes.

Features

  • Universal module (works in both Node.js and browser environments)
  • Simple API for authentication operations
  • Event-based auth state changes
  • Secure token handling

Installation

NPM

npm install identity-js

CDN

You can use Identity Js directly from a CDN via a script tag:

<script src="https://unpkg.com/reclaim-auth@1.0.0/dist/reclaimAuth.min.js"></script>

Or, if you prefer jsDelivr:

<script src="https://cdn.jsdelivr.net/npm/reclaim-auth@1.0.0/dist/reclaimAuth.min.js"></script>

Usage

Initialization

Browser
<script src="https://unpkg.com/reclaim-auth@1.0.0/dist/reclaimAuth.min.js"></script>
<script>
    const clientId = 'your-client-id';
    const redirectUri = 'your-redirect-uri';
    const reclaimAuth = getReclaimAuth(clientId, redirectUri);
</script>
Node.js
const getReclaimAuth = require('reclaim-auth');

// Ensure fetch is available globally
if (!global.fetch) {
    global.fetch = require('node-fetch');
}

const clientId = 'your-client-id';
const redirectUri = 'your-redirect-uri';
const reclaimAuth = getReclaimAuth(clientId, redirectUri);

Sign In (Browser only)

reclaimAuth.signIn()
  .then(user => {
    console.log('Signed in user:', user);
  })
  .catch(error => {
    console.error('Sign in error:', error);
  });

Sign Out

reclaimAuth.signOut()
  .then(() => {
    console.log('User signed out successfully');
  })
  .catch(error => {
    console.error('Sign out error:', error);
  });

Get Current User

const user = reclaimAuth.getCurrentUser();
if (user) {
  console.log('Current user:', user);
} else {
  console.log('No user is currently signed in');
}

Listen for Auth State Changes

reclaimAuth.onAuthStateChanged(user => {
  if (user) {
    console.log('User is signed in:', user);
  } else {
    console.log('User is signed out');
  }
});

Browser Example

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ReclaimAuth Demo</title>
</head>
<body>
    <h1>ReclaimAuth Demo</h1>
    <button id="signInButton">Sign In</button>
    <button id="signOutButton">Sign Out</button>
    <div id="userInfo"></div>

    <script src="https://unpkg.com/reclaim-auth@1.0.0/dist/reclaimAuth.min.js"></script>
    <script>
        const clientId = 'your-client-id';
        const redirectUri = 'your-redirect-uri';
        const reclaimAuth = getReclaimAuth(clientId, redirectUri);

        document.getElementById('signInButton').addEventListener('click', () => {
            reclaimAuth.signIn()
                .then(user => {
                    console.log('Signed in user:', user);
                    document.getElementById('userInfo').textContent = JSON.stringify(user);
                })
                .catch(error => {
                    console.error('Sign in error:', error);
                });
        });

        document.getElementById('signOutButton').addEventListener('click', () => {
            reclaimAuth.signOut()
                .then(() => {
                    console.log('User signed out successfully');
                    document.getElementById('userInfo').textContent = 'No user signed in';
                })
                .catch(error => {
                    console.error('Sign out error:', error);
                });
        });

        reclaimAuth.onAuthStateChanged(user => {
            if (user) {
                console.log('User is signed in:', user);
            } else {
                console.log('User is signed out');
            }
        });
    </script>
</body>
</html>

Node.js Example

const getReclaimAuth = require('reclaim-auth');

// Ensure fetch is available globally
if (!global.fetch) {
    global.fetch = require('node-fetch');
}

const clientId = 'your-client-id';
const redirectUri = 'your-redirect-uri';
const reclaimAuth = getReclaimAuth(clientId, redirectUri);

reclaimAuth.onAuthStateChanged(user => {
  if (user) {
    console.log('User is signed in:', user);
  } else {
    console.log('User is signed out');
  }
});

// Note: signIn() is not available in Node.js environment
// You'll need to implement a server-side authentication flow

reclaimAuth.signOut()
  .then(() => {
    console.log('User signed out successfully');
  })
  .catch(error => {
    console.error('Sign out error:', error);
  });

Important Notes

  • The signIn() method only works in browser environments as it requires opening a popup window.
  • For Node.js applications, you'll need to implement a server-side authentication flow.
  • In Node.js environments, ensure that fetch is available globally. You can do this by using a newer version of Node.js that includes fetch, or by using a polyfill like node-fetch and making it global as shown in the Node.js example.
  • Always keep your clientId and redirectUri secure and never expose them in client-side code in production environments.
  • The library uses the fetch API. It's natively available in modern browsers, but for Node.js environments, you need to provide a global fetch implementation as shown in the Node.js example.

Building from Source

If you want to build the library from source:

  1. Clone the repository
  2. Install dependencies: npm install
  3. Build the library: npm run build

This will create a dist/reclaimAuth.min.js file that can be used in browser environments.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Support

If you encounter any issues or have questions, please file an issue on the GitHub repository.

FAQs

Package last updated on 26 Aug 2024

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc