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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@teppen/react-auth

v0.1.2

Published

Library for integration with proprietary authentication apps, dedicated to react.

Readme

React 認証ライブラリ

独自認証アプリケーションを利用し、認証機能を組み込むためのフロントエンド用の認証ライブラリ。

ライブラリのセットアップ方法

1. ライブラリのインストール (初回のみ)

npm install @teppen/react-auth

2. 環境変数を設定する (初回のみ)

下記の環境変数を設定する。
Next.js の場合は、next.config.jsに環境変数を指定することで、環境変数を定義できる。

Next.js の場合の環境変数設定方法

/** @type {import('next').NextConfig} */
const nextConfig = {
  env: {
    HOST_AUTH_APP: "localhost",
    PROTOCOL_AUTH_APP: "http",
  },
};

module.exports = nextConfig;

環境変数一覧

| 環境変数名 | 説明 | 必須 or 任意 | デフォルト値 | 例 | | ----------------- | ---------------------------------------------------- | ------------ | ------------- | ----------------------- | | HOST_RESOURCE_APP | 認証ライブラリを利用するアプリケーションのホスト名 | 必須 | - | nginx:81 | | HOST_AUTH_APP | 認証アプリのホスト名 | 必須 | - | authentication.test.com | | KEY_ACCESS_TOKEN | アクセストークン保存用のローカルストレージのキー | 任意 | access_token | access_token | | KEY_REFRESH_TOKEN | リフレッシュトークン保存用のローカルストレージのキー | 任意 | refresh_token | refresh_token | | PATH_REFRESH_PAGE | トークンリフレッシュ用のページのパス | 任意 | /refresh | /refresh | | PROTOCOL_AUTH_APP | 認証アプリの通信プロトコル | 任意 | https | http | | PORT_AUTH_APP | 認証アプリの通信ポート | 任意 | - | 8080 |

4. リフレッシュ用のページを追加

認証アプリとやり取りをして、トークンの設定やリフレッシュを行うページが必要となる。 デフォルトでは、/refreshページがそのためのページとして扱わられる。
※ このページは環境変数にて変更は可能。

このページは以下の通り作成する必要がある。 ※ 今回は、Next.js の App Router を想定し、ファイルsrc/app/refresh/page.tsxに記載するものとする。

"use client";

import { RefreshPage } from "@teppen/react-auth";

export default RefreshPage;

ライブラリの利用方法

リソース API の呼び出し用関数

リソース API の呼び出し用に、3 つの Axios インスタンスを準備している。 これらの使い方は一般的な Axios と同様である。

axiosPublic

認証なしの API を呼び出すための Axios インスタンス。
通常の Axios と使い方や動作は変わらない。

axiosPrivate

認証保護ありの API を呼び出すための Axios インスタンス。
自動で API とトークンのやり取りを実行する。

また、トークンの有効期限が切れている場合に、自動でリフレッシュを行う。
また、リフレッシュが失敗した場合に、自動でサインイン画面へ遷移する。

axiosPrivateNoRedirect

認証保護ありの API を呼び出すための Axios インスタンス。
自動で API とトークンのやり取りを実行する。

また、トークンの有効期限が切れている場合に、自動でリフレッシュを行う。
ただし、リフレッシュが失敗した場合は、それ以降のエラー対応を実施しない。(自動でサインイン画面に遷移しない)

未認証ユーザも利用するページでaxiosPrivateを利用すると、未認証ユーザは毎回サインイン画面に遷移させられてページの参照すらできない。
未認証ユーザも参照してよいページでは、axiosPrivateNoRedirectを利用することとなる。

サインイン画面へのリダイレクト

ユーザをサインイン画面に遷移させたい場合に利用するためのredirectSignInPage関数を準備している。
この関数を利用することで、認証アプリのサインイン画面へユーザを遷移させることができる。
(参考: axiosPrivateは内部でこの関数を利用している。)

もし、認証アプリ側で既にサインイン済みの場合は、自動でリダイレクトを数回したのち、リソースアプリ側も自動でサインイン状態となる仕様である。

認証済みユーザと未認証ユーザが利用するページを作成する場合

認証済みユーザと未認証ユーザの両方が利用するページの場合、認証ユーザのみに表示したい情報、未認証ユーザのみに表示したいコンポーネント等が発生しうる。

そのために、認証状態をページ全体で管理するために、AuthenticationProviderを利用する必要がある。

AuthenticationProviderを対象のページのレイアウトに組み込むことで、ページ全体で認証状態を管理することが可能。
Next.js の全てのページに適用した場合の例は以下の通り。(src/app/layout.tsx)

import { AuthenticationProvider } from "@teppen/react-auth";
import "./globals.css";
import type { Metadata } from "next";

export const metadata: Metadata = {
  title: "Create Next App",
  description: "Generated by create next app",
};

export default function RootLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  return (
    <html lang="en">
      <body>
        <AuthenticationProvider>{children}</AuthenticationProvider>
      </body>
    </html>
  );
}

これにより、ページ内の各コンポーネントにて、ライブラリで提供している以下のコンポーネントや関数を利用することが可能となる。

AuthenticationProvider 内で利用可能なコンポーネント

| コンポーネント | 説明 | | ---------------------- | ---------------------------------------------------------------------------------- | | SwitchBySignedInStatus | 認証済みユーザと未認証済みユーザで表示するコンポーネントを切り替えるコンポーネント | | DisplayOnlySignedIn | 認証済みユーザのみにコンポーネントを表示するコンポーネント | | DisplayOnlyNotSignedIn | 未認証ユーザのみにコンポーネントを表示するコンポーネント |

AuthenticationProvider 内で利用可能な関数

| 関数 | 説明 | 戻り値 | | ----------------- | ---------------------------------- | ------------------------------------------------- | | useAuthentication | 認証済みのユーザ情報を取得する関数 | signedIn: booleanpayload: TAccessTokenPayload |

認証済みユーザしか利用できないページを作成する場合

axiosPrivate関数を利用してリソース API のリクエストを実行することで、エラーコード 401が返ってきた場合に、自動的にリフレッシュ & サインイン画面へのリフレッシュが実行される。

AuthenticationProviderなどを利用することは必須ではない。
ただし、AuthenticationProvideruseAuthenticationを利用することで、ユーザの認証情報を簡単に取得することも可能である。
useSWRGetUserInfoでも同じ情報を取得可能。この場合、AuthenticationProviderは不要