@rpcbase/auth 0.110.0 → 0.112.0
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/dist/handler-BH38xcvj.js +60 -0
- package/dist/handler-BH38xcvj.js.map +1 -0
- package/dist/handler-Bjxe8iM2.js +67 -0
- package/dist/handler-Bjxe8iM2.js.map +1 -0
- package/dist/handler-CVeU9Nyf.js +85 -0
- package/dist/handler-CVeU9Nyf.js.map +1 -0
- package/dist/handler-CrTy-N1A.js +51 -0
- package/dist/handler-CrTy-N1A.js.map +1 -0
- package/dist/handler-D2-FmmDc.js +56 -0
- package/dist/handler-D2-FmmDc.js.map +1 -0
- package/dist/handler-D4-sXlBe.js +74 -0
- package/dist/handler-D4-sXlBe.js.map +1 -0
- package/dist/handler-D87G4mz9.js +67 -0
- package/dist/handler-D87G4mz9.js.map +1 -0
- package/dist/handler-DKrwSIQz.js +19 -0
- package/dist/handler-DKrwSIQz.js.map +1 -0
- package/dist/handler-tJUJWqII.js +59 -0
- package/dist/handler-tJUJWqII.js.map +1 -0
- package/dist/index.js +657 -684
- package/dist/index.js.map +1 -1
- package/dist/middleware-BbKZ_rOe.js +18 -0
- package/dist/middleware-BbKZ_rOe.js.map +1 -0
- package/dist/oauth/index.js +625 -746
- package/dist/oauth/index.js.map +1 -1
- package/dist/routes.js +18 -9
- package/dist/routes.js.map +1 -1
- package/dist/schemas-BKnjeqQ9.js +3380 -0
- package/dist/schemas-BKnjeqQ9.js.map +1 -0
- package/dist/sign-in-C9a-NvBu.js +18 -0
- package/dist/sign-in-C9a-NvBu.js.map +1 -0
- package/dist/sign-up-DqDJxb2D.js +18 -0
- package/dist/sign-up-DqDJxb2D.js.map +1 -0
- package/package.json +1 -1
- package/dist/handler-BNDemOGd.js +0 -79
- package/dist/handler-BNDemOGd.js.map +0 -1
- package/dist/handler-Bt53h0sk.js +0 -64
- package/dist/handler-Bt53h0sk.js.map +0 -1
- package/dist/handler-C4cw739Z.js +0 -59
- package/dist/handler-C4cw739Z.js.map +0 -1
- package/dist/handler-Ck7oLQ_R.js +0 -87
- package/dist/handler-Ck7oLQ_R.js.map +0 -1
- package/dist/handler-CyP6R8FM.js +0 -24
- package/dist/handler-CyP6R8FM.js.map +0 -1
- package/dist/handler-D6zJn86A.js +0 -82
- package/dist/handler-D6zJn86A.js.map +0 -1
- package/dist/handler-D8HfTbUs.js +0 -58
- package/dist/handler-D8HfTbUs.js.map +0 -1
- package/dist/handler-DfEsSB4T.js +0 -74
- package/dist/handler-DfEsSB4T.js.map +0 -1
- package/dist/handler-xEpHnzkZ.js +0 -58
- package/dist/handler-xEpHnzkZ.js.map +0 -1
- package/dist/index-Bxz6YdiB.js +0 -20
- package/dist/index-Bxz6YdiB.js.map +0 -1
- package/dist/index-C_uBu_fP.js +0 -20
- package/dist/index-C_uBu_fP.js.map +0 -1
- package/dist/middleware-5Zwy7HRL.js +0 -25
- package/dist/middleware-5Zwy7HRL.js.map +0 -1
- package/dist/schemas-Dn3gHDGz.js +0 -3706
- package/dist/schemas-Dn3gHDGz.js.map +0 -1
package/dist/handler-DfEsSB4T.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { models } from "@rpcbase/db";
|
|
2
|
-
import { verifyPasswordFromStorage } from "@rpcbase/server";
|
|
3
|
-
import { R as Route, r as requestSchema } from "./index-Bxz6YdiB.js";
|
|
4
|
-
const signIn = async (payload, ctx) => {
|
|
5
|
-
const User = await models.getGlobal("RBUser", ctx);
|
|
6
|
-
const parsed = requestSchema.safeParse(payload);
|
|
7
|
-
if (!parsed.success) {
|
|
8
|
-
ctx.res.status(400);
|
|
9
|
-
return {
|
|
10
|
-
success: false,
|
|
11
|
-
error: "invalid_payload"
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
const {
|
|
15
|
-
email,
|
|
16
|
-
password
|
|
17
|
-
} = parsed.data;
|
|
18
|
-
const user = await User.findOne({
|
|
19
|
-
email
|
|
20
|
-
}, {
|
|
21
|
-
password: 1,
|
|
22
|
-
tenants: 1,
|
|
23
|
-
tenantRoles: 1
|
|
24
|
-
});
|
|
25
|
-
if (!user?.password) {
|
|
26
|
-
ctx.res.status(401);
|
|
27
|
-
return {
|
|
28
|
-
success: false,
|
|
29
|
-
error: "invalid_credentials"
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
const stored = String(user.password);
|
|
33
|
-
const passwordMatches = await verifyPasswordFromStorage(password, stored);
|
|
34
|
-
if (!passwordMatches) {
|
|
35
|
-
if (!stored.startsWith("$scrypt$")) {
|
|
36
|
-
console.warn("auth::sign-in invalid stored password format", user._id.toString());
|
|
37
|
-
}
|
|
38
|
-
ctx.res.status(401);
|
|
39
|
-
return {
|
|
40
|
-
success: false,
|
|
41
|
-
error: "invalid_credentials"
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
const tenantId = user.tenants?.[0]?.toString?.() || "00000000";
|
|
45
|
-
const signedInTenants = (user.tenants || []).map(String);
|
|
46
|
-
const tenantRolesMap = user.get("tenantRoles");
|
|
47
|
-
const tenantRoles = tenantRolesMap ? Object.fromEntries(tenantRolesMap.entries()) : void 0;
|
|
48
|
-
if (!ctx.req.session) {
|
|
49
|
-
ctx.res.status(500);
|
|
50
|
-
return {
|
|
51
|
-
success: false,
|
|
52
|
-
error: "session_unavailable"
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
ctx.req.session.user = {
|
|
56
|
-
id: user._id.toString(),
|
|
57
|
-
currentTenantId: tenantId,
|
|
58
|
-
signedInTenants: signedInTenants.length ? signedInTenants : [tenantId],
|
|
59
|
-
isEntryGateAuthorized: true,
|
|
60
|
-
tenantRoles
|
|
61
|
-
};
|
|
62
|
-
return {
|
|
63
|
-
success: true,
|
|
64
|
-
userId: user._id.toString(),
|
|
65
|
-
tenantId
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
const handler = (api) => {
|
|
69
|
-
api.post(Route, signIn);
|
|
70
|
-
};
|
|
71
|
-
export {
|
|
72
|
-
handler as default
|
|
73
|
-
};
|
|
74
|
-
//# sourceMappingURL=handler-DfEsSB4T.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler-DfEsSB4T.js","sources":["../src/api/sign-in/handler.ts"],"sourcesContent":["import { Api, ApiHandler, Ctx } from \"@rpcbase/api\"\nimport { models } from \"@rpcbase/db\"\nimport { verifyPasswordFromStorage } from \"@rpcbase/server\"\n\nimport type { AuthSessionUser } from \"../../types\"\n\nimport * as SignIn from \"./index\"\n\n\nconst signIn: ApiHandler<SignIn.RequestPayload, SignIn.ResponsePayload, AuthSessionUser> = async(\n payload,\n ctx: Ctx<AuthSessionUser>\n): Promise<SignIn.ResponsePayload> => {\n const User = await models.getGlobal(\"RBUser\", ctx)\n\n const parsed = SignIn.requestSchema.safeParse(payload)\n\n if (!parsed.success) {\n ctx.res.status(400)\n return { success: false, error: \"invalid_payload\" }\n }\n\n const { email, password } = parsed.data\n\n const user = await User.findOne({ email }, { password: 1, tenants: 1, tenantRoles: 1 })\n\n if (!user?.password) {\n ctx.res.status(401)\n return { success: false, error: \"invalid_credentials\" }\n }\n\n const stored = String(user.password)\n const passwordMatches = await verifyPasswordFromStorage(password, stored)\n\n if (!passwordMatches) {\n if (!stored.startsWith(\"$scrypt$\")) {\n console.warn(\"auth::sign-in invalid stored password format\", user._id.toString())\n }\n ctx.res.status(401)\n return { success: false, error: \"invalid_credentials\" }\n }\n\n const tenantId = user.tenants?.[0]?.toString?.() || \"00000000\"\n const signedInTenants = (user.tenants || []).map(String)\n const tenantRolesMap = user.get(\"tenantRoles\") as Map<string, string[]> | undefined\n const tenantRoles = tenantRolesMap ? Object.fromEntries(tenantRolesMap.entries()) : undefined\n\n if (!ctx.req.session) {\n ctx.res.status(500)\n return { success: false, error: \"session_unavailable\" }\n }\n\n ctx.req.session.user = {\n id: user._id.toString(),\n currentTenantId: tenantId,\n signedInTenants: signedInTenants.length ? signedInTenants : [tenantId],\n isEntryGateAuthorized: true,\n tenantRoles,\n }\n\n return { success: true, userId: user._id.toString(), tenantId }\n}\n\nexport default (api: Api<AuthSessionUser>) => {\n api.post(SignIn.Route, signIn)\n}\n"],"names":["signIn","payload","ctx","User","models","getGlobal","parsed","SignIn","safeParse","success","res","status","error","email","password","data","user","findOne","tenants","tenantRoles","stored","String","passwordMatches","verifyPasswordFromStorage","startsWith","console","warn","_id","toString","tenantId","signedInTenants","map","tenantRolesMap","get","Object","fromEntries","entries","undefined","req","session","id","currentTenantId","length","isEntryGateAuthorized","userId","api","post"],"mappings":";;;AASA,MAAMA,SAAqF,OACzFC,SACAC,QACoC;AACpC,QAAMC,OAAO,MAAMC,OAAOC,UAAU,UAAUH,GAAG;AAEjD,QAAMI,SAASC,cAAqBC,UAAUP,OAAO;AAErD,MAAI,CAACK,OAAOG,SAAS;AACnBP,QAAIQ,IAAIC,OAAO,GAAG;AAClB,WAAO;AAAA,MAAEF,SAAS;AAAA,MAAOG,OAAO;AAAA,IAAA;AAAA,EAClC;AAEA,QAAM;AAAA,IAAEC;AAAAA,IAAOC;AAAAA,EAAAA,IAAaR,OAAOS;AAEnC,QAAMC,OAAO,MAAMb,KAAKc,QAAQ;AAAA,IAAEJ;AAAAA,EAAAA,GAAS;AAAA,IAAEC,UAAU;AAAA,IAAGI,SAAS;AAAA,IAAGC,aAAa;AAAA,EAAA,CAAG;AAEtF,MAAI,CAACH,MAAMF,UAAU;AACnBZ,QAAIQ,IAAIC,OAAO,GAAG;AAClB,WAAO;AAAA,MAAEF,SAAS;AAAA,MAAOG,OAAO;AAAA,IAAA;AAAA,EAClC;AAEA,QAAMQ,SAASC,OAAOL,KAAKF,QAAQ;AACnC,QAAMQ,kBAAkB,MAAMC,0BAA0BT,UAAUM,MAAM;AAExE,MAAI,CAACE,iBAAiB;AACpB,QAAI,CAACF,OAAOI,WAAW,UAAU,GAAG;AAClCC,cAAQC,KAAK,gDAAgDV,KAAKW,IAAIC,UAAU;AAAA,IAClF;AACA1B,QAAIQ,IAAIC,OAAO,GAAG;AAClB,WAAO;AAAA,MAAEF,SAAS;AAAA,MAAOG,OAAO;AAAA,IAAA;AAAA,EAClC;AAEA,QAAMiB,WAAWb,KAAKE,UAAU,CAAC,GAAGU,gBAAgB;AACpD,QAAME,mBAAmBd,KAAKE,WAAW,CAAA,GAAIa,IAAIV,MAAM;AACvD,QAAMW,iBAAiBhB,KAAKiB,IAAI,aAAa;AAC7C,QAAMd,cAAca,iBAAiBE,OAAOC,YAAYH,eAAeI,QAAAA,CAAS,IAAIC;AAEpF,MAAI,CAACnC,IAAIoC,IAAIC,SAAS;AACpBrC,QAAIQ,IAAIC,OAAO,GAAG;AAClB,WAAO;AAAA,MAAEF,SAAS;AAAA,MAAOG,OAAO;AAAA,IAAA;AAAA,EAClC;AAEAV,MAAIoC,IAAIC,QAAQvB,OAAO;AAAA,IACrBwB,IAAIxB,KAAKW,IAAIC,SAAAA;AAAAA,IACba,iBAAiBZ;AAAAA,IACjBC,iBAAiBA,gBAAgBY,SAASZ,kBAAkB,CAACD,QAAQ;AAAA,IACrEc,uBAAuB;AAAA,IACvBxB;AAAAA,EAAAA;AAGF,SAAO;AAAA,IAAEV,SAAS;AAAA,IAAMmC,QAAQ5B,KAAKW,IAAIC,SAAAA;AAAAA,IAAYC;AAAAA,EAAAA;AACvD;AAEA,MAAA,UAAe,CAACgB,QAA8B;AAC5CA,MAAIC,KAAKvC,OAAcP,MAAM;AAC/B;"}
|
package/dist/handler-xEpHnzkZ.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { models } from "@rpcbase/db";
|
|
2
|
-
import { r as restrictSessionMiddleware } from "./middleware-5Zwy7HRL.js";
|
|
3
|
-
import { o as object, s as string, a as array } from "./schemas-Dn3gHDGz.js";
|
|
4
|
-
const Route = "/api/rb/auth/me";
|
|
5
|
-
object({});
|
|
6
|
-
object({
|
|
7
|
-
id: string().optional(),
|
|
8
|
-
email: string().email().optional(),
|
|
9
|
-
phone: string().optional(),
|
|
10
|
-
name: string().optional(),
|
|
11
|
-
tenants: array(string()).default([]),
|
|
12
|
-
currentTenantId: string().optional(),
|
|
13
|
-
signedInTenants: array(string()).default([]).optional(),
|
|
14
|
-
error: string().optional()
|
|
15
|
-
});
|
|
16
|
-
const me = async (_payload, ctx) => {
|
|
17
|
-
const sessionUser = ctx.req.session?.user;
|
|
18
|
-
if (!sessionUser?.id) {
|
|
19
|
-
ctx.res.status(401);
|
|
20
|
-
return {
|
|
21
|
-
id: "",
|
|
22
|
-
currentTenantId: "",
|
|
23
|
-
signedInTenants: [],
|
|
24
|
-
tenants: [],
|
|
25
|
-
error: "not_authenticated"
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
const User = await models.getGlobal("RBUser", ctx);
|
|
29
|
-
const user = await User.findById(sessionUser.id);
|
|
30
|
-
if (!user) {
|
|
31
|
-
ctx.res.status(404);
|
|
32
|
-
return {
|
|
33
|
-
id: "",
|
|
34
|
-
currentTenantId: "",
|
|
35
|
-
signedInTenants: [],
|
|
36
|
-
tenants: [],
|
|
37
|
-
error: "user_not_found"
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
const tenantId = sessionUser.currentTenantId || user.tenants?.[0]?.toString?.() || "00000000";
|
|
41
|
-
return {
|
|
42
|
-
id: user._id.toString(),
|
|
43
|
-
email: user.email,
|
|
44
|
-
phone: user.get("phone"),
|
|
45
|
-
name: user.name,
|
|
46
|
-
tenants: (user.tenants || []).map(String),
|
|
47
|
-
currentTenantId: tenantId,
|
|
48
|
-
signedInTenants: sessionUser.signedInTenants || []
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
const handler = (api) => {
|
|
52
|
-
api.use(Route, restrictSessionMiddleware);
|
|
53
|
-
api.get(Route, me);
|
|
54
|
-
};
|
|
55
|
-
export {
|
|
56
|
-
handler as default
|
|
57
|
-
};
|
|
58
|
-
//# sourceMappingURL=handler-xEpHnzkZ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler-xEpHnzkZ.js","sources":["../src/api/me/index.ts","../src/api/me/handler.ts"],"sourcesContent":["import { z } from \"zod\"\n\n\nexport const Route = \"/api/rb/auth/me\"\n\nexport const requestSchema = z.object({})\nexport type RequestPayload = z.infer<typeof requestSchema>\n\nexport const responseSchema = z.object({\n id: z.string().optional(),\n email: z.string().email().optional(),\n phone: z.string().optional(),\n name: z.string().optional(),\n tenants: z.array(z.string()).default([]),\n currentTenantId: z.string().optional(),\n signedInTenants: z.array(z.string()).default([]).optional(),\n error: z.string().optional(),\n})\n\nexport type ResponsePayload = z.infer<typeof responseSchema>\n","import { Api, ApiHandler, Ctx } from \"@rpcbase/api\"\nimport { models } from \"@rpcbase/db\"\n\nimport type { AuthSessionUser } from \"../../types\"\nimport { restrictSessionMiddleware } from \"../../middleware\"\n\nimport * as Me from \"./index\"\n\n\nconst me: ApiHandler<Me.RequestPayload, Me.ResponsePayload, AuthSessionUser> = async(\n _payload: Me.RequestPayload,\n ctx: Ctx<AuthSessionUser>\n): Promise<Me.ResponsePayload> => {\n const sessionUser = ctx.req.session?.user\n\n if (!sessionUser?.id) {\n ctx.res.status(401)\n return {\n id: \"\",\n currentTenantId: \"\",\n signedInTenants: [],\n tenants: [],\n error: \"not_authenticated\",\n } as unknown as Me.ResponsePayload\n }\n\n const User = await models.getGlobal(\"RBUser\", ctx)\n const user = await User.findById(sessionUser.id)\n\n if (!user) {\n ctx.res.status(404)\n return {\n id: \"\",\n currentTenantId: \"\",\n signedInTenants: [],\n tenants: [],\n error: \"user_not_found\",\n } as unknown as Me.ResponsePayload\n }\n\n const tenantId = sessionUser.currentTenantId || user.tenants?.[0]?.toString?.() || \"00000000\"\n\n return {\n id: user._id.toString(),\n email: user.email,\n phone: user.get(\"phone\") as string | undefined,\n name: user.name,\n tenants: (user.tenants || []).map(String),\n currentTenantId: tenantId,\n signedInTenants: sessionUser.signedInTenants || [],\n }\n}\n\nexport default (api: Api<AuthSessionUser>) => {\n api.use(Me.Route, restrictSessionMiddleware)\n api.get(Me.Route, me)\n}\n"],"names":["Route","z","id","string","optional","email","phone","name","tenants","default","currentTenantId","signedInTenants","error","me","_payload","ctx","sessionUser","req","session","user","res","status","User","models","getGlobal","findById","tenantId","toString","_id","get","map","String","api","use","Me","restrictSessionMiddleware"],"mappings":";;;AAGO,MAAMA,QAAQ;AAEQC,OAAS,CAAA,CAAE;AAGVA,OAAS;AAAA,EACrCC,IAAID,OAAEE,EAASC,SAAAA;AAAAA,EACfC,OAAOJ,OAAEE,EAASE,MAAAA,EAAQD,SAAAA;AAAAA,EAC1BE,OAAOL,OAAEE,EAASC,SAAAA;AAAAA,EAClBG,MAAMN,OAAEE,EAASC,SAAAA;AAAAA,EACjBI,SAASP,MAAQA,QAAU,EAAEQ,QAAQ,CAAA,CAAE;AAAA,EACvCC,iBAAiBT,OAAEE,EAASC,SAAAA;AAAAA,EAC5BO,iBAAiBV,MAAQA,OAAEE,CAAQ,EAAEM,QAAQ,CAAA,CAAE,EAAEL,SAAAA;AAAAA,EACjDQ,OAAOX,OAAEE,EAASC,SAAAA;AACpB,CAAC;ACRD,MAAMS,KAAyE,OAC7EC,UACAC,QACgC;AAChC,QAAMC,cAAcD,IAAIE,IAAIC,SAASC;AAErC,MAAI,CAACH,aAAad,IAAI;AACpBa,QAAIK,IAAIC,OAAO,GAAG;AAClB,WAAO;AAAA,MACLnB,IAAI;AAAA,MACJQ,iBAAiB;AAAA,MACjBC,iBAAiB,CAAA;AAAA,MACjBH,SAAS,CAAA;AAAA,MACTI,OAAO;AAAA,IAAA;AAAA,EAEX;AAEA,QAAMU,OAAO,MAAMC,OAAOC,UAAU,UAAUT,GAAG;AACjD,QAAMI,OAAO,MAAMG,KAAKG,SAAST,YAAYd,EAAE;AAE/C,MAAI,CAACiB,MAAM;AACTJ,QAAIK,IAAIC,OAAO,GAAG;AAClB,WAAO;AAAA,MACLnB,IAAI;AAAA,MACJQ,iBAAiB;AAAA,MACjBC,iBAAiB,CAAA;AAAA,MACjBH,SAAS,CAAA;AAAA,MACTI,OAAO;AAAA,IAAA;AAAA,EAEX;AAEA,QAAMc,WAAWV,YAAYN,mBAAmBS,KAAKX,UAAU,CAAC,GAAGmB,gBAAgB;AAEnF,SAAO;AAAA,IACLzB,IAAIiB,KAAKS,IAAID,SAAAA;AAAAA,IACbtB,OAAOc,KAAKd;AAAAA,IACZC,OAAOa,KAAKU,IAAI,OAAO;AAAA,IACvBtB,MAAMY,KAAKZ;AAAAA,IACXC,UAAUW,KAAKX,WAAW,CAAA,GAAIsB,IAAIC,MAAM;AAAA,IACxCrB,iBAAiBgB;AAAAA,IACjBf,iBAAiBK,YAAYL,mBAAmB,CAAA;AAAA,EAAA;AAEpD;AAEA,MAAA,UAAe,CAACqB,QAA8B;AAC5CA,MAAIC,IAAIC,OAAUC,yBAAyB;AAC3CH,MAAIH,IAAIK,OAAUrB,EAAE;AACtB;"}
|
package/dist/index-Bxz6YdiB.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { o as object, b as boolean, s as string } from "./schemas-Dn3gHDGz.js";
|
|
2
|
-
const Route = "/api/rb/auth/sign-in";
|
|
3
|
-
const requestSchema = object({
|
|
4
|
-
email: string().nonempty("Email is required").email("Please enter a valid email address"),
|
|
5
|
-
password: string().min(1, {
|
|
6
|
-
message: "Password is required"
|
|
7
|
-
}),
|
|
8
|
-
rememberMe: boolean().default(true)
|
|
9
|
-
});
|
|
10
|
-
object({
|
|
11
|
-
success: boolean(),
|
|
12
|
-
error: string().optional(),
|
|
13
|
-
userId: string().optional(),
|
|
14
|
-
tenantId: string().optional()
|
|
15
|
-
});
|
|
16
|
-
export {
|
|
17
|
-
Route as R,
|
|
18
|
-
requestSchema as r
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=index-Bxz6YdiB.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-Bxz6YdiB.js","sources":["../src/api/sign-in/index.ts"],"sourcesContent":["import { z } from \"zod\"\n\n\nexport const Route = \"/api/rb/auth/sign-in\"\n\nexport const requestSchema = z.object({\n email: z\n .string()\n .nonempty(\"Email is required\")\n .email(\"Please enter a valid email address\"),\n password: z.string().min(1, { message: \"Password is required\" }),\n rememberMe: z.boolean().default(true),\n})\n\nexport type RequestPayload = z.infer<typeof requestSchema>\n\nexport const responseSchema = z.object({\n success: z.boolean(),\n error: z.string().optional(),\n userId: z.string().optional(),\n tenantId: z.string().optional(),\n})\n\nexport type ResponsePayload = z.infer<typeof responseSchema>\n"],"names":["Route","requestSchema","z","email","string","nonempty","password","min","message","rememberMe","default","success","boolean","error","optional","userId","tenantId"],"mappings":";AAGO,MAAMA,QAAQ;AAEd,MAAMC,gBAAgBC,OAAS;AAAA,EACpCC,OAAOD,OACJE,EACAC,SAAS,mBAAmB,EAC5BF,MAAM,oCAAoC;AAAA,EAC7CG,UAAUJ,OAAEE,EAASG,IAAI,GAAG;AAAA,IAAEC,SAAS;AAAA,EAAA,CAAwB;AAAA,EAC/DC,YAAYP,UAAYQ,QAAQ,IAAI;AACtC,CAAC;AAI6BR,OAAS;AAAA,EACrCS,SAAST,QAAEU;AAAAA,EACXC,OAAOX,OAAEE,EAASU,SAAAA;AAAAA,EAClBC,QAAQb,OAAEE,EAASU,SAAAA;AAAAA,EACnBE,UAAUd,OAAEE,EAASU,SAAAA;AACvB,CAAC;"}
|
package/dist/index-C_uBu_fP.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { o as object, b as boolean, s as string } from "./schemas-Dn3gHDGz.js";
|
|
2
|
-
const Route = "/api/rb/auth/sign-up";
|
|
3
|
-
const requestSchema = object({
|
|
4
|
-
email: string().nonempty("Email is required").email("Please enter a valid email address"),
|
|
5
|
-
password: string().min(8, {
|
|
6
|
-
message: "Password must be at least 8 characters long."
|
|
7
|
-
}),
|
|
8
|
-
rememberMe: boolean().default(true)
|
|
9
|
-
});
|
|
10
|
-
object({
|
|
11
|
-
success: boolean(),
|
|
12
|
-
error: string().optional(),
|
|
13
|
-
userId: string().optional(),
|
|
14
|
-
tenantId: string().optional()
|
|
15
|
-
});
|
|
16
|
-
export {
|
|
17
|
-
Route as R,
|
|
18
|
-
requestSchema as r
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=index-C_uBu_fP.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-C_uBu_fP.js","sources":["../src/api/sign-up/index.ts"],"sourcesContent":["import { z } from \"zod\"\n\n\nexport const Route = \"/api/rb/auth/sign-up\"\n\nexport const requestSchema = z\n .object({\n email: z\n .string()\n .nonempty(\"Email is required\")\n .email(\"Please enter a valid email address\"),\n password: z.string().min(8, { message: \"Password must be at least 8 characters long.\" }),\n rememberMe: z.boolean().default(true),\n })\n\nexport type RequestPayload = z.infer<typeof requestSchema>\n\nexport const responseSchema = z.object({\n success: z.boolean(),\n error: z.string().optional(),\n userId: z.string().optional(),\n tenantId: z.string().optional(),\n})\n\nexport type ResponsePayload = z.infer<typeof responseSchema>\n"],"names":["Route","requestSchema","z","email","string","nonempty","password","min","message","rememberMe","default","success","boolean","error","optional","userId","tenantId"],"mappings":";AAGO,MAAMA,QAAQ;AAEd,MAAMC,gBAAgBC,OACnB;AAAA,EACNC,OAAOD,OACJE,EACAC,SAAS,mBAAmB,EAC5BF,MAAM,oCAAoC;AAAA,EAC7CG,UAAUJ,OAAEE,EAASG,IAAI,GAAG;AAAA,IAAEC,SAAS;AAAA,EAAA,CAAgD;AAAA,EACvFC,YAAYP,UAAYQ,QAAQ,IAAI;AACtC,CAAC;AAI2BR,OAAS;AAAA,EACrCS,SAAST,QAAEU;AAAAA,EACXC,OAAOX,OAAEE,EAASU,SAAAA;AAAAA,EAClBC,QAAQb,OAAEE,EAASU,SAAAA;AAAAA,EACnBE,UAAUd,OAAEE,EAASU,SAAAA;AACvB,CAAC;"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
const isAuthenticated = (req) => {
|
|
2
|
-
const sessionUser = req.session?.user;
|
|
3
|
-
return Boolean(sessionUser?.id);
|
|
4
|
-
};
|
|
5
|
-
const restrictSessionMiddleware = (req, res, next) => {
|
|
6
|
-
if (isAuthenticated(req)) {
|
|
7
|
-
return next();
|
|
8
|
-
}
|
|
9
|
-
res.status(401).json({
|
|
10
|
-
error: "unauthorized"
|
|
11
|
-
});
|
|
12
|
-
};
|
|
13
|
-
const requireSession = restrictSessionMiddleware;
|
|
14
|
-
const redirectAuthMiddleware = (req, res, next) => {
|
|
15
|
-
if (req.path.startsWith("/app") && !isAuthenticated(req)) {
|
|
16
|
-
return res.redirect("/auth/sign-in");
|
|
17
|
-
}
|
|
18
|
-
next();
|
|
19
|
-
};
|
|
20
|
-
export {
|
|
21
|
-
requireSession as a,
|
|
22
|
-
redirectAuthMiddleware as b,
|
|
23
|
-
restrictSessionMiddleware as r
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=middleware-5Zwy7HRL.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-5Zwy7HRL.js","sources":["../src/middleware.ts"],"sourcesContent":["import type { Middleware } from \"@rpcbase/api\"\n\nimport type { AuthSessionUser } from \"./types\"\n\n\nconst isAuthenticated = (req: Parameters<Middleware>[0]): req is Parameters<Middleware<AuthSessionUser>>[0] => {\n const sessionUser = req.session?.user as { id?: unknown } | undefined\n return Boolean(sessionUser?.id)\n}\n\nexport const restrictSessionMiddleware: Middleware<AuthSessionUser> = (req, res, next) => {\n if (isAuthenticated(req)) {\n return next()\n }\n\n res.status(401).json({ error: \"unauthorized\" })\n}\n\nexport const requireSession = restrictSessionMiddleware\n\nexport const redirectAuthMiddleware: Middleware<AuthSessionUser> = (req, res, next) => {\n if (req.path.startsWith(\"/app\") && !isAuthenticated(req)) {\n return res.redirect(\"/auth/sign-in\")\n }\n\n next()\n}\n"],"names":["isAuthenticated","req","sessionUser","session","user","Boolean","id","restrictSessionMiddleware","res","next","status","json","error","requireSession","redirectAuthMiddleware","path","startsWith","redirect"],"mappings":"AAKA,MAAMA,kBAAkBA,CAACC,QAAsF;AAC7G,QAAMC,cAAcD,IAAIE,SAASC;AACjC,SAAOC,QAAQH,aAAaI,EAAE;AAChC;AAEO,MAAMC,4BAAyDA,CAACN,KAAKO,KAAKC,SAAS;AACxF,MAAIT,gBAAgBC,GAAG,GAAG;AACxB,WAAOQ,KAAAA;AAAAA,EACT;AAEAD,MAAIE,OAAO,GAAG,EAAEC,KAAK;AAAA,IAAEC,OAAO;AAAA,EAAA,CAAgB;AAChD;AAEO,MAAMC,iBAAiBN;AAEvB,MAAMO,yBAAsDA,CAACb,KAAKO,KAAKC,SAAS;AACrF,MAAIR,IAAIc,KAAKC,WAAW,MAAM,KAAK,CAAChB,gBAAgBC,GAAG,GAAG;AACxD,WAAOO,IAAIS,SAAS,eAAe;AAAA,EACrC;AAEAR,OAAAA;AACF;"}
|