A server/auth/passport.ts => server/auth/passport.ts +34 -0
@@ 0,0 1,34 @@
+import dotenv from "dotenv";
+import passport from "passport";
+import { Strategy } from "passport-steam";
+import { SteamUser } from "../../src/models/User";
+
+dotenv.config();
+
+const serverPort = Number(process.env.PORT)! + 1;
+const serverUrl = process.env.BASE_URL + ":" + serverPort;
+
+passport.use(
+ new Strategy(
+ {
+ returnURL: serverUrl + "/auth/callback",
+ realm: serverUrl,
+ apiKey: process.env.STEAM_API_KEY,
+ },
+ function (identifier: any, profile: any, done: any) {
+ return done(null, profile);
+ },
+ ),
+);
+
+passport.serializeUser(function (user, done) {
+ const u = user as SteamUser;
+ done(null, u);
+});
+
+passport.deserializeUser(function (user, done) {
+ const u = user as SteamUser;
+ done(null, u);
+});
+
+export default passport;
A src/models/User.ts => src/models/User.ts +11 -0
@@ 0,0 1,11 @@
+export interface SteamUser {
+ provider: string;
+ id: string;
+ _json: Record<string, unknown>;
+ displayName: string;
+ photos: [
+ Record<string, unknown>,
+ Record<string, unknown>,
+ Record<string, unknown>,
+ ];
+}