easyauth-deeplink
TypeScript icon, indicating that this package has built-in type declarations

1.1.1 • Public • Published

Easy Auth deeplink

Enable deeplinking with Azure Easy Auth

npm version Downloads node version Code Style: Prettier Contributor Covenant License: MIT Sponsor: On GitHub TypeScript: Strict

What is easyauth-deeplink?

Azure Static Web Apps support EasyAuth for simple authentication. However, deeplinking is not meaningfully supported - when you are redirected back to your app after authentication you lose query parameters from the URL which is a problem if you want to use deeplinking.

This package implements a workaround which allows you to use query parameters with EasyAuth. It works like this:

  • it checks whether a user is authenticated
  • if they are not, it:
    • stores the path and query string in localStorage and
    • redirects them to the login page
  • when they return post-authentication it retrieves the path and query string from localStorage and sets the URL to that

nb: easyauth-deeplink requires that anonymous access to your site is allowed so it can harvest the path / query to redirect to. We advise that you apply security at the API layer and to any secure data within your app.

To learn more, read this blog post.

Usage

You use easyauth-deeplink as the first action that runs before your app renders. This means that the approach should be framework agnostic. easyauth-deeplink been tested with React and Azure Static Web Apps.

npm i easyauth-deeplink
import { deeplink } from "easyauth-deeplink";

function main() {
	// code that starts your application
}

deeplink("/.auth/login/aad").then(main);
// or
deeplink("/.auth/login/github").then(main);
// or
deeplink("/.auth/login/twitter").then(main);
// or
deeplink("/.auth/login/google").then(main);
// etc

API

The deeplink function takes a single parameter which is the URL to redirect to for authentication. It either triggers the authentication flow or returns a Promise which resolves when the route has been set to the deep linked URL.

/**
 * If authenticated, redirect to the path and query string stored in local storage.
 * If not authenticated, store the current path and query string in local storage and redirect to the login page.
 *
 * @param loginUrl The URL to redirect to if the user is not authenticated
 */
export async function deeplink(loginUrl: string): Promise<void> {

Development

See .github/CONTRIBUTING.md.

Thanks! ❤️🌻

Readme

Keywords

none

Package Sidebar

Install

npm i easyauth-deeplink

Weekly Downloads

277

Version

1.1.1

License

MIT

Unpacked Size

16.8 kB

Total Files

33

Last publish

Collaborators

  • johnnyreilly