@semapps/auth 1.1.3 → 1.2.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.
Files changed (68) hide show
  1. package/dist/index.d.ts +8 -0
  2. package/dist/index.js +9 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/middlewares/localLogout.d.ts +2 -0
  5. package/dist/middlewares/localLogout.js +6 -0
  6. package/dist/middlewares/localLogout.js.map +1 -0
  7. package/dist/middlewares/redirectToFront.d.ts +2 -0
  8. package/dist/middlewares/redirectToFront.js +15 -0
  9. package/dist/middlewares/redirectToFront.js.map +1 -0
  10. package/dist/middlewares/saveRedirectUrl.d.ts +2 -0
  11. package/dist/middlewares/saveRedirectUrl.js +9 -0
  12. package/dist/middlewares/saveRedirectUrl.js.map +1 -0
  13. package/dist/middlewares/sendToken.d.ts +2 -0
  14. package/dist/middlewares/sendToken.js +6 -0
  15. package/dist/middlewares/sendToken.js.map +1 -0
  16. package/dist/mixins/auth.d.ts +98 -0
  17. package/dist/mixins/auth.js +235 -0
  18. package/dist/mixins/auth.js.map +1 -0
  19. package/dist/mixins/auth.sso.d.ts +76 -0
  20. package/dist/mixins/auth.sso.js +82 -0
  21. package/dist/mixins/auth.sso.js.map +1 -0
  22. package/dist/services/account.d.ts +122 -0
  23. package/dist/services/account.js +324 -0
  24. package/dist/services/account.js.map +1 -0
  25. package/dist/services/auth.cas.d.ts +100 -0
  26. package/dist/services/auth.cas.js +43 -0
  27. package/dist/services/auth.cas.js.map +1 -0
  28. package/dist/services/auth.local.d.ts +143 -0
  29. package/dist/services/auth.local.js +229 -0
  30. package/dist/services/auth.local.js.map +1 -0
  31. package/dist/services/auth.oidc.d.ts +102 -0
  32. package/dist/services/auth.oidc.js +63 -0
  33. package/dist/services/auth.oidc.js.map +1 -0
  34. package/dist/services/jwt.d.ts +50 -0
  35. package/dist/services/jwt.js +111 -0
  36. package/dist/services/jwt.js.map +1 -0
  37. package/dist/services/mail.d.ts +31 -0
  38. package/dist/services/mail.js +52 -0
  39. package/dist/services/mail.js.map +1 -0
  40. package/dist/services/migration.d.ts +18 -0
  41. package/dist/services/migration.js +33 -0
  42. package/dist/services/migration.js.map +1 -0
  43. package/dist/tsconfig.tsbuildinfo +1 -0
  44. package/index.ts +17 -0
  45. package/middlewares/localLogout.ts +6 -0
  46. package/middlewares/{redirectToFront.js → redirectToFront.ts} +2 -2
  47. package/middlewares/{saveRedirectUrl.js → saveRedirectUrl.ts} +2 -2
  48. package/middlewares/{sendToken.js → sendToken.ts} +2 -2
  49. package/mixins/auth.sso.ts +100 -0
  50. package/mixins/{auth.js → auth.ts} +91 -67
  51. package/package.json +16 -10
  52. package/services/account.ts +382 -0
  53. package/services/auth.cas.ts +56 -0
  54. package/services/auth.local.ts +276 -0
  55. package/services/{auth.oidc.js → auth.oidc.ts} +21 -9
  56. package/services/jwt.ts +127 -0
  57. package/services/mail.ts +67 -0
  58. package/services/migration.ts +43 -0
  59. package/tsconfig.json +10 -0
  60. package/index.js +0 -9
  61. package/middlewares/localLogout.js +0 -6
  62. package/mixins/auth.sso.js +0 -93
  63. package/services/account.js +0 -315
  64. package/services/auth.cas.js +0 -45
  65. package/services/auth.local.js +0 -238
  66. package/services/jwt.js +0 -101
  67. package/services/mail.js +0 -49
  68. package/services/migration.js +0 -29
