ef-keycloak-connect 1.5.1 → 1.5.2
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 +1 -1
- package/services/keycloakService.js +154 -4
- package/services/teamsService.js +0 -0
package/package.json
CHANGED
|
@@ -171,8 +171,9 @@ class KeycloakService extends Keycloak {
|
|
|
171
171
|
|
|
172
172
|
//Fetching Groups data for each user.
|
|
173
173
|
try {
|
|
174
|
-
|
|
174
|
+
let permissions = intrsopectionResponse.data.authorization.permissions;
|
|
175
175
|
let teamData = await this.getUserSupervisedGroups(responseObject.id, responseObject.username);
|
|
176
|
+
//let teamData = await this.getUserSupervisedGroups(responseObject.id, permissions);
|
|
176
177
|
responseObject.userTeam = teamData.userTeam;
|
|
177
178
|
responseObject.supervisedTeams = teamData.supervisedTeams;
|
|
178
179
|
|
|
@@ -796,6 +797,147 @@ class KeycloakService extends Keycloak {
|
|
|
796
797
|
|
|
797
798
|
}
|
|
798
799
|
|
|
800
|
+
|
|
801
|
+
//function to be used only in teams implementation, this function contains teams implementation with permissions/policies
|
|
802
|
+
/*
|
|
803
|
+
async getUserSupervisedGroups(userId, permissions) {
|
|
804
|
+
|
|
805
|
+
return new Promise(async (resolve, reject) => {
|
|
806
|
+
|
|
807
|
+
let error;
|
|
808
|
+
let token;
|
|
809
|
+
var URL = keycloakConfig["auth-server-url"] + 'realms/' + keycloakConfig.realm + '/protocol/openid-connect/token';
|
|
810
|
+
|
|
811
|
+
try {
|
|
812
|
+
|
|
813
|
+
var config = {
|
|
814
|
+
method: 'post',
|
|
815
|
+
url: URL,
|
|
816
|
+
headers: {
|
|
817
|
+
'Accept': 'application/json',
|
|
818
|
+
'cache-control': 'no-cache',
|
|
819
|
+
'Content-Type': 'application/x-www-form-urlencoded'
|
|
820
|
+
},
|
|
821
|
+
data: {
|
|
822
|
+
client_id: keycloakConfig.CLIENT_ID,
|
|
823
|
+
username: keycloakConfig.USERNAME_ADMIN,
|
|
824
|
+
password: keycloakConfig.PASSWORD_ADMIN,
|
|
825
|
+
grant_type: keycloakConfig.GRANT_TYPE,
|
|
826
|
+
client_secret: keycloakConfig.credentials.secret
|
|
827
|
+
}
|
|
828
|
+
};
|
|
829
|
+
|
|
830
|
+
try {
|
|
831
|
+
|
|
832
|
+
let adminTokenResponse = await requestController.httpRequest(config, true);
|
|
833
|
+
token = adminTokenResponse.data.access_token;
|
|
834
|
+
|
|
835
|
+
config.method = 'get';
|
|
836
|
+
delete config.data;
|
|
837
|
+
delete config.url;
|
|
838
|
+
|
|
839
|
+
let URL2 = keycloakConfig["auth-server-url"] + 'admin/realms/' + keycloakConfig.realm + '/users/' + userId + '/groups';
|
|
840
|
+
config.url = URL2;
|
|
841
|
+
config.headers.Authorization = 'Bearer ' + token;
|
|
842
|
+
|
|
843
|
+
try {
|
|
844
|
+
|
|
845
|
+
let userGroup = await requestController.httpRequest(config, true);
|
|
846
|
+
let team = {};
|
|
847
|
+
|
|
848
|
+
if (userGroup.data.length != 0) {
|
|
849
|
+
|
|
850
|
+
|
|
851
|
+
let groups = userGroup.data;
|
|
852
|
+
let userTeam = {};
|
|
853
|
+
|
|
854
|
+
let filteredTeams = groups.filter(group => !group.name.includes('_permission'));
|
|
855
|
+
|
|
856
|
+
if (filteredTeams.length > 0) {
|
|
857
|
+
|
|
858
|
+
userTeam = {
|
|
859
|
+
'teamId': filteredTeams[0].id,
|
|
860
|
+
'teamName': filteredTeams[0].name
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
team.userTeam = userTeam;
|
|
864
|
+
|
|
865
|
+
config.method = 'get';
|
|
866
|
+
delete config.data;
|
|
867
|
+
delete config.url;
|
|
868
|
+
|
|
869
|
+
|
|
870
|
+
let teamPermission = permissions.filter(permission => permission.rsname == 'teams-dashboard');
|
|
871
|
+
team.supervisedTeams = [];
|
|
872
|
+
|
|
873
|
+
if (teamPermission.length > 0) {
|
|
874
|
+
|
|
875
|
+
let permissionScopes = teamPermission[0].scopes;
|
|
876
|
+
|
|
877
|
+
for (let scope of permissionScopes) {
|
|
878
|
+
let teamName = scope.split('-group');
|
|
879
|
+
|
|
880
|
+
let URL3 = keycloakConfig["auth-server-url"] + 'admin/realms/' + keycloakConfig.realm + '/groups?search=' + teamName[0] + '&exact=true';
|
|
881
|
+
config.url = URL3
|
|
882
|
+
|
|
883
|
+
try {
|
|
884
|
+
let groupData = await requestController.httpRequest(config, true);
|
|
885
|
+
|
|
886
|
+
if (groupData.data.length > 0) {
|
|
887
|
+
|
|
888
|
+
let supervisedTeam = {
|
|
889
|
+
'teamId': groupData.data[0].id,
|
|
890
|
+
'teamName': groupData.data[0].name
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
team.supervisedTeams.push(supervisedTeam);
|
|
894
|
+
}
|
|
895
|
+
} catch {
|
|
896
|
+
error = await this.checkErrorType(er);
|
|
897
|
+
reject(error);
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
|
|
901
|
+
resolve(team);
|
|
902
|
+
|
|
903
|
+
} else {
|
|
904
|
+
resolve(team);
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
} else {
|
|
908
|
+
reject({
|
|
909
|
+
status: 403,
|
|
910
|
+
errorMessage: 'No Teams group assigned to User, please assign one Team to user. If user has no team then assign it default group.'
|
|
911
|
+
});
|
|
912
|
+
}
|
|
913
|
+
} else {
|
|
914
|
+
|
|
915
|
+
team.userTeam = {};
|
|
916
|
+
team.supervisedTeams = [];
|
|
917
|
+
|
|
918
|
+
resolve(team);
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
} catch (er) {
|
|
922
|
+
|
|
923
|
+
error = await this.checkErrorType(er);
|
|
924
|
+
reject(error);
|
|
925
|
+
}
|
|
926
|
+
} catch (er) {
|
|
927
|
+
|
|
928
|
+
error = await this.checkErrorType(er);
|
|
929
|
+
reject(error);
|
|
930
|
+
}
|
|
931
|
+
} catch (er) {
|
|
932
|
+
|
|
933
|
+
error = await this.checkErrorType(er);
|
|
934
|
+
reject(error);
|
|
935
|
+
};
|
|
936
|
+
});
|
|
937
|
+
|
|
938
|
+
}
|
|
939
|
+
*/
|
|
940
|
+
|
|
799
941
|
//function to be used only in teams implementation
|
|
800
942
|
async getTeamUsers(keycloakObj, groupsIdsArr, userToken) {
|
|
801
943
|
|
|
@@ -1090,14 +1232,22 @@ class KeycloakService extends Keycloak {
|
|
|
1090
1232
|
|
|
1091
1233
|
} catch (err) {
|
|
1092
1234
|
|
|
1093
|
-
if (err.response) {
|
|
1235
|
+
if (err.response && err.response.status !== 404) {
|
|
1236
|
+
|
|
1094
1237
|
reject({
|
|
1095
1238
|
status: err.response.status,
|
|
1096
1239
|
errorMessage: err.response.data
|
|
1097
1240
|
});
|
|
1098
|
-
}
|
|
1099
1241
|
|
|
1100
|
-
|
|
1242
|
+
} else if(err.message){
|
|
1243
|
+
|
|
1244
|
+
if(err.message !== 'Request failed with status code 404'){
|
|
1245
|
+
reject(err);
|
|
1246
|
+
}
|
|
1247
|
+
|
|
1248
|
+
}else{
|
|
1249
|
+
continue;
|
|
1250
|
+
}
|
|
1101
1251
|
|
|
1102
1252
|
}
|
|
1103
1253
|
|
package/services/teamsService.js
CHANGED
|
File without changes
|