ef-keycloak-connect 1.5.0 → 1.5.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ef-keycloak-connect",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
4
4
  "description": "Node JS keycloak adapter for authentication and authorization.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -148,8 +148,8 @@ class KeycloakService extends Keycloak {
148
148
  let getuserDetails = await requestController.httpRequest(config, true);
149
149
  let responseObject = {
150
150
  'id': getuserDetails.data[0].id,
151
- 'firstName': getuserDetails.data[0].firstName,
152
- 'lastName': getuserDetails.data[0].lastName,
151
+ 'firstName': getuserDetails.data[0].firstName ? getuserDetails.data[0].firstName : '',
152
+ 'lastName': getuserDetails.data[0].lastName ? getuserDetails.data[0].lastName : '',
153
153
  'username': getuserDetails.data[0].username,
154
154
  'permittedResources': {
155
155
  'Resources': intrsopectionResponse.data.authorization.permissions
@@ -184,11 +184,21 @@ class KeycloakService extends Keycloak {
184
184
  resolve(finalObject);
185
185
 
186
186
  } catch (error) {
187
- reject("Error while fetching Groups of User in Auth Process" + error);
187
+ console.log("Error while fetching Groups of User in Auth Process ");
188
+ reject(error);
188
189
  }
189
190
  }
190
191
  catch (error) {
191
- reject("Get all users request not sent" + error);
192
+
193
+ if (error.response) {
194
+ reject({
195
+ error: 'Error while fetching the User Details during Login Process',
196
+ status: error.response.status,
197
+ errorMessage: error.response.data
198
+ });
199
+ }
200
+
201
+ reject("Error while fetching the User Details during Login Process " + error);
192
202
  }
193
203
  }
194
204
  else {
@@ -197,25 +207,61 @@ class KeycloakService extends Keycloak {
197
207
  }
198
208
  }
199
209
  catch (error) {
200
- reject("Admin Request not sent" + error);
210
+
211
+ if (error.response) {
212
+ reject({
213
+ error: 'Error while generating Admin Access Token',
214
+ status: error.response.status,
215
+ errorMessage: error.response.data
216
+ });
217
+ }
218
+
219
+ reject("Error while generating Admin Access Token " + error);
201
220
  }
202
221
  }
203
222
  catch (error) {
204
- reject(error);
223
+ if (error.response) {
224
+ reject({
225
+ error: 'Error while fetching Introspect token',
226
+ status: error.response.status,
227
+ errorMessage: error.response.data
228
+ });
229
+ }
230
+
231
+ reject("Error while fetching Introspect token " + error);
205
232
  }
206
233
  } else {
207
234
  reject("RPT Request Failed");
208
235
  }
209
236
  } catch (error) {
210
- reject(error);
237
+
238
+ if (error.response) {
239
+ reject({
240
+ error: 'Error while fetching RPT token, Please make sure all required Permissions & ' +
241
+ 'Groups are assigned to User. For example, user with role agent must be assigned agents_permission group & all required permissions are created',
242
+ status: error.response.status,
243
+ errorMessage: error.response.data
244
+ });
245
+ }
246
+
247
+ reject("Error while fetching RPT token " + error);
211
248
  }
212
249
  }
213
250
  else {
214
251
  reject("Access Token Request Failed");
215
252
  }
216
253
  }
217
- catch (er) {
218
- reject(er);
254
+ catch (error) {
255
+
256
+ if (error.response) {
257
+ reject({
258
+ error: 'Error while generating Access Token',
259
+ status: error.response.status,
260
+ errorMessage: error.response.data
261
+ });
262
+ }
263
+
264
+ reject("Error while generating Access Token " + error);
219
265
  }
220
266
  });
221
267
  }
