{"id":28416427,"url":"https://github.com/thevrus/multipass-everywhere","last_synced_at":"2026-04-13T03:05:59.205Z","repository":{"id":295191260,"uuid":"987189706","full_name":"thevrus/multipass-everywhere","owner":"thevrus","description":"Secure, runtime-agnostic Shopify Multipass token generator for Node.js, Deno, Cloudflare Workers, and more. Lightweight and dependency-free, using only native Web Crypto APIs for encryption.","archived":false,"fork":false,"pushed_at":"2025-05-20T18:05:09.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-11T18:51:19.979Z","etag":null,"topics":["bun","cloudflare","cloudflare-workers","deno","multipass","nodejs","shopify","shopify-api","shopify-apps","wintertc"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/multipass-everywhere","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thevrus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-20T17:52:52.000Z","updated_at":"2025-05-22T22:50:57.000Z","dependencies_parsed_at":"2025-05-24T05:59:22.445Z","dependency_job_id":"e2a66451-c149-4770-9492-c57c7a12fa7c","html_url":"https://github.com/thevrus/multipass-everywhere","commit_stats":null,"previous_names":["thevrus/multipass-everywhere"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thevrus/multipass-everywhere","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevrus%2Fmultipass-everywhere","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevrus%2Fmultipass-everywhere/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevrus%2Fmultipass-everywhere/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevrus%2Fmultipass-everywhere/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thevrus","download_url":"https://codeload.github.com/thevrus/multipass-everywhere/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevrus%2Fmultipass-everywhere/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260997318,"owners_count":23094887,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bun","cloudflare","cloudflare-workers","deno","multipass","nodejs","shopify","shopify-api","shopify-apps","wintertc"],"created_at":"2025-06-03T21:05:05.365Z","updated_at":"2026-04-13T03:05:59.165Z","avatar_url":"https://github.com/thevrus.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Multipass\n\nA secure token generation library for Shopify Multipass authentication. WinterTC compatible - works across all JavaScript runtimes including Cloudflare Workers, Deno, Node.js, and browsers.\n\nShopify provides a mechanism for single sign-on known as Multipass. Multipass uses an AES encrypted JSON hash to securely pass customer information to Shopify and automatically log users in. This library provides functions for generating these tokens using standard Web APIs.\n\nLightweight and dependency-free - uses only native Web Crypto APIs for all cryptographic operations.\n\n## Installation\n\n```bash\nnpm install multipass-everywhere\n```\n\n## Usage\n\n```javascript\nimport { Multipass } from \"multipass-everywhere\";\n\n// Initialize with your Shopify Multipass secret\n// The secret can be found in your shop Admin (Settings \u003e Checkout \u003e Customer Accounts)\nconst multipass = new Multipass(\"your-multipass-secret\");\n\n// Create your customer data hash\n// The email and created_at fields are required\nconst data = {\n  email: \"user@example.com\",\n  first_name: \"John\",\n  last_name: \"Smith\",\n  tag_string: \"vip\",\n  return_to: \"https://your-shop.myshopify.com/products/some-product\",\n};\n\n// Encode data to a token\nconst token = await multipass.encode(data);\nconsole.log(token);\n\n// Generate a full Shopify login URL\nconst url = await multipass.generateUrl(data, \"your-shop.myshopify.com\");\nconsole.log(url);\n// Generates: https://your-shop.myshopify.com/account/login/multipass/{TOKEN}\n```\n\n\u003e **Note**: The library automatically adds the required `created_at` timestamp field.\n\n## Requirements\n\nTo use Multipass with Shopify, an Enterprise / Plus plan is required. Make sure \"Accounts are required\" or \"Accounts are optional\" is selected and Multipass is enabled in your Shopify admin.\n\n## Supported Customer Data Fields\n\nYou can include the following fields in your customer data:\n\n| Field        | Description                                                         |\n| ------------ | ------------------------------------------------------------------- |\n| `email`      | Required. Customer's email address                                  |\n| `created_at` | Required. Current timestamp in ISO8601 format (added automatically) |\n| `first_name` | Customer's first name                                               |\n| `last_name`  | Customer's last name                                                |\n| `tag_string` | Comma-separated tags to apply to the customer                       |\n| `return_to`  | URL path within your store to redirect after login                  |\n| `identifier` | Optional unique identifier if emails aren't unique                  |\n| `addresses`  | Array of customer addresses                                         |\n\n\u003e **Note**: The `remote_ip` field is deprecated and no longer supported by Shopify.\n\n## Token Validity\n\nMultipass tokens are only valid for 15 minutes and can only be used once. You should always generate tokens on-the-fly when needed.\n\n## Features\n\n- Secure encryption using AES-CBC\n- Token signing with HMAC\n- Base64URL encoding for URL safety\n- Works in browser and Node.js environments with Web Crypto API\n- WinterTC compatible - uses standard Web APIs for cross-runtime compatibility\n- Works in serverless environments like Cloudflare Workers\n- Zero dependencies - small bundle size and fast loading\n- Lightweight implementation using only native Web APIs\n\n## Author\n\nVadym Rusin\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthevrus%2Fmultipass-everywhere","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthevrus%2Fmultipass-everywhere","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthevrus%2Fmultipass-everywhere/lists"}