@@ -0,0 +1,122 @@
1
+ import DbService from 'moleculer-db';
2
+ import { TripleStoreAdapter } from '@semapps/triplestore';
3
+ declare const AuthAccountSchema: {
4
+ name: "auth.account";
5
+ mixins: (typeof DbService)[];
6
+ adapter: TripleStoreAdapter;
7
+ settings: {
8
+ idField: string;
9
+ reservedUsernames: string[];
10
+ minPasswordLength: number;
11
+ minUsernameLength: number;
12
+ };
13
+ dependencies: string[];
14
+ actions: {
15
+ create: {
16
+ handler(ctx: Moleculer.Context<Optionalize<{
17
+ [x: string]: any;
18
+ }>, {}, Moleculer.GenericObject>): Promise<any>;
19
+ };
20
+ attachWebId: {
21
+ handler(ctx: Moleculer.Context<Optionalize<{
22
+ [x: string]: any;
23
+ }>, {}, Moleculer.GenericObject>): Promise<any>;
24
+ };
25
+ verify: {
26
+ handler(ctx: Moleculer.Context<Optionalize<{
27
+ [x: string]: any;
28
+ }>, {}, Moleculer.GenericObject>): Promise<any>;
29
+ };
30
+ usernameExists: {
31
+ handler(ctx: Moleculer.Context<Optionalize<{
32
+ [x: string]: any;
33
+ }>, {}, Moleculer.GenericObject>): Promise<boolean>;
34
+ };
35
+ emailExists: {
36
+ handler(ctx: Moleculer.Context<Optionalize<{
37
+ [x: string]: any;
38
+ }>, {}, Moleculer.GenericObject>): Promise<boolean>;
39
+ };
40
+ find: {
41
+ /** Overwrite find method, to filter accounts with tombstone. */
42
+ handler(ctx: Moleculer.Context<Optionalize<{
43
+ [x: string]: any;
44
+ }>, {}, Moleculer.GenericObject>): Promise<any>;
45
+ };
46
+ findByUsername: {
47
+ handler(ctx: Moleculer.Context<Optionalize<{
48
+ [x: string]: any;
49
+ }>, {}, Moleculer.GenericObject>): Promise<any>;
50
+ };
51
+ findByWebId: {
52
+ handler(ctx: Moleculer.Context<Optionalize<{
53
+ [x: string]: any;
54
+ }>, {}, Moleculer.GenericObject>): Promise<any>;
55
+ };
56
+ findByEmail: {
57
+ handler(ctx: Moleculer.Context<Optionalize<{
58
+ [x: string]: any;
59
+ }>, {}, Moleculer.GenericObject>): Promise<any>;
60
+ };
61
+ setPassword: {
62
+ handler(ctx: Moleculer.Context<Optionalize<{
63
+ [x: string]: any;
64
+ }>, {}, Moleculer.GenericObject>): Promise<any>;
65
+ };
66
+ setNewPassword: {
67
+ handler(ctx: Moleculer.Context<Optionalize<{
68
+ [x: string]: any;
69
+ }>, {}, Moleculer.GenericObject>): Promise<any>;
70
+ };
71
+ generateResetPasswordToken: {
72
+ handler(ctx: Moleculer.Context<Optionalize<{
73
+ [x: string]: any;
74
+ }>, {}, Moleculer.GenericObject>): Promise<any>;
75
+ };
76
+ findDatasetByWebId: {
77
+ handler(ctx: Moleculer.Context<Optionalize<{
78
+ [x: string]: any;
79
+ }>, {}, Moleculer.GenericObject>): Promise<any>;
80
+ };
81
+ findSettingsByWebId: {
82
+ handler(ctx: Moleculer.Context<Optionalize<{
83
+ [x: string]: any;
84
+ }>, {}, Moleculer.GenericObject>): Promise<{
85
+ email: any;
86
+ preferredLocale: any;
87
+ }>;
88
+ };
89
+ updateAccountSettings: {
90
+ handler(ctx: Moleculer.Context<Optionalize<{
91
+ [x: string]: any;
92
+ }>, {}, Moleculer.GenericObject>): Promise<any>;
93
+ };
94
+ deleteByWebId: {
95
+ handler(ctx: Moleculer.Context<Optionalize<{
96
+ [x: string]: any;
97
+ }>, {}, Moleculer.GenericObject>): Promise<boolean>;
98
+ };
99
+ setTombstone: {
100
+ handler(ctx: Moleculer.Context<Optionalize<{
101
+ [x: string]: any;
102
+ }>, {}, Moleculer.GenericObject>): Promise<any>;
103
+ };
104
+ };
105
+ methods: {
106
+ isValidUsername(ctx: any, username: any): Promise<{
107
+ isValid: boolean;
108
+ error: string | undefined;
109
+ }>;
110
+ hashPassword(password: any): Promise<unknown>;
111
+ comparePassword(password: any, hash: any): Promise<unknown>;
112
+ generateResetPasswordToken(): Promise<unknown>;
113
+ };
114
+ };
115
+ export default AuthAccountSchema;
116
+ declare global {
117
+ export namespace Moleculer {
118
+ interface AllServices {
119
+ [AuthAccountSchema.name]: typeof AuthAccountSchema;
120
+ }
121
+ }
122
+ }
@@ -0,0 +1,324 @@
1
+ // @ts-expect-error TS(7016): Could not find a declaration file for module 'bcry... Remove this comment to see the full error message
2
+ import bcrypt from 'bcrypt';
3
+ // @ts-expect-error TS(7016): Could not find a declaration file for module 'spea... Remove this comment to see the full error message
4
+ import createSlug from 'speakingurl';
5
+ import DbService from 'moleculer-db';
6
+ import { TripleStoreAdapter } from '@semapps/triplestore';
7
+ import crypto from 'crypto';
8
+ // Taken from https://stackoverflow.com/a/9204568/7900695
9
+ const emailRegexp = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
10
+ const AuthAccountSchema = {
11
+ name: 'auth.account',
12
+ mixins: [DbService],
13
+ adapter: new TripleStoreAdapter({ type: 'AuthAccount', dataset: 'settings' }),
14
+ settings: {
15
+ idField: '@id',
16
+ reservedUsernames: ['relay'],
17
+ minPasswordLength: 1,
18
+ minUsernameLength: 1
19
+ },
20
+ dependencies: ['triplestore'],
21
+ actions: {
22
+ create: {
23
+ async handler(ctx) {
24
+ let { uuid, username, password, email, webId, ...rest } = ctx.params;
25
+ // FORMAT AND VERIFY PASSWORD
26
+ if (password) {
27
+ if (password.length < this.settings.minPasswordLength) {
28
+ throw new Error('password.too-short');
29
+ }
30
+ password = await this.hashPassword(password);
31
+ }
32
+ // FORMAT AND VERIFY EMAIL
33
+ if (email) {
34
+ email = email.toLowerCase();
35
+ const emailExists = await ctx.call('auth.account.emailExists', { email });
36
+ if (emailExists) {
37
+ throw new Error('email.already.exists');
38
+ }
39
+ if (!emailRegexp.test(email)) {
40
+ throw new Error('email.invalid');
41
+ }
42
+ }
43
+ // FORMAT AND VERIFY USERNAME
44
+ if (username) {
45
+ // @ts-expect-error TS(2339): Property 'isSystemCall' does not exist on type '{}... Remove this comment to see the full error message
46
+ if (!ctx.meta.isSystemCall) {
47
+ const { isValid, error } = await this.isValidUsername(ctx, username);
48
+ if (!isValid)
49
+ throw new Error(error);
50
+ }
51
+ }
52
+ else if (email) {
53
+ // If username is not provided, find one automatically from the email (without errors)
54
+ username = createSlug(email.split('@')[0].toLowerCase());
55
+ let { isValid, error } = await this.isValidUsername(ctx, username);
56
+ if (!isValid) {
57
+ if (error === 'username.invalid' || error === 'username.too-short') {
58
+ // If username generated from email is invalid, use a generic name
59
+ username = 'user';
60
+ }
61
+ // If necessary, add a number after the username
62
+ let i = 0;
63
+ do {
64
+ username = i === 0 ? username : username + i;
65
+ ({ isValid } = await this.isValidUsername(ctx, username));
66
+ } while (!isValid);
67
+ }
68
+ }
69
+ else {
70
+ throw new Error('You must provide at least a username or an email address');
71
+ }
72
+ return await this._create(ctx, {
73
+ ...rest,
74
+ uuid,
75
+ username,
76
+ email,
77
+ hashedPassword: password,
78
+ webId
79
+ });
80
+ }
81
+ },
82
+ attachWebId: {
83
+ async handler(ctx) {
84
+ const { accountUri, webId } = ctx.params;
85
+ return await this._update(ctx, {
86
+ '@id': accountUri,
87
+ webId
88
+ });
89
+ }
90
+ },
91
+ verify: {
92
+ async handler(ctx) {
93
+ const { username, password } = ctx.params;
94
+ // If the username includes a @, assume it is an email
95
+ const query = username.includes('@') ? { email: username } : { username };
96
+ const accounts = await this._find(ctx, { query });
97
+ if (accounts.length > 0) {
98
+ const passwordMatch = await this.comparePassword(password, accounts[0].hashedPassword);
99
+ if (passwordMatch) {
100
+ return accounts[0];
101
+ }
102
+ throw new Error('account.not-found');
103
+ }
104
+ else {
105
+ throw new Error('account.not-found');
106
+ }
107
+ }
108
+ },
109
+ usernameExists: {
110
+ async handler(ctx) {
111
+ const { username } = ctx.params;
112
+ const accounts = await this._find(ctx, { query: { username } });
113
+ return accounts.length > 0;
114
+ }
115
+ },
116
+ emailExists: {
117
+ async handler(ctx) {
118
+ const { email } = ctx.params;
119
+ const accounts = await this._find(ctx, { query: { email } });
120
+ return accounts.length > 0;
121
+ }
122
+ },
123
+ find: {
124
+ /** Overwrite find method, to filter accounts with tombstone. */
125
+ async handler(ctx) {
126
+ /** @type {object[]} */
127
+ const accounts = await this._find(ctx, ctx.params);
128
+ return accounts.filter((account) => !account.deletedAt);
129
+ }
130
+ },
131
+ findByUsername: {
132
+ async handler(ctx) {
133
+ const { username } = ctx.params;
134
+ const accounts = await this._find(ctx, { query: { username } });
135
+ return accounts.length > 0 ? accounts[0] : null;
136
+ }
137
+ },
138
+ findByWebId: {
139
+ async handler(ctx) {
140
+ const { webId } = ctx.params;
141
+ const accounts = await this._find(ctx, { query: { webId } });
142
+ return accounts.length > 0 ? accounts[0] : null;
143
+ }
144
+ },
145
+ findByEmail: {
146
+ async handler(ctx) {
147
+ const { email } = ctx.params;
148
+ const accounts = await this._find(ctx, { query: { email } });
149
+ return accounts.length > 0 ? accounts[0] : null;
150
+ }
151
+ },
152
+ setPassword: {
153
+ async handler(ctx) {
154
+ const { webId, password } = ctx.params;
155
+ const hashedPassword = await this.hashPassword(password);
156
+ const account = await ctx.call('auth.account.findByWebId', { webId });
157
+ return await this._update(ctx, {
158
+ '@id': account['@id'],
159
+ hashedPassword
160
+ });
161
+ }
162
+ },
163
+ setNewPassword: {
164
+ async handler(ctx) {
165
+ const { webId, token, password } = ctx.params;
166
+ const hashedPassword = await this.hashPassword(password);
167
+ const account = await ctx.call('auth.account.findByWebId', { webId });
168
+ if (account.resetPasswordToken !== token) {
169
+ throw new Error('auth.password.invalid_reset_token');
170
+ }
171
+ return await this._update(ctx, {
172
+ '@id': account['@id'],
173
+ hashedPassword,
174
+ resetPasswordToken: undefined
175
+ });
176
+ }
177
+ },
178
+ generateResetPasswordToken: {
179
+ async handler(ctx) {
180
+ const { webId } = ctx.params;
181
+ const resetPasswordToken = await this.generateResetPasswordToken();
182
+ const account = await ctx.call('auth.account.findByWebId', { webId });
183
+ await this._update(ctx, {
184
+ '@id': account['@id'],
185
+ resetPasswordToken
186
+ });
187
+ return resetPasswordToken;
188
+ }
189
+ },
190
+ findDatasetByWebId: {
191
+ async handler(ctx) {
192
+ // @ts-expect-error TS(2339): Property 'webId' does not exist on type '{}'.
193
+ const webId = ctx.params.webId || ctx.meta.webId;
194
+ const account = await ctx.call('auth.account.findByWebId', { webId });
195
+ return account?.username;
196
+ }
197
+ },
198
+ findSettingsByWebId: {
199
+ async handler(ctx) {
200
+ // @ts-expect-error TS(2339): Property 'webId' does not exist on type '{}'.
201
+ const { webId } = ctx.meta;
202
+ const account = await ctx.call('auth.account.findByWebId', { webId });
203
+ return {
204
+ email: account.email,
205
+ preferredLocale: account.preferredLocale
206
+ };
207
+ }
208
+ },
209
+ updateAccountSettings: {
210
+ async handler(ctx) {
211
+ const { currentPassword, email, newPassword } = ctx.params;
212
+ // @ts-expect-error TS(2339): Property 'webId' does not exist on type '{}'.
213
+ const { webId } = ctx.meta;
214
+ const account = await ctx.call('auth.account.findByWebId', { webId });
215
+ const passwordMatch = await this.comparePassword(currentPassword, account.hashedPassword);
216
+ let params = {};
217
+ if (!passwordMatch) {
218
+ throw new Error('auth.account.invalid_password');
219
+ }
220
+ if (newPassword) {
221
+ const hashedPassword = await this.hashPassword(newPassword);
222
+ params = { ...params, hashedPassword };
223
+ }
224
+ if (email !== account.email) {
225
+ const existing = await ctx.call('auth.account.findByEmail', { email });
226
+ if (existing) {
227
+ throw new Error('email.already.exists');
228
+ }
229
+ params = { ...params, email };
230
+ }
231
+ return await this._update(ctx, {
232
+ '@id': account['@id'],
233
+ ...params
234
+ });
235
+ }
236
+ },
237
+ deleteByWebId: {
238
+ async handler(ctx) {
239
+ const { webId } = ctx.params;
240
+ const account = await ctx.call('auth.account.findByWebId', { webId });
241
+ if (account) {
242
+ await this._remove(ctx, { id: account['@id'] });
243
+ return true;
244
+ }
245
+ return false;
246
+ }
247
+ },
248
+ setTombstone: {
249
+ // Remove email and password from an account, set deletedAt timestamp.
250
+ async handler(ctx) {
251
+ const { webId } = ctx.params;
252
+ const account = await ctx.call('auth.account.findByWebId', { webId });
253
+ return await this._update(ctx, {
254
+ // Set all values to undefined...
255
+ ...Object.fromEntries(Object.keys(account).map(key => [key, null])),
256
+ '@id': account['@id'],
257
+ // ...except for
258
+ webId: account.webId,
259
+ username: account.username,
260
+ // And add a deletedAt date.
261
+ deletedAt: new Date().toISOString()
262
+ });
263
+ }
264
+ }
265
+ },
266
+ methods: {
267
+ async isValidUsername(ctx, username) {
268
+ let error;
269
+ // Ensure the username has no space or special characters
270
+ if (!/^[a-z0-9\-+_.]+$/.exec(username)) {
271
+ error = 'username.invalid';
272
+ }
273
+ if (username.length < this.settings.minUsernameLength) {
274
+ error = 'username.too-short';
275
+ }
276
+ // Ensure we don't use reservedUsernames
277
+ if (this.settings.reservedUsernames.includes(username)) {
278
+ error = 'username.reserved';
279
+ }
280
+ // Ensure username doesn't already exist
281
+ const usernameExists = await ctx.call('auth.account.usernameExists', { username });
282
+ if (usernameExists) {
283
+ error = 'username.already.exists';
284
+ }
285
+ return { isValid: !error, error };
286
+ },
287
+ async hashPassword(password) {
288
+ return new Promise((resolve, reject) => {
289
+ bcrypt.hash(password, 10, (err, hash) => {
290
+ if (err) {
291
+ reject(err);
292
+ }
293
+ else {
294
+ resolve(hash);
295
+ }
296
+ });
297
+ });
298
+ },
299
+ async comparePassword(password, hash) {
300
+ return new Promise(resolve => {
301
+ bcrypt.compare(password, hash, (err, res) => {
302
+ if (res === true) {
303
+ resolve(true);
304
+ }
305
+ else {
306
+ resolve(false);
307
+ }
308
+ });
309
+ });
310
+ },
311
+ async generateResetPasswordToken() {
312
+ return new Promise((resolve, reject) => {
313
+ crypto.randomBytes(32, (ex, buf) => {
314
+ if (ex) {
315
+ reject(ex);
316
+ }
317
+ resolve(buf.toString('hex'));
318
+ });
319
+ });
320
+ }
321
+ }
322
+ };
323
+ export default AuthAccountSchema;
324
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../services/account.ts"],"names":[],"mappings":"AAAA,qIAAqI;AACrI,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,qIAAqI;AACrI,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,yDAAyD;AACzD,MAAM,WAAW,GAAG,4BAA4B,CAAC;AAEjD,MAAM,iBAAiB,GAAG;IACxB,IAAI,EAAE,cAAuB;IAC7B,MAAM,EAAE,CAAC,SAAS,CAAC;IACnB,OAAO,EAAE,IAAI,kBAAkB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAC7E,QAAQ,EAAE;QACR,OAAO,EAAE,KAAK;QACd,iBAAiB,EAAE,CAAC,OAAO,CAAC;QAC5B,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,CAAC;KACrB;IACD,YAAY,EAAE,CAAC,aAAa,CAAC;IAC7B,OAAO,EAAE;QACP,MAAM,EAAE;YACN,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;gBAErE,6BAA6B;gBAE7B,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;wBACtD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;oBACxC,CAAC;oBAED,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC/C,CAAC;gBAED,0BAA0B;gBAE1B,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;oBAE5B,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC1E,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;oBAC1C,CAAC;oBAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC7B,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;gBAED,6BAA6B;gBAE7B,IAAI,QAAQ,EAAE,CAAC;oBACb,qIAAqI;oBACrI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;wBAC3B,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;wBACrE,IAAI,CAAC,OAAO;4BAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,EAAE,CAAC;oBACjB,sFAAsF;oBACtF,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;oBAEzD,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;oBAEnE,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,IAAI,KAAK,KAAK,kBAAkB,IAAI,KAAK,KAAK,oBAAoB,EAAE,CAAC;4BACnE,kEAAkE;4BAClE,QAAQ,GAAG,MAAM,CAAC;wBACpB,CAAC;wBAED,gDAAgD;wBAChD,IAAI,CAAC,GAAG,CAAC,CAAC;wBACV,GAAG,CAAC;4BACF,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;4BAC7C,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;wBAC5D,CAAC,QAAQ,CAAC,OAAO,EAAE;oBACrB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;gBAC9E,CAAC;gBAED,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;oBAC7B,GAAG,IAAI;oBACP,IAAI;oBACJ,QAAQ;oBACR,KAAK;oBACL,cAAc,EAAE,QAAQ;oBACxB,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;SACF;QAED,WAAW,EAAE;YACX,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;gBAEzC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;oBAC7B,KAAK,EAAE,UAAU;oBACjB,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;SACF;QAED,MAAM,EAAE;YACN,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;gBAE1C,sDAAsD;gBACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;gBAE1E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAElD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;oBACvF,IAAI,aAAa,EAAE,CAAC;wBAClB,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACrB,CAAC;oBACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;SACF;QAED,cAAc,EAAE;YACd,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;gBAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAChE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7B,CAAC;SACF;QAED,WAAW,EAAE;YACX,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;gBAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC7D,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7B,CAAC;SACF;QAED,IAAI,EAAE;YACJ,gEAAgE;YAChE,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,uBAAuB;gBACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC/D,CAAC;SACF;QAED,cAAc,EAAE;YACd,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;gBAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAChE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAClD,CAAC;SACF;QAED,WAAW,EAAE;YACX,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;gBAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC7D,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAClD,CAAC;SACF;QAED,WAAW,EAAE;YACX,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;gBAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC7D,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAClD,CAAC;SACF;QAED,WAAW,EAAE;YACX,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;gBACvC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACzD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAEtE,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;oBAC7B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;oBACrB,cAAc;iBACf,CAAC,CAAC;YACL,CAAC;SACF;QAED,cAAc,EAAE;YACd,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;gBAC9C,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACzD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAEtE,IAAI,OAAO,CAAC,kBAAkB,KAAK,KAAK,EAAE,CAAC;oBACzC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBACvD,CAAC;gBAED,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;oBAC7B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;oBACrB,cAAc;oBACd,kBAAkB,EAAE,SAAS;iBAC9B,CAAC,CAAC;YACL,CAAC;SACF;QAED,0BAA0B,EAAE;YAC1B,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;gBAC7B,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBACnE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAEtE,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;oBACtB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;oBACrB,kBAAkB;iBACnB,CAAC,CAAC;gBAEH,OAAO,kBAAkB,CAAC;YAC5B,CAAC;SACF;QAED,kBAAkB,EAAE;YAClB,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,2EAA2E;gBAC3E,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;gBACjD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACtE,OAAO,OAAO,EAAE,QAAQ,CAAC;YAC3B,CAAC;SACF;QAED,mBAAmB,EAAE;YACnB,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,2EAA2E;gBAC3E,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;gBAE3B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAEtE,OAAO;oBACL,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,eAAe,EAAE,OAAO,CAAC,eAAe;iBACzC,CAAC;YACJ,CAAC;SACF;QAED,qBAAqB,EAAE;YACrB,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;gBAC3D,2EAA2E;gBAC3E,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;gBAC3B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACtE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;gBAC1F,IAAI,MAAM,GAAG,EAAE,CAAC;gBAEhB,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBACnD,CAAC;gBAED,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;oBAC5D,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,CAAC;gBACzC,CAAC;gBAED,IAAI,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;oBAC5B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;oBACvE,IAAI,QAAQ,EAAE,CAAC;wBACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;oBAC1C,CAAC;oBAED,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC;gBAChC,CAAC;gBAED,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;oBAC7B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;oBACrB,GAAG,MAAM;iBACV,CAAC,CAAC;YACL,CAAC;SACF;QAED,aAAa,EAAE;YACb,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;gBAC7B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAEtE,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAChD,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,OAAO,KAAK,CAAC;YACf,CAAC;SACF;QAED,YAAY,EAAE;YACZ,sEAAsE;YACtE,KAAK,CAAC,OAAO,CAAC,GAAG;gBACf,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;gBAC7B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAEtE,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;oBAC7B,iCAAiC;oBACjC,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;oBACnE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;oBACrB,gBAAgB;oBAChB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,4BAA4B;oBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;YACL,CAAC;SACF;KACF;IACD,OAAO,EAAE;QACP,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ;YACjC,IAAI,KAAK,CAAC;YAEV,yDAAyD;YACzD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvC,KAAK,GAAG,kBAAkB,CAAC;YAC7B,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;gBACtD,KAAK,GAAG,oBAAoB,CAAC;YAC/B,CAAC;YAED,wCAAwC;YACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvD,KAAK,GAAG,mBAAmB,CAAC;YAC9B,CAAC;YAED,wCAAwC;YACxC,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnF,IAAI,cAAc,EAAE,CAAC;gBACnB,KAAK,GAAG,yBAAyB,CAAC;YACpC,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;QACpC,CAAC;QACD,KAAK,CAAC,YAAY,CAAC,QAAQ;YACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAQ,EAAE,IAAS,EAAE,EAAE;oBAChD,IAAI,GAAG,EAAE,CAAC;wBACR,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI;YAClC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC3B,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAQ,EAAE,GAAQ,EAAE,EAAE;oBACpD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;wBACjB,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,KAAK,CAAC,CAAC;oBACjB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,0BAA0B;YAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;oBACjC,IAAI,EAAE,EAAE,CAAC;wBACP,MAAM,CAAC,EAAE,CAAC,CAAC;oBACb,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/B,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;KACF;CACsB,CAAC;AAE1B,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,100 @@
1
+ declare const AuthCASService: {
2
+ name: "auth";
3
+ mixins: {
4
+ mixins: {
5
+ settings: {
6
+ baseUrl: null;
7
+ jwtPath: null;
8
+ capabilitiesPath: undefined;
9
+ registrationAllowed: boolean;
10
+ reservedUsernames: never[];
11
+ minPasswordLength: number;
12
+ minUsernameLength: number;
13
+ webIdSelection: never[];
14
+ accountSelection: never[];
15
+ accountsDataset: string;
16
+ podProvider: boolean;
17
+ };
18
+ dependencies: string[];
19
+ created(this: Moleculer.Service<Moleculer.ServiceSettingSchema>): Promise<void>;
20
+ started(this: Moleculer.Service<Moleculer.ServiceSettingSchema>): Promise<void>;
21
+ actions: {
22
+ authenticate: {
23
+ handler(ctx: Moleculer.Context<Optionalize<{
24
+ [x: string]: any;
25
+ }>, {}, Moleculer.GenericObject>): Promise<any>;
26
+ };
27
+ authorize: {
28
+ handler(ctx: Moleculer.Context<Optionalize<{
29
+ [x: string]: any;
30
+ }>, {}, Moleculer.GenericObject>): Promise<any>;
31
+ };
32
+ impersonate: {
33
+ handler(ctx: Moleculer.Context<Optionalize<{
34
+ [x: string]: any;
35
+ }>, {}, Moleculer.GenericObject>): Promise<any>;
36
+ };
37
+ };
38
+ methods: {
39
+ validateCapability(ctx: any, token: any): Promise<any>;
40
+ getStrategy(): never;
41
+ getApiRoutes(): never;
42
+ pickWebIdData(data: any): any;
43
+ pickAccountData(data: any): {
44
+ [k: string]: any;
45
+ };
46
+ };
47
+ }[];
48
+ settings: {
49
+ baseUrl: null;
50
+ jwtPath: null;
51
+ registrationAllowed: boolean;
52
+ reservedUsernames: never[];
53
+ webIdSelection: never[];
54
+ sessionSecret: string;
55
+ selectSsoData: null;
56
+ };
57
+ actions: {
58
+ loginOrSignup: {
59
+ handler(ctx: Moleculer.Context<Optionalize<{
60
+ [x: string]: any;
61
+ }>, {}, Moleculer.GenericObject>): Promise<{
62
+ token: any;
63
+ newUser: boolean;
64
+ }>;
65
+ };
66
+ };
67
+ methods: {
68
+ getApiRoutes(basePath: any): {
69
+ path: string;
70
+ name: string;
71
+ use: any[];
72
+ aliases: {
73
+ 'GET /': any[];
74
+ };
75
+ }[];
76
+ };
77
+ }[];
78
+ settings: {
79
+ baseUrl: null;
80
+ jwtPath: null;
81
+ registrationAllowed: boolean;
82
+ reservedUsernames: never[];
83
+ webIdSelection: never[];
84
+ sessionSecret: string;
85
+ selectSsoData: null;
86
+ casUrl: null;
87
+ };
88
+ created(this: Moleculer.Service<Moleculer.ServiceSettingSchema>): Promise<void>;
89
+ methods: {
90
+ getStrategy(): any;
91
+ };
92
+ };
93
+ export default AuthCASService;
94
+ declare global {
95
+ export namespace Moleculer {
96
+ interface AllServices {
97
+ [AuthCASService.name]: typeof AuthCASService;
98
+ }
99
+ }
100
+ }
@@ -0,0 +1,43 @@
1
+ // @ts-expect-error TS(7016): Could not find a declaration file for module 'pass... Remove this comment to see the full error message
2
+ import { Strategy } from 'passport-cas2';
3
+ // @ts-expect-error TS(2614): Module '"moleculer-web"' has no exported member 'E... Remove this comment to see the full error message
4
+ import { Errors as E } from 'moleculer-web';
5
+ import AuthSSOMixin from "../mixins/auth.sso.js";
6
+ const AuthCASService = {
7
+ name: 'auth',
8
+ mixins: [AuthSSOMixin],
9
+ settings: {
10
+ baseUrl: null,
11
+ jwtPath: null,
12
+ registrationAllowed: true,
13
+ reservedUsernames: [],
14
+ webIdSelection: [],
15
+ // SSO-specific settings
16
+ sessionSecret: 's€m@pps',
17
+ selectSsoData: null,
18
+ // Cas-specific settings
19
+ casUrl: null
20
+ },
21
+ async created() {
22
+ this.passportId = 'cas';
23
+ },
24
+ methods: {
25
+ getStrategy() {
26
+ return new Strategy({
27
+ casURL: this.settings.casUrl,
28
+ passReqToCallback: true
29
+ }, (req, username, profile, done) => {
30
+ req.$ctx
31
+ .call('auth.loginOrSignup', { ssoData: { username, ...profile } })
32
+ .then((loginData) => {
33
+ done(null, loginData);
34
+ })
35
+ .catch((e) => {
36
+ done(new E.UnAuthorizedError(e.message), false);
37
+ });
38
+ });
39
+ }
40
+ }
41
+ };
42
+ export default AuthCASService;
43
+ //# sourceMappingURL=auth.cas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.cas.js","sourceRoot":"","sources":["../../services/auth.cas.ts"],"names":[],"mappings":"AAAA,qIAAqI;AACrI,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,qIAAqI;AACrI,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,YAAY,MAAM,uBAAuB,CAAC;AAEjD,MAAM,cAAc,GAAG;IACrB,IAAI,EAAE,MAAe;IACrB,MAAM,EAAE,CAAC,YAAY,CAAC;IACtB,QAAQ,EAAE;QACR,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,mBAAmB,EAAE,IAAI;QACzB,iBAAiB,EAAE,EAAE;QACrB,cAAc,EAAE,EAAE;QAClB,wBAAwB;QACxB,aAAa,EAAE,SAAS;QACxB,aAAa,EAAE,IAAI;QACnB,wBAAwB;QACxB,MAAM,EAAE,IAAI;KACb;IACD,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,EAAE;QACP,WAAW;YACT,OAAO,IAAI,QAAQ,CACjB;gBACE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAC5B,iBAAiB,EAAE,IAAI;aACxB,EACD,CAAC,GAAQ,EAAE,QAAa,EAAE,OAAY,EAAE,IAAS,EAAE,EAAE;gBACnD,GAAG,CAAC,IAAI;qBACL,IAAI,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC;qBACjE,IAAI,CAAC,CAAC,SAAc,EAAE,EAAE;oBACvB,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBACxB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;oBAChB,IAAI,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;YACP,CAAC,CACF,CAAC;QACJ,CAAC;KACF;CACsB,CAAC;AAE1B,eAAe,cAAc,CAAC"}