@@ -679,42 +725,49 @@ class KeycloakService extends Keycloak {
679
725
 
680
726
  let filteredTeams = groups.filter(group => !group.name.includes('_permission'));
681
727
 
728
+ if (filteredTeams.length > 0) {
682
729
 
683
- userTeam = {
684
- 'teamId': filteredTeams[0].id,
685
- 'teamName': filteredTeams[0].name
686
- }
730
+ userTeam = {
731
+ 'teamId': filteredTeams[0].id,
732
+ 'teamName': filteredTeams[0].name
733
+ }
687
734
 
688
- team.userTeam = userTeam;
735
+ team.userTeam = userTeam;
689
736
 
690
- config.method = 'get';
691
- delete config.data;
692
- delete config.url;
737
+ config.method = 'get';
738
+ delete config.data;
739
+ delete config.url;
693
740
 
694
- let URL3 = keycloakConfig["auth-server-url"] + 'admin/realms/' + keycloakConfig.realm + '/groups';
695
- config.url = URL3;
696
- config.headers.Authorization = 'Bearer ' + token;
741
+ let URL3 = keycloakConfig["auth-server-url"] + 'admin/realms/' + keycloakConfig.realm + '/groups';
742
+ config.url = URL3;
743
+ config.headers.Authorization = 'Bearer ' + token;
697
744
 
698
- try {
745
+ try {
699
746
 
700
- let allGroups = await requestController.httpRequest(config, true);
747
+ let allGroups = await requestController.httpRequest(config, true);
701
748
 
702
- for (let group of allGroups.data) {
749
+ for (let group of allGroups.data) {
703
750
 
704
- let result = await teamsService.getGroupByGroupID(group.id, username, token, keycloakConfig);
751
+ let result = await teamsService.getGroupByGroupID(group.id, username, token, keycloakConfig);
705
752
 
706
- if (result && !result.teamName.includes('_permission')) {
707
- supervisedTeams.push(result);
708
- }
709
- };
753
+ if (result && !result.teamName.includes('_permission')) {
754
+ supervisedTeams.push(result);
755
+ }
756
+ };
710
757
 
711
- team.supervisedTeams = supervisedTeams;
712
- resolve(team);
758
+ team.supervisedTeams = supervisedTeams;
759
+ resolve(team);
713
760
 
714
- } catch (er) {
761
+ } catch (er) {
715
762
 
716
- error = await this.checkErrorType(er);
717
- reject(error);
763
+ error = await this.checkErrorType(er);
764
+ reject(error);
765
+ }
766
+ } else {
767
+ reject({
768
+ status: 403,
769
+ errorMessage: 'No Teams group assigned to User, please assign one Team to user. If user has no team then assign it default group.'
770
+ });
718
771
  }
719
772
  } else {
720
773
 
@@ -1220,10 +1273,16 @@ class KeycloakService extends Keycloak {
1220
1273
 
1221
1274
  }
1222
1275
  catch (err) {
1223
- reject({
1224
- "status": err.response.status,
1225
- "message": err.response.data.error_description
1226
- });
1276
+
1277
+ if (err.response) {
1278
+ reject({
1279
+ "status": err.response.status,
1280
+ "message": err.response.data
1281
+ });
1282
+ }
1283
+
1284
+ reject('Error while assignment of roles to User: ' + err);
1285
+
1227
1286
  }
1228
1287
 
1229
1288
  });
@@ -1233,7 +1292,7 @@ class KeycloakService extends Keycloak {
1233
1292
  async createUser(username, password, token, userRoles) {
1234
1293
 
1235
1294
  let assignRole = [];
1236
- let assignGroups = ['agents_permission', 'default'];
1295
+ let assignGroups = userRoles.includes('supervisor') ? ["agents_permission", "default", "senior_agents_permission"] : ["agents_permission", "default"];
1237
1296
 
1238
1297
  return new Promise(async (resolve, reject) => {
1239
1298
 
@@ -1260,10 +1319,16 @@ class KeycloakService extends Keycloak {
1260
1319
 
1261
1320
  }
1262
1321
  } catch (err) {
1263
- reject({
1264
- "status": err.response.status,
1265
- "message": err.response.data.error_description
1266
- });
1322
+
1323
+ if (err.response) {
1324
+ reject({
1325
+ "status": err.response.status,
1326
+ "message": err.response.data
1327
+ });
1328
+ }
1329
+
1330
+ reject('Error while fetching group against group-name: ' + err);
1331
+
1267
1332
  }
1268
1333
 
1269
1334
  }
@@ -1281,7 +1346,7 @@ class KeycloakService extends Keycloak {
1281
1346
  temporary: false
1282
1347
  }
1283
1348
  ],
1284
- groups: ["agents_permission", "default"]
1349
+ groups: assignGroups
1285
1350
  }
1286
1351
 
