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

amplify-auth-next-storage

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

amplify-auth-next-storage

Isomorphic cookie storage for Next.js apps using @aws-amplify/auth

  • 1.1.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
24
increased by60%
Maintainers
1
Weekly downloads
 
Created
Source

amplify-auth-next-storage

Isomorphic cookie storage for Next.js apps using @aws-amplify/auth

Installation

$ npm install amplify-auth-next-storage

Options

new NextStorage(ctx, options)
  • ctx is the Next.js ctx object, only required server-side. Pass null or undefined on the client-side.
  • options are identical to Amplify's cookieStorage configuration options.

https://aws-amplify.github.io/docs/js/authentication#manual-setup

OptionTypeDefaultDescription
domain (required)stringnoneCookies domain
expiresnumber365Cookie expiration in days
pathstring/Cookies path
securebooleantrueCookie secure flag

Usage

// utils/auth-utils.js

// Placing your configuration into a reusable utility function isn't strictly
// necessary, but makes repeated use of Auth.configure() easier

import Auth from '@aws-amplify/auth';
import NextStorage from 'amplify-auth-next-storage';

export function configurePool(ctx) {
  Auth.configure({
    region: 'us-east-1',
    userPoolId: 'us-east-1_xxxxx',
    userPoolWebClientId: 'xxxxxxxxxxxxxxx',
    storage: new NextStorage(ctx, {
      domain: '.yourdomain.com',
      expires: 365,
      path: '/',
      secure: true,
    }),
  });
}

// pages/_app.js

import React from 'react';
import { configurePool } from 'utils/auth-utils';
import fetch from 'node-fetch';

global.fetch = fetch; // One workaround for getting Auth.configure to work properly server-side

const YourApp = ({ Component, pageProps }) => {
  // Running this once at the app level, client-side, allows you to
  // use `Auth` methods in all of your components 

  configurePool();

  return <Component {...pageProps} />;
};

YourApp.getInitialProps = async (appContext) => {
  const appProps = await App.getInitialProps(appContext);

  // However, we need to configure the pool every time it's needed within getInitialProps

  configurePool(appContext.ctx);

  // ... do stuff with Auth. e.g. Auth.currentUserInfo

  return { ...appProps };
};

export default YourApp;

// components/FancyComponent.js

import React from 'react';
import { configurePool } from 'utils/auth-utils';

const FancyComponent = () => {
  // You can use auth here without configuring the pool since we already
  // configured it at the YourApp level

  Auth.currentUserInfo().then(currentUser => console.log(currentUser));

  return <div>Fancy Component</div>;
}

FancyComponent.getInitialProps = async (ctx) => {
  // If we need Auth in this component server-side, we need to configure the pool again

  configurePool(ctx);

  await Auth.currentUserInfo().then(currentUser => console.log(currentUser));

  return {};
}

Notes

If you're struggling to get Auth.configure to work properly on the server side, one workaround is to use something like node-fetch as the global fetch.

// _app.js

import fetch from 'node-fetch';

global.fetch = fetch;

// ... the rest of your _app.js file

Keywords

FAQs

Package last updated on 21 Feb 2020

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