ef-keycloak-connect 1.5.1 → 1.6.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ef-keycloak-connect",
3
- "version": "1.5.1",
3
+ "version": "1.6.0",
4
4
  "description": "Node JS keycloak adapter for authentication and authorization.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -171,8 +171,8 @@ class KeycloakService extends Keycloak {
171
171
 
172
172
  //Fetching Groups data for each user.
173
173
  try {
174
-
175
- let teamData = await this.getUserSupervisedGroups(responseObject.id, responseObject.username);
174
+ let permissions = intrsopectionResponse.data.authorization.permissions;
175
+ let teamData = await this.getUserSupervisedGroups(responseObject.id, permissions);
176
176
  responseObject.userTeam = teamData.userTeam;
177
177
  responseObject.supervisedTeams = teamData.supervisedTeams;
178
178
 
@@ -670,8 +670,8 @@ class KeycloakService extends Keycloak {
670
670
  });
671
671
  }
672
672
 
673
- //function to be used only in teams implementation
674
- async getUserSupervisedGroups(userId, username) {
673
+ //function to be used only in teams implementation, this function contains teams implementation with permissions/policies
674
+ async getUserSupervisedGroups(userId, permissions) {
675
675
 
676
676
  return new Promise(async (resolve, reject) => {
677
677
 
@@ -721,7 +721,6 @@ class KeycloakService extends Keycloak {
721
721
 
722
722
  let groups = userGroup.data;
723
723
  let userTeam = {};
724
- let supervisedTeams = [];
725
724
 
726
725
  let filteredTeams = groups.filter(group => !group.name.includes('_permission'));
727
726
 
@@ -738,31 +737,44 @@ class KeycloakService extends Keycloak {
738
737
  delete config.data;
739
738
  delete config.url;
740
739
 
741
- let URL3 = keycloakConfig["auth-server-url"] + 'admin/realms/' + keycloakConfig.realm + '/groups';
742
- config.url = URL3;
743
- config.headers.Authorization = 'Bearer ' + token;
744
740
 
745
- try {
741
+ let teamPermission = permissions.filter(permission => permission.rsname == 'teams-dashboard');
742
+ team.supervisedTeams = [];
743
+
744
+ if (teamPermission.length > 0) {
746
745
 
747
- let allGroups = await requestController.httpRequest(config, true);
746
+ let permissionScopes = teamPermission[0].scopes;
748
747
 
749
- for (let group of allGroups.data) {
748
+ for (let scope of permissionScopes) {
749
+ let teamName = scope.split('-group');
750
750
 
751
- let result = await teamsService.getGroupByGroupID(group.id, username, token, keycloakConfig);
751
+ let URL3 = keycloakConfig["auth-server-url"] + 'admin/realms/' + keycloakConfig.realm + '/groups?search=' + teamName[0] + '&exact=true';
752
+ config.url = URL3
752
753
 
753
- if (result && !result.teamName.includes('_permission')) {
754
- supervisedTeams.push(result);
754
+ try {
755
+ let groupData = await requestController.httpRequest(config, true);
756
+
757
+ if (groupData.data.length > 0) {
758
+
759
+ let supervisedTeam = {
760
+ 'teamId': groupData.data[0].id,
761
+ 'teamName': groupData.data[0].name
762
+ }
763
+
764
+ team.supervisedTeams.push(supervisedTeam);
765
+ }
766
+ } catch {
767
+ error = await this.checkErrorType(er);
768
+ reject(error);
755
769
  }
756
- };
770
+ }
757
771
 
758
- team.supervisedTeams = supervisedTeams;
759
772
  resolve(team);
760
773
 
761
- } catch (er) {
762
-
763
- error = await this.checkErrorType(er);
764
- reject(error);
774
+ } else {
775
+ resolve(team);
765
776
  }
777
+
766
778
  } else {
767
779
  reject({
768
780
  status: 403,
File without changes