1287
1352
  let config = {
@@ -1323,12 +1388,24 @@ class KeycloakService extends Keycloak {
1323
1388
  });
1324
1389
  }
1325
1390
 
1326
- //assigning role to user
1327
- let roleAssigned = await this.assignRoleToUser(userId, assignRole, token);
1391
+ try {
1392
+ //assigning role to user
1393
+ let roleAssigned = await this.assignRoleToUser(userId, assignRole, token);
1394
+
1395
+ //Role assigned with status
1396
+ //Role assigned with status
1397
+ //Role assigned with status
1398
+ if (roleAssigned.status == 204) {
1399
+ resolve(tokenResponse);
1400
+ }
1401
+ } catch (err) {
1402
+
1403
+ if (err.status) {
1404
+ reject(err);
1405
+ }
1406
+
1407
+ reject('Error while Assignment of role to user: ' + err);
1328
1408
 
1329
- //Role assigned with status
1330
- if (roleAssigned.status == 204) {
1331
- resolve(tokenResponse);
1332
1409
  }
1333
1410
 
1334
1411
  } else {
@@ -1340,10 +1417,15 @@ class KeycloakService extends Keycloak {
1340
1417
 
1341
1418
  }
1342
1419
  catch (err) {
1343
- reject({
1344
- "status": err.response.status,
1345
- "message": err.response.data.error_description
1346
- });
1420
+
1421
+ if (err.response) {
1422
+ reject({
1423
+ "status": err.response.status,
1424
+ "message": err.response.data
1425
+ });
1426
+ }
1427
+
1428
+ reject('Error while Creation of User: ' + err);
1347
1429
  }
1348
1430
 
1349
1431
  });
@@ -1668,17 +1750,17 @@ class KeycloakService extends Keycloak {
1668
1750
 
1669
1751
  } catch (err) {
1670
1752
 
1671
- if (err.response.status == 401) {
1672
-
1673
- console.log("User doesn't exist in Keycloak, syncing finesse user in keycloak...");
1753
+ if (err.status) {
1674
1754
 
1675
- } else {
1755
+ if (err.status == 401) {
1676
1756
 
1677
- throw ({
1678
- "status": err.response.status,
1679
- "message": err.response.data.error_description
1680
- });
1757
+ console.log("User doesn't exist in Keycloak, syncing finesse user in keycloak...");
1758
+ } else {
1759
+ throw (err);
1760
+ }
1681
1761
 
1762
+ } else {
1763
+ throw ("Error while fetching keycloak User token: " + err);
1682
1764
  }
1683
1765
 
1684
1766
  } finally {
@@ -1700,10 +1782,12 @@ class KeycloakService extends Keycloak {
1700
1782
  });
1701
1783
 
1702
1784
  } else {
1703
- throw ({
1704
- "status": err.response.status,
1705
- "message": "Error While getting Keycloak admin token: " + err.response.data.error_description
1706
- });
1785
+
1786
+ if (err.status) {
1787
+ throw (err);
1788
+ }
1789
+
1790
+ throw ("Error While getting Keycloak admin token: " + err);
1707
1791
  }
1708
1792
 
1709
1793
  }
@@ -1746,12 +1830,11 @@ class KeycloakService extends Keycloak {
1746
1830
 
1747
1831
  } else {
1748
1832
 
1749
- console.log(err);
1833
+ if (err.status) {
1834
+ throw (err);
1835
+ }
1750
1836
 
1751
- throw ({
1752
- "status": err.response.status,
1753
- "message": "Error While creating Keycloak user: " + err.response.data.error_description
1754
- });
1837
+ throw ("Error While creating Keycloak user: " + err);
1755
1838
  }
1756
1839
  }
1757
1840
  }
@@ -1827,10 +1910,14 @@ class KeycloakService extends Keycloak {
1827
1910
 
1828
1911
  } else {
1829
1912
 
1830
- return ({
1831
- "status": err.response.status,
1832
- "message": "Error: " + err.response.data.error_description
1833
- });
1913
+ if (err.response) {
1914
+ return ({
1915
+ status: error.response.status,
1916
+ errorMessage: error.response.data
1917
+ });
1918
+ }
1919
+
1920
+ return (err);
1834
1921
  }
1835
1922
  }
1836
1923