@semapps/auth 0.8.8 → 0.8.9

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@semapps/auth",
3
- "version": "0.8.8",
3
+ "version": "0.8.9",
4
4
  "description": "Authentification module for SemApps",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Virtual Assembly",
7
7
  "dependencies": {
8
- "@semapps/ldp": "0.8.8",
9
- "@semapps/middlewares": "0.8.8",
10
- "@semapps/mime-types": "0.8.8",
11
- "@semapps/triplestore": "0.8.8",
8
+ "@semapps/ldp": "0.8.9",
9
+ "@semapps/middlewares": "0.8.9",
10
+ "@semapps/mime-types": "0.8.9",
11
+ "@semapps/triplestore": "0.8.9",
12
12
  "bcrypt": "^5.0.1",
13
13
  "express-session": "^1.17.0",
14
14
  "jsonwebtoken": "^8.5.1",
@@ -29,5 +29,5 @@
29
29
  "engines": {
30
30
  "node": ">=14"
31
31
  },
32
- "gitHead": "ace1f82c14c082cc24cc9d8498748c7458d96602"
32
+ "gitHead": "2a8bb8d6e5e1d37995d73ff75d8a7f5ab118ae56"
33
33
  }
@@ -51,7 +51,7 @@ const AuthLocalService = {
51
51
  ctx.meta.skipObjectsWatcher = true;
52
52
 
53
53
  if (username && username.length < 2) {
54
- throw new Error('The username must be at least 2 characters long');
54
+ throw new MoleculerError('The username must be at least 2 characters long', 400, 'BAD_REQUEST');
55
55
  }
56
56
 
57
57
  let accountData = await ctx.call('auth.account.create', {
@@ -61,21 +61,27 @@ const AuthLocalService = {
61
61
  ...this.pickAccountData(rest)
62
62
  });
63
63
 
64
- const profileData = { nick: username, email, ...rest };
65
- const webId = await ctx.call('webid.createWebId', this.pickWebIdData(profileData), {
66
- meta: {
67
- isSignup: true // Allow services to handle directly the webId creation if it is generated by the AuthService
68
- }
69
- });
64
+ try {
65
+ const profileData = { nick: username, email, ...rest };
66
+ const webId = await ctx.call('webid.createWebId', this.pickWebIdData(profileData), {
67
+ meta: {
68
+ isSignup: true // Allow services to handle directly the webId creation if it is generated by the AuthService
69
+ }
70
+ });
70
71
 
71
- // Link the webId with the account
72
- accountData = await ctx.call('auth.account.attachWebId', { accountUri: accountData['@id'], webId });
72
+ // Link the webId with the account
73
+ accountData = await ctx.call('auth.account.attachWebId', { accountUri: accountData['@id'], webId });
73
74
 
74
- ctx.emit('auth.registered', { webId, profileData, accountData, interactionId });
75
+ ctx.emit('auth.registered', { webId, profileData, accountData, interactionId });
75
76
 
76
- const token = await ctx.call('auth.jwt.generateToken', { payload: { webId } });
77
+ const token = await ctx.call('auth.jwt.generateToken', { payload: { webId } });
77
78
 
78
- return { token, webId, newUser: true };
79
+ return { token, webId, newUser: true };
80
+ } catch (e) {
81
+ // Delete account if resource creation failed, or it may cause problems when retrying
82
+ await ctx.call('auth.account.remove', { id: accountData['@id'] });
83
+ throw e;
84
+ }
79
85
  },
80
86
  async login(ctx) {
81
87
  const { username, password, interactionId } = ctx.params;
@@ -117,7 +123,7 @@ const AuthLocalService = {
117
123
  const account = await ctx.call('auth.account.findByEmail', { email });
118
124
 
119
125
  if (!account) {
120
- throw new Error('email.not.exists');
126
+ throw new MoleculerError('email.not.exists', 400, 'BAD_REQUEST');
121
127
  }
122
128
 
123
129
  const token = await ctx.call('auth.account.generateResetPasswordToken', { webId: account.webId });
@@ -133,7 +139,7 @@ const AuthLocalService = {
133
139
  const account = await ctx.call('auth.account.findByEmail', { email });
134
140
 
135
141
  if (!account) {
136
- throw new Error('email.not.exists');
142
+ throw new MoleculerError('email.not.exists', 400, 'BAD_REQUEST');
137
143
  }
138
144
 
139
145
  await ctx.call('auth.account.setNewPassword', { webId: account.webId, token, password });
@@ -152,7 +158,6 @@ const AuthLocalService = {
152
158
  done(null, returnedData);
153
159
  })
154
160
  .catch(e => {
155
- console.error(e);
156
161
  done(new MoleculerError(e.message, 401), false);
157
162
  });
158
163
  }