prostgles-server 4.2.146 → 4.2.148
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/Auth/AuthTypes.d.ts +10 -1
- package/dist/Auth/AuthTypes.d.ts.map +1 -1
- package/dist/Auth/setAuthProviders.d.ts.map +1 -1
- package/dist/Auth/setAuthProviders.js +24 -11
- package/dist/Auth/setAuthProviders.js.map +1 -1
- package/lib/Auth/AuthTypes.ts +6 -1
- package/lib/Auth/setAuthProviders.ts +31 -13
- package/package.json +1 -1
- package/tests/server/index.ts +4 -1
- package/tests/server/package-lock.json +1 -1
package/dist/Auth/AuthTypes.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Express, NextFunction, Request, Response } from "express";
|
|
2
|
-
import { AnyObject, FieldFilter, UserLike } from "prostgles-types";
|
|
2
|
+
import { AnyObject, FieldFilter, IdentityProvider, UserLike } from "prostgles-types";
|
|
3
3
|
import { DB } from "../Prostgles";
|
|
4
4
|
import { DBOFullyTyped } from "../DBSchemaBuilder";
|
|
5
5
|
import { PRGLIOSocket } from "../DboBuilder/DboBuilderTypes";
|
|
@@ -103,6 +103,15 @@ export type AuthRegistrationConfig = RegistrationProviders & {
|
|
|
103
103
|
* Do something with the registered user
|
|
104
104
|
*/
|
|
105
105
|
onRegister: (data: RegistrationData) => void | Promise<any>;
|
|
106
|
+
/**
|
|
107
|
+
* Used to identify abuse
|
|
108
|
+
*/
|
|
109
|
+
onProviderLoginFail: (data: {
|
|
110
|
+
provider: IdentityProvider;
|
|
111
|
+
error: any;
|
|
112
|
+
req: ExpressReq;
|
|
113
|
+
res: ExpressRes;
|
|
114
|
+
}) => void | Promise<void>;
|
|
106
115
|
};
|
|
107
116
|
export type SessionUser<ServerUser extends UserLike = UserLike, ClientUser extends UserLike = UserLike> = {
|
|
108
117
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthTypes.d.ts","sourceRoot":"","sources":["../../lib/Auth/AuthTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"AuthTypes.d.ts","sourceRoot":"","sources":["../../lib/Auth/AuthTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setAuthProviders.d.ts","sourceRoot":"","sources":["../../lib/Auth/setAuthProviders.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAOnC,OAAO,EAAE,gBAAgB,EAA+B,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAA0B,WAAW,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAKzC,eAAO,MAAM,4BAA4B,QAAS,SAAS,WAAW,cAAc,QAAQ,MAAM,SAKjG,CAAA;AAED,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,WAAW,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"setAuthProviders.d.ts","sourceRoot":"","sources":["../../lib/Auth/setAuthProviders.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAOnC,OAAO,EAAE,gBAAgB,EAA+B,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAA0B,WAAW,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAKzC,eAAO,MAAM,4BAA4B,QAAS,SAAS,WAAW,cAAc,QAAQ,MAAM,SAKjG,CAAA;AAED,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,WAAW,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,QAkG3G;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC,GAAG,SAAS,CAoBzF"}
|
|
@@ -21,7 +21,7 @@ exports.upsertNamedExpressMiddleware = upsertNamedExpressMiddleware;
|
|
|
21
21
|
function setAuthProviders({ registrations, app }) {
|
|
22
22
|
if (!registrations)
|
|
23
23
|
return;
|
|
24
|
-
const { email, onRegister, websiteUrl, ...providers } = registrations;
|
|
24
|
+
const { email, onRegister, onProviderLoginFail, websiteUrl, ...providers } = registrations;
|
|
25
25
|
if (email) {
|
|
26
26
|
app.post(AuthHandler_1.AUTH_ROUTES_AND_PARAMS.emailSignup, async (req, res) => {
|
|
27
27
|
const { username, password } = req.body;
|
|
@@ -69,15 +69,28 @@ function setAuthProviders({ registrations, app }) {
|
|
|
69
69
|
return done(null, profile, { accessToken, refreshToken, profile });
|
|
70
70
|
}));
|
|
71
71
|
app.get(`${AuthHandler_1.AUTH_ROUTES_AND_PARAMS.loginWithProvider}/${providerName}`, passport.authenticate(providerName, authOpts ?? {}));
|
|
72
|
-
app.get(callbackPath,
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
})
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
72
|
+
app.get(callbackPath, (req, res) => {
|
|
73
|
+
passport.authenticate(providerName, {
|
|
74
|
+
session: false,
|
|
75
|
+
failureRedirect: "/login",
|
|
76
|
+
failWithError: true,
|
|
77
|
+
}, async (error, profile, authInfo) => {
|
|
78
|
+
if (error) {
|
|
79
|
+
await onProviderLoginFail({ provider: providerName, error, req, res });
|
|
80
|
+
res.status(500).json({
|
|
81
|
+
error: "Failed to login with provider",
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
this.loginThrottledAndSetCookie(req, res, { type: "provider", provider: providerName, ...authInfo })
|
|
86
|
+
.then(() => {
|
|
87
|
+
res.redirect("/");
|
|
88
|
+
})
|
|
89
|
+
.catch((e) => {
|
|
90
|
+
res.status(500).json((0, dboBuilderUtils_1.getErrorAsObject)(e));
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
})(req, res);
|
|
81
94
|
});
|
|
82
95
|
});
|
|
83
96
|
}
|
|
@@ -88,7 +101,7 @@ function getProviders() {
|
|
|
88
101
|
return undefined;
|
|
89
102
|
const {
|
|
90
103
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
91
|
-
email, websiteUrl, onRegister, ...providers } = registrations;
|
|
104
|
+
email, websiteUrl, onRegister, onProviderLoginFail, ...providers } = registrations;
|
|
92
105
|
if ((0, prostgles_types_1.isEmpty)(providers))
|
|
93
106
|
return undefined;
|
|
94
107
|
const result = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setAuthProviders.js","sourceRoot":"","sources":["../../lib/Auth/setAuthProviders.ts"],"names":[],"mappings":";;;AACA,iDAAiD;AACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAA8B,CAAC;AAClE,qEAAqE;AACrE,uDAA8D;AAC9D,2DAAmE;AACnE,yDAAiE;AACjE,qDAAgF;AAChF,+CAAoE;AAGpE,4DAAsE;AACtE,mEAAiE;AAG1D,MAAM,4BAA4B,GAAG,CAAC,GAAc,EAAE,OAAuB,EAAE,IAAY,EAAE,EAAE;IACpG,MAAM,QAAQ,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5D,IAAA,sCAAwB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACpC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC,CAAA;AALY,QAAA,4BAA4B,gCAKxC;AAED,SAAgB,gBAAgB,CAAqB,EAAE,aAAa,EAAE,GAAG,EAAmC;IAC1G,IAAG,CAAC,aAAa;QAAE,OAAO;IAC1B,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,SAAS,EAAE,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"setAuthProviders.js","sourceRoot":"","sources":["../../lib/Auth/setAuthProviders.ts"],"names":[],"mappings":"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"}
|
package/lib/Auth/AuthTypes.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Express, NextFunction, Request, Response } from "express";
|
|
2
|
-
import { AnyObject, FieldFilter, UserLike } from "prostgles-types";
|
|
2
|
+
import { AnyObject, FieldFilter, IdentityProvider, UserLike } from "prostgles-types";
|
|
3
3
|
import { DB } from "../Prostgles";
|
|
4
4
|
import { DBOFullyTyped } from "../DBSchemaBuilder";
|
|
5
5
|
import { PRGLIOSocket } from "../DboBuilder/DboBuilderTypes";
|
|
@@ -119,6 +119,11 @@ export type AuthRegistrationConfig = RegistrationProviders & {
|
|
|
119
119
|
* Do something with the registered user
|
|
120
120
|
*/
|
|
121
121
|
onRegister: (data: RegistrationData) => void | Promise<any>;
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Used to identify abuse
|
|
125
|
+
*/
|
|
126
|
+
onProviderLoginFail: (data: { provider: IdentityProvider; error: any, req: ExpressReq, res: ExpressRes}) => void | Promise<void>;
|
|
122
127
|
};
|
|
123
128
|
|
|
124
129
|
export type SessionUser<ServerUser extends UserLike = UserLike, ClientUser extends UserLike = UserLike> = {
|
|
@@ -22,7 +22,7 @@ export const upsertNamedExpressMiddleware = (app: e.Express, handler: RequestHan
|
|
|
22
22
|
|
|
23
23
|
export function setAuthProviders (this: AuthHandler, { registrations, app }: Required<Auth>["expressConfig"]) {
|
|
24
24
|
if(!registrations) return;
|
|
25
|
-
const { email, onRegister, websiteUrl, ...providers } = registrations;
|
|
25
|
+
const { email, onRegister, onProviderLoginFail, websiteUrl, ...providers } = registrations;
|
|
26
26
|
if(email){
|
|
27
27
|
app.post(AUTH_ROUTES_AND_PARAMS.emailSignup, async (req, res) => {
|
|
28
28
|
const { username, password } = req.body;
|
|
@@ -86,19 +86,37 @@ export function setAuthProviders (this: AuthHandler, { registrations, app }: Req
|
|
|
86
86
|
passport.authenticate(providerName, authOpts ?? {})
|
|
87
87
|
);
|
|
88
88
|
|
|
89
|
-
app.get(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
89
|
+
app.get(
|
|
90
|
+
callbackPath,
|
|
91
|
+
(req, res) => {
|
|
92
|
+
|
|
93
|
+
passport.authenticate(
|
|
94
|
+
providerName,
|
|
95
|
+
{
|
|
96
|
+
session: false,
|
|
97
|
+
failureRedirect: "/login",
|
|
98
|
+
failWithError: true,
|
|
99
|
+
},
|
|
100
|
+
async (error: any, profile: any, authInfo: any) => {
|
|
101
|
+
if(error){
|
|
102
|
+
await onProviderLoginFail({ provider: providerName, error, req, res });
|
|
103
|
+
res.status(500).json({
|
|
104
|
+
error: "Failed to login with provider",
|
|
105
|
+
});
|
|
106
|
+
} else {
|
|
107
|
+
this.loginThrottledAndSetCookie(req, res, { type: "provider", provider: providerName, ...authInfo })
|
|
108
|
+
.then(() => {
|
|
109
|
+
res.redirect("/");
|
|
110
|
+
})
|
|
111
|
+
.catch((e: any) => {
|
|
112
|
+
res.status(500).json(getErrorAsObject(e));
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
)(req, res);
|
|
100
117
|
}
|
|
101
118
|
);
|
|
119
|
+
|
|
102
120
|
});
|
|
103
121
|
}
|
|
104
122
|
|
|
@@ -107,7 +125,7 @@ export function getProviders(this: AuthHandler): AuthSocketSchema["providers"] |
|
|
|
107
125
|
if(!registrations) return undefined;
|
|
108
126
|
const {
|
|
109
127
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
110
|
-
email, websiteUrl, onRegister,
|
|
128
|
+
email, websiteUrl, onRegister, onProviderLoginFail,
|
|
111
129
|
...providers
|
|
112
130
|
} = registrations;
|
|
113
131
|
if(isEmpty(providers)) return undefined;
|
package/package.json
CHANGED
package/tests/server/index.ts
CHANGED
|
@@ -174,7 +174,9 @@ function dd(){
|
|
|
174
174
|
}
|
|
175
175
|
return undefined;
|
|
176
176
|
},
|
|
177
|
-
login: async (
|
|
177
|
+
login: async (loginData) => {
|
|
178
|
+
if(loginData.type !== "username") throw "Only username login is supported";
|
|
179
|
+
const { username, password } = loginData;
|
|
178
180
|
const u = users.find(u => u.username === username && u.password === password);
|
|
179
181
|
if(!u) throw "something went wrong: " + JSON.stringify({ username, password });
|
|
180
182
|
let s = sessions.find(s => s.user_id === u.id)
|
|
@@ -203,6 +205,7 @@ function dd(){
|
|
|
203
205
|
clientID: "GITHUB_CLIENT_ID",
|
|
204
206
|
clientSecret: "GITHUB"
|
|
205
207
|
},
|
|
208
|
+
onProviderLoginFail: console.error,
|
|
206
209
|
onRegister: console.log
|
|
207
210
|
},
|
|
208
211
|
}
|