@social-mail/social-mail-web-server 1.8.403 → 1.8.405
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/WebServer.d.ts +1 -0
- package/dist/WebServer.d.ts.map +1 -1
- package/dist/WebServer.js +3 -2
- package/dist/WebServer.js.map +1 -1
- package/dist/common/BaseDiskCache.d.ts +1 -0
- package/dist/common/BaseDiskCache.d.ts.map +1 -1
- package/dist/common/BaseDiskCache.js +4 -0
- package/dist/common/BaseDiskCache.js.map +1 -1
- package/dist/server/model/ReadOnlySocialMailContext.d.ts +1 -0
- package/dist/server/model/ReadOnlySocialMailContext.d.ts.map +1 -1
- package/dist/server/model/ReadOnlySocialMailContext.js +15 -12
- package/dist/server/model/ReadOnlySocialMailContext.js.map +1 -1
- package/dist/server/model/events/AppFileAccessEvents.d.ts +1 -1
- package/dist/server/model/events/AppFileAccessEvents.d.ts.map +1 -1
- package/dist/server/model/events/AppFileAccessEvents.js +6 -6
- package/dist/server/model/events/AppFileAccessEvents.js.map +1 -1
- package/dist/server/model/events/LoginSessionEvents.d.ts.map +1 -1
- package/dist/server/model/events/LoginSessionEvents.js +5 -11
- package/dist/server/model/events/LoginSessionEvents.js.map +1 -1
- package/dist/server/model/events/VerificationTokenEvents.d.ts.map +1 -1
- package/dist/server/model/events/VerificationTokenEvents.js +1 -3
- package/dist/server/model/events/VerificationTokenEvents.js.map +1 -1
- package/dist/server/services/AppKeyProvider.d.ts +2 -2
- package/dist/server/services/AppKeyProvider.d.ts.map +1 -1
- package/dist/server/services/AppKeyProvider.js +9 -7
- package/dist/server/services/AppKeyProvider.js.map +1 -1
- package/dist/server/services/CryptoService.d.ts +4 -2
- package/dist/server/services/CryptoService.d.ts.map +1 -1
- package/dist/server/services/CryptoService.js.map +1 -1
- package/dist/server/services/UserAuthorizationService.d.ts +25 -0
- package/dist/server/services/UserAuthorizationService.d.ts.map +1 -0
- package/dist/server/services/{UserInfoProvider.js → UserAuthorizationService.js} +79 -14
- package/dist/server/services/UserAuthorizationService.js.map +1 -0
- package/dist/server/services/encryption/TokenService.d.ts +6 -0
- package/dist/server/services/encryption/TokenService.d.ts.map +1 -0
- package/dist/server/services/encryption/TokenService.js +26 -0
- package/dist/server/services/encryption/TokenService.js.map +1 -0
- package/dist/server/services/message-events/MessagingService.d.ts +3 -0
- package/dist/server/services/message-events/MessagingService.d.ts.map +1 -1
- package/dist/server/services/message-events/MessagingService.js +1 -0
- package/dist/server/services/message-events/MessagingService.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/wwwroot/routes/callback/smtp/data/index.d.ts +1 -1
- package/dist/wwwroot/routes/callback/smtp/data/index.d.ts.map +1 -1
- package/dist/wwwroot/routes/callback/smtp/data/index.js +5 -5
- package/dist/wwwroot/routes/callback/smtp/data/index.js.map +1 -1
- package/dist/wwwroot/routes/callback/smtp/rcpt/index.d.ts +1 -1
- package/dist/wwwroot/routes/callback/smtp/rcpt/index.d.ts.map +1 -1
- package/dist/wwwroot/routes/callback/smtp/rcpt/index.js +5 -5
- package/dist/wwwroot/routes/callback/smtp/rcpt/index.js.map +1 -1
- package/dist/wwwroot/routes/social-mail/site/signup/post.d.ts.map +1 -1
- package/dist/wwwroot/routes/social-mail/site/signup/post.js +1 -3
- package/dist/wwwroot/routes/social-mail/site/signup/post.js.map +1 -1
- package/dist/wwwroot/routes/social-mail/user/signup/post.d.ts.map +1 -1
- package/dist/wwwroot/routes/social-mail/user/signup/post.js +1 -3
- package/dist/wwwroot/routes/social-mail/user/signup/post.js.map +1 -1
- package/package.json +5 -5
- package/src/WebServer.ts +4 -2
- package/src/common/BaseDiskCache.ts +5 -0
- package/src/server/model/ReadOnlySocialMailContext.ts +15 -15
- package/src/server/model/events/AppFileAccessEvents.ts +4 -4
- package/src/server/model/events/LoginSessionEvents.ts +5 -11
- package/src/server/model/events/VerificationTokenEvents.ts +1 -3
- package/src/server/services/AppKeyProvider.ts +9 -7
- package/src/server/services/CryptoService.ts +1 -2
- package/src/server/services/UserAuthorizationService.ts +111 -0
- package/src/server/services/encryption/TokenService.ts +17 -0
- package/src/server/services/message-events/MessagingService.ts +3 -0
- package/src/wwwroot/routes/callback/smtp/data/index.ts +4 -3
- package/src/wwwroot/routes/callback/smtp/rcpt/index.ts +3 -4
- package/src/wwwroot/routes/social-mail/site/signup/post.tsx +1 -3
- package/src/wwwroot/routes/social-mail/user/signup/post.tsx +1 -3
- package/dist/server/services/UserInfoProvider.d.ts +0 -17
- package/dist/server/services/UserInfoProvider.d.ts.map +0 -1
- package/dist/server/services/UserInfoProvider.js.map +0 -1
- package/src/server/services/UserInfoProvider.ts +0 -46
|
@@ -27,6 +27,8 @@ export default class MessagingService extends ServiceObject {
|
|
|
27
27
|
|
|
28
28
|
clearDnsCache: IMessageChannel;
|
|
29
29
|
|
|
30
|
+
removeUserLoginSessions: IMessageChannel<{ userID }>;
|
|
31
|
+
|
|
30
32
|
@Inject
|
|
31
33
|
private pgEvents: PgEvents;
|
|
32
34
|
|
|
@@ -34,6 +36,7 @@ export default class MessagingService extends ServiceObject {
|
|
|
34
36
|
this.channelRefresh = this.segment(`web-site-channel-host-clear-${globalEnv.serverID}`);
|
|
35
37
|
this.refreshDns = this.segment("refresh-dns");
|
|
36
38
|
this.restartDns = this.segment("restart-dns");
|
|
39
|
+
this.removeUserLoginSessions = this.segment(`remove-user-login-sessions-${globalEnv.serverID}`);
|
|
37
40
|
this.snapshotRefresh = this.segment(`snapshot-refresh-${globalEnv.serverID}`);
|
|
38
41
|
this.reputationCleared = this.segment(`reputation-cleared-${globalEnv.serverID}`);
|
|
39
42
|
this.certificateIssued = this.segment(`certificate-issued`);
|
|
@@ -4,20 +4,21 @@ import { SmtpStatusCodes } from "../../../../../server/smtp/client/SmtpStatusCod
|
|
|
4
4
|
import { createPublicKey } from "node:crypto";
|
|
5
5
|
import Content from "@entity-access/server-pages/dist/Content.js";
|
|
6
6
|
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
7
|
-
import TokenService from "@entity-access/server-pages/dist/services/TokenService.js";
|
|
8
7
|
import { Prepare } from "@entity-access/server-pages/dist/decorators/Prepare.js";
|
|
8
|
+
import TokenService from "../../../../../server/services/encryption/TokenService.js";
|
|
9
9
|
|
|
10
10
|
let publicKey: any;
|
|
11
11
|
|
|
12
12
|
@Prepare.parseForm
|
|
13
13
|
export default class extends Page {
|
|
14
14
|
|
|
15
|
-
@Inject
|
|
16
|
-
private tokenService: TokenService;
|
|
17
15
|
|
|
18
16
|
@Inject
|
|
19
17
|
private mailReceiverService: MailReceiverService;
|
|
20
18
|
|
|
19
|
+
@Inject
|
|
20
|
+
private tokenService: TokenService;
|
|
21
|
+
|
|
21
22
|
async run() {
|
|
22
23
|
|
|
23
24
|
publicKey ??= createPublicKey({
|
|
@@ -4,9 +4,9 @@ import { SmtpStatusCodes } from "../../../../../server/smtp/client/SmtpStatusCod
|
|
|
4
4
|
import { createPublicKey } from "node:crypto";
|
|
5
5
|
import Content from "@entity-access/server-pages/dist/Content.js";
|
|
6
6
|
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
7
|
-
import TokenService from "@entity-access/server-pages/dist/services/TokenService.js";
|
|
8
7
|
import { Prepare } from "@entity-access/server-pages/dist/decorators/Prepare.js";
|
|
9
8
|
import { globalEnv } from "../../../../../common/globalEnv.js";
|
|
9
|
+
import TokenService from "../../../../../server/services/encryption/TokenService.js";
|
|
10
10
|
|
|
11
11
|
let publicKey:any;
|
|
12
12
|
|
|
@@ -15,12 +15,11 @@ export default class extends Page {
|
|
|
15
15
|
|
|
16
16
|
maxUploadSize = 50*1024*1024;
|
|
17
17
|
|
|
18
|
-
@Inject
|
|
19
|
-
private tokenService: TokenService;
|
|
20
|
-
|
|
21
18
|
@Inject
|
|
22
19
|
private mailReceiverService: MailReceiverService;
|
|
23
20
|
|
|
21
|
+
@Inject
|
|
22
|
+
private tokenService: TokenService;
|
|
24
23
|
|
|
25
24
|
async run() {
|
|
26
25
|
|
|
@@ -237,10 +237,8 @@ export default class ExternalSignup extends Page {
|
|
|
237
237
|
|
|
238
238
|
await this.sessionUser.setAuthCookie({
|
|
239
239
|
userID: loginSession.userID,
|
|
240
|
-
|
|
240
|
+
sessionID: loginSession.sessionID,
|
|
241
241
|
expiry: expiry.asJSDate,
|
|
242
|
-
version: "1.1",
|
|
243
|
-
active: true
|
|
244
242
|
});
|
|
245
243
|
|
|
246
244
|
return this.json(model);
|
|
@@ -217,10 +217,8 @@ export default class extends Page {
|
|
|
217
217
|
});
|
|
218
218
|
await this.sessionUser.setAuthCookie({
|
|
219
219
|
userID: session.userID,
|
|
220
|
-
|
|
220
|
+
sessionID: session.sessionID,
|
|
221
221
|
expiry: session.expiry.asJSDate,
|
|
222
|
-
version: "1.1",
|
|
223
|
-
active: true
|
|
224
222
|
});
|
|
225
223
|
|
|
226
224
|
return this.json(model);
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { IAuthCookie } from "@entity-access/server-pages/dist/services/TokenService.js";
|
|
2
|
-
import USP from "@entity-access/server-pages/dist/services/UserSessionProvider.js";
|
|
3
|
-
export default class UserSessionProvider extends USP {
|
|
4
|
-
getUserSession({ userID, id: sessionID, expiry }: IAuthCookie): Promise<{
|
|
5
|
-
userID: number;
|
|
6
|
-
sessionID: number;
|
|
7
|
-
userName: string;
|
|
8
|
-
expiry: Date;
|
|
9
|
-
roles: string[];
|
|
10
|
-
fileAccessList: {
|
|
11
|
-
type: "create" | "read" | "write" | "delegate";
|
|
12
|
-
path: string;
|
|
13
|
-
}[];
|
|
14
|
-
invalid: boolean;
|
|
15
|
-
}>;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=UserInfoProvider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UserInfoProvider.d.ts","sourceRoot":"","sources":["../../../src/server/services/UserInfoProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2DAA2D,CAAC;AACxF,OAAO,GAAG,MAAM,kEAAkE,CAAC;AAKnF,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,GAAG;IAE1C,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,WAAW;;;;;;;;;;;;CAoCtE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UserInfoProvider.js","sourceRoot":"","sources":["../../../src/server/services/UserInfoProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAEhG,OAAO,GAAG,MAAM,kEAAkE,CAAC;AACnF,OAAO,iBAAiB,MAAM,+BAA+B,CAAC;AAC9D,OAAO,GAAG,MAAM,8CAA8C,CAAC;AAGhD,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,GAAG;IAEhD,KAAK,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAe;;;YAE/D,mFAAmF;YAEnF,MAAM,KAAK,kCAAG,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,QAAA,CAAC;YAChD,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAE5C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;mBAChG,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC;iBACrD,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACZ,CAAC,CAAC,IAAI,CAAC,KAAK;gBACZ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC5C,gFAAgF;aACnF,CAAC;iBACD,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,oBAAoB;YACpB,MAAM,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,CAAC;iBAChF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;aACxC,CAAC,CAAC,CAAC;YAER,OAAO;gBACH,MAAM;gBACN,SAAS;gBACT,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ;gBAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;gBAC/B,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;gBACvD,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/F,OAAO,EAAE,KAAK;aACjB,CAAC;;;;;;;;;KACL;CAEJ,CAAA;AAtCoB,mBAAmB;IADvC,iBAAiB;GACG,mBAAmB,CAsCvC;eAtCoB,mBAAmB"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { RegisterSingleton, ServiceProvider } from "@entity-access/entity-access/dist/di/di.js";
|
|
2
|
-
import { IAuthCookie } from "@entity-access/server-pages/dist/services/TokenService.js";
|
|
3
|
-
import USP from "@entity-access/server-pages/dist/services/UserSessionProvider.js";
|
|
4
|
-
import SocialMailContext from "../model/SocialMailContext.js";
|
|
5
|
-
import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
|
|
6
|
-
|
|
7
|
-
@RegisterSingleton
|
|
8
|
-
export default class UserSessionProvider extends USP {
|
|
9
|
-
|
|
10
|
-
async getUserSession({ userID, id: sessionID, expiry }: IAuthCookie) {
|
|
11
|
-
|
|
12
|
-
/** The new scope will not interfere with existing DbContext for current request */
|
|
13
|
-
|
|
14
|
-
using scope = ServiceProvider.createScope(this);
|
|
15
|
-
const db = scope.resolve(SocialMailContext);
|
|
16
|
-
|
|
17
|
-
const session = await db.loginSessions.where({ userID, sessionID }, (p) => (x) => x.userID === p.userID
|
|
18
|
-
&& x.sessionID === p.sessionID && x.invalid === false)
|
|
19
|
-
.include((x) => [
|
|
20
|
-
x.user.roles,
|
|
21
|
-
x.user.fileAccessList.forEach((f) => f.file),
|
|
22
|
-
// x.user.groups.forEach((g) => g.group.fileAccessList.forEach((gf) => gf.file))
|
|
23
|
-
])
|
|
24
|
-
.first();
|
|
25
|
-
if (!session?.user) {
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// extend session...
|
|
30
|
-
await db.loginSessions.where({ sessionID }, (p) => (x)=> x.sessionID === p.sessionID)
|
|
31
|
-
.update(void 0, (p) => (x) => ({
|
|
32
|
-
expiry: Sql.date.addDays(x.expiry, 7)
|
|
33
|
-
}));
|
|
34
|
-
|
|
35
|
-
return {
|
|
36
|
-
userID,
|
|
37
|
-
sessionID,
|
|
38
|
-
userName: session.user.userName,
|
|
39
|
-
expiry: session.expiry.asJSDate,
|
|
40
|
-
roles: session.user.roles?.map((x) => x.roleName) ?? [],
|
|
41
|
-
fileAccessList: session.user.fileAccessList?.map(({ type, file: { path }}) => ({ type, path })),
|
|
42
|
-
invalid: false
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
}
|