@ianlucas/remix-auth-steam 6.0.0-beta.2 → 6.1.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,4 +10,50 @@ npm install @ianlucas/remix-auth-steam
10
10
 
11
11
  ## Usage
12
12
 
13
- Refer to the [original repo](https://github.com/Andreychik32/remix-auth-steam#file-structure) for usage instructions.
13
+ ### Adding it to Remix Auth
14
+
15
+ ```typescript
16
+ import { SteamStrategy as BaseSteamStrategy } from "@ianlucas/remix-auth-steam";
17
+ import { Strategy } from "remix-auth/strategy";
18
+ import SteamAPI, { type UserSummary } from "steamapi";
19
+
20
+ class SteamStrategy extends BaseSteamStrategy<string> {
21
+ constructor() {
22
+ super(
23
+ async () => ({
24
+ returnURL: STEAM_CALLBACK_URL
25
+ }),
26
+ async ({ userID }) =>
27
+ await upsertUser((await new SteamAPI(STEAM_API_KEY).getUserSummary(userID)) as UserSummary)
28
+ );
29
+ }
30
+ }
31
+
32
+ export const authenticator = new Authenticator<string>();
33
+ authenticator.use(new SteamStrategy(), "steam");
34
+ ```
35
+
36
+ ### Using it in routes
37
+
38
+ #### `sign-in._index.tsx`
39
+
40
+ ```typescript
41
+ export async function loader({ request }: Route.LoaderArgs) {
42
+ return authenticator.authenticate("steam", request);
43
+ }
44
+ ```
45
+
46
+ #### `sign-in.steam.callback._index.tsx`
47
+
48
+ ```typescript
49
+ export async function loader({ request }: Route.LoaderArgs) {
50
+ const userId = await authenticator.authenticate("steam", request);
51
+ const session = await getSession(request.headers.get("cookie"));
52
+ session.set("userId", userId);
53
+ throw redirect("/", {
54
+ headers: {
55
+ "Set-Cookie": await commitSession(session)
56
+ }
57
+ });
58
+ }
59
+ ```
package/dist/openid.js CHANGED
@@ -67,6 +67,16 @@ export class SteamOpenID {
67
67
  if (!args["openid.return_to"]?.startsWith(this.returnUrl)) {
68
68
  throw new Error('Invalid "openid.return_to".');
69
69
  }
70
+ // Validate response_nonce format and timestamp
71
+ // RFC3339 YYYY-MM-DDTHH:MM:SSZ followed by unique characters
72
+ const nonceMatch = args["openid.response_nonce"]?.match(/^([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z)/);
73
+ if (!nonceMatch || !nonceMatch[1]) {
74
+ throw new Error('Invalid "openid.response_nonce" format.');
75
+ }
76
+ const nonceTime = new Date(nonceMatch[1]).getTime();
77
+ if (isNaN(nonceTime) || Math.abs(Date.now() - nonceTime) > 300_000) {
78
+ throw new Error("Nonce timestamp is too old or invalid.");
79
+ }
70
80
  // Extract SteamID from the identity URL
71
81
  const match = args["openid.identity"]?.match(SteamOpenID.STEAM_ID_REGEX);
72
82
  if (!match || !match[1]) {
@@ -1 +1 @@
1
- {"version":3,"file":"openid.js","sourceRoot":"","sources":["../src/openid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openid.js","sourceRoot":"","sources":["../src/openid.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG;;;GAGG;AACH,MAAM,OAAO,WAAW;IACZ,MAAM,CAAU,MAAM,GAAG,yCAAyC,CAAC;IACnE,MAAM,CAAU,SAAS,GAAG,kCAAkC,CAAC;IAC/D,MAAM,CAAU,eAAe,GACnC,8EAA8E,CAAC;IAC3E,MAAM,CAAU,cAAc,GAAG,kEAAkE,CAAC;IAE5G;;;OAGG;IACa,SAAS,CAAS;IAElC;;OAEG;IACc,MAAM,CAAkB;IAEzC;;;;OAIG;IACH,YAAY,SAAiB,EAAE,OAAgB;QAC3C,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;IACpD,CAAC;IAED;;;OAGG;IACI,cAAc;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC;IACvD,CAAC;IAED;;;OAGG;IACI,UAAU;QACb,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YAC/B,WAAW,EAAE,WAAW,CAAC,SAAS;YAClC,aAAa,EAAE,eAAe;YAC9B,kBAAkB,EAAE,IAAI,CAAC,SAAS;YAClC,iBAAiB,EAAE,oDAAoD;YACvE,mBAAmB,EAAE,oDAAoD;SAC5E,CAAC,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,QAAQ;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE5C,kFAAkF;QAClF,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACnD,CAAC;QAED,+CAA+C;QAC/C,6DAA6D;QAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,KAAK,CACnD,2DAA2D,CAC9D,CAAC;QACF,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACpD,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,OAAO,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QAED,wCAAwC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEzB,kDAAkD;QAClD,MAAM,kBAAkB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QACrD,kBAAkB,CAAC,GAAG,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;QAE9D,yCAAyC;QACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;QAExE,mCAAmC;QACnC,MAAM,SAAS,GAAG,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAEvD,0CAA0C;QAC1C,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAChF,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,uBAAuB,CAAC,MAAuB;QAC3D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,mCAAmC;gBACnD,YAAY,EAAE,8BAA8B;aAC/C;YACD,IAAI,EAAE,MAAM;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;YACtF,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,+CAA+C,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACvF,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACK,uBAAuB;QAC3B,MAAM,IAAI,GAA2B,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE1D,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC3B,+DAA+D;YAC/D,MAAM,SAAS,GAAG,UAAU,GAAG,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,MAAM,IAAI,KAAK,CAAC,uCAAuC,SAAS,IAAI,CAAC,CAAC;YAC1E,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QAC5B,CAAC;QAED,qDAAqD;QACrD,MAAM,iBAAiB,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QACrE,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,IAAI,CAAC,CAAC;YACpE,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,WAAW,CAAC,eAAe,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,cAAc,CAAC,QAAgB;QAC1C,MAAM,IAAI,GAA2B,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;gBAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;gBACjD,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC"}
package/package.json CHANGED
@@ -33,5 +33,5 @@
33
33
  "typedoc": "^0.28.7",
34
34
  "typescript": "^5.8.3"
35
35
  },
36
- "version": "6.0.0-beta.2"
36
+ "version": "6.1.0-beta.1"
37
37
  }