npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@opensaas/keystone-auth0-profile

v0.7.0

Published

This package adds a profile page to Keystone-6 for Auth0. This utalises the `@opensaas/keystone-nextjs-auth` package but add a page, configured via `profilePageName` where the current logged in users profile is displayed.

Downloads

22

Readme

Keystone next auth

This package adds a profile page to Keystone-6 for Auth0. This utalises the @opensaas/keystone-nextjs-auth package but add a page, configured via profilePageName where the current logged in users profile is displayed.

Contents

About

This uses NextAuth.js (https://next-auth.js.org/) project to add social auth and a profile page to Keystone-6 (https://keystonejs.com/). TODO: The roadmap for this package is to then sync information back to auth0 and include account linking via the management API (https://auth0.com/docs/users/user-account-linking).

Adding to your project

Add package by yarn add @opensaas/keystone-auth0-profile then add the following to your keystone.ts:

Add import...

import {
  createAuth,
  nextAuthProviders as Providers,
} from '@opensaas/keystone-auth0-profile';

Add Providers

export const providers = [
  Providers.Auth0({
    clientId: process.env.AUTH0_CLIENT_ID || 'Auth0ClientID',
    clientSecret: process.env.AUTH0_CLIENT_SECRET || 'Auth0ClientSecret',
    domain: process.env.AUTH0_DOMAIN || 'opensaas.au.auth0.com',
  }),
];

for Provider configuration see https://next-auth.js.org/configuration/providers.

Add your Profile and Auth configuration

const profile = createProfile({
  listKey: 'User',
  identityField: 'subjectId',
  sessionData: `id name email`,
  autoCreate: true,
  userMap: { subjectId: 'id', name: 'name' },
  accountMap: {},
  profileMap: { email: 'email' },
  profilePageName: 'me',
});

Wrap your keystone config in profile.withProfile

export default profile.withProfile(
  config({
    server: {},
    db: {},
    ui: {},
    lists,
    ...
  });

Configuration

Provider configuration see https://next-auth.js.org/configuration/providers. For Keystone-6 Configuration see https://keystonejs.com/ for example see the example backend

  • listKey - the list for authentication (generally 'User')
  • identityField - The field that stores the identity/subjectId in keystone (generally 'subjectId')
  • sessionData - Data to be stored in the session ( something like 'id name email'),
  • autoCreate - boolean to autocreate a user when they log in
  • userMap: key:value pairs that define what is copied from the User object returned from NextAuth in the SignIn callback (https://next-auth.js.org/configuration/callbacks#sign-in-callback) Left side is Keystone side, right is what comes from NextAuth eg: { subjectId: 'id', name: 'name' }
  • accountMap - As Above but for the Account object
  • profileMap - As Above but for the Profile object

Contributing

If you want to run this package locally After cloning run yarn install and either:

  • yarn dev to run both the frontend and backend or
  • yarn dev:backend for just the backend

The Demo App is configured in next.config.js to proxy /api/auth to the the host setup using the environment varible BACKEND_BASE_URL in development set export BACKEND_BASE_URL=http://localhost:3000 you will also need to set your NEXTAUTH_URL environment varible see https://next-auth.js.org/configuration/options for more information.