@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.
- package/dist/index.d.ts +8 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/middlewares/localLogout.d.ts +2 -0
- package/dist/middlewares/localLogout.js +6 -0
- package/dist/middlewares/localLogout.js.map +1 -0
- package/dist/middlewares/redirectToFront.d.ts +2 -0
- package/dist/middlewares/redirectToFront.js +15 -0
- package/dist/middlewares/redirectToFront.js.map +1 -0
- package/dist/middlewares/saveRedirectUrl.d.ts +2 -0
- package/dist/middlewares/saveRedirectUrl.js +9 -0
- package/dist/middlewares/saveRedirectUrl.js.map +1 -0
- package/dist/middlewares/sendToken.d.ts +2 -0
- package/dist/middlewares/sendToken.js +6 -0
- package/dist/middlewares/sendToken.js.map +1 -0
- package/dist/mixins/auth.d.ts +98 -0
- package/dist/mixins/auth.js +235 -0
- package/dist/mixins/auth.js.map +1 -0
- package/dist/mixins/auth.sso.d.ts +76 -0
- package/dist/mixins/auth.sso.js +82 -0
- package/dist/mixins/auth.sso.js.map +1 -0
- package/dist/services/account.d.ts +122 -0
- package/dist/services/account.js +324 -0
- package/dist/services/account.js.map +1 -0
- package/dist/services/auth.cas.d.ts +100 -0
- package/dist/services/auth.cas.js +43 -0
- package/dist/services/auth.cas.js.map +1 -0
- package/dist/services/auth.local.d.ts +143 -0
- package/dist/services/auth.local.js +229 -0
- package/dist/services/auth.local.js.map +1 -0
- package/dist/services/auth.oidc.d.ts +102 -0
- package/dist/services/auth.oidc.js +63 -0
- package/dist/services/auth.oidc.js.map +1 -0
- package/dist/services/jwt.d.ts +50 -0
- package/dist/services/jwt.js +111 -0
- package/dist/services/jwt.js.map +1 -0
- package/dist/services/mail.d.ts +31 -0
- package/dist/services/mail.js +52 -0
- package/dist/services/mail.js.map +1 -0
- package/dist/services/migration.d.ts +18 -0
- package/dist/services/migration.js +33 -0
- package/dist/services/migration.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/index.ts +17 -0
- package/middlewares/localLogout.ts +6 -0
- package/middlewares/{redirectToFront.js → redirectToFront.ts} +2 -2
- package/middlewares/{saveRedirectUrl.js → saveRedirectUrl.ts} +2 -2
- package/middlewares/{sendToken.js → sendToken.ts} +2 -2
- package/mixins/auth.sso.ts +100 -0
- package/mixins/{auth.js → auth.ts} +91 -67
- package/package.json +16 -10
- package/services/account.ts +382 -0
- package/services/auth.cas.ts +56 -0
- package/services/auth.local.ts +276 -0
- package/services/{auth.oidc.js → auth.oidc.ts} +21 -9
- package/services/jwt.ts +127 -0
- package/services/mail.ts +67 -0
- package/services/migration.ts +43 -0
- package/tsconfig.json +10 -0
- package/index.js +0 -9
- package/middlewares/localLogout.js +0 -6
- package/mixins/auth.sso.js +0 -93
- package/services/account.js +0 -315
- package/services/auth.cas.js +0 -45
- package/services/auth.local.js +0 -238
- package/services/jwt.js +0 -101
- package/services/mail.js +0 -49
- 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":"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"}
|
@@ -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"}
|