mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[ADF-4911] migrate identity role service (#5096)
* migrate IdentityRoleService implementation * update unit tests * move interfaces to the origin * move models to proper places * migrate model to interface * fix test * update docs
This commit is contained in:
committed by
Eugenio Romano
parent
3fc9390666
commit
f731988ca6
10
docs/core/services/identity-role.service.md
Normal file
10
docs/core/services/identity-role.service.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
Title: Identity role service
|
||||||
|
Added: v3.5.0
|
||||||
|
Status: Active
|
||||||
|
Last reviewed: 2019-09-24
|
||||||
|
---
|
||||||
|
|
||||||
|
# [Identity role service](../../../lib/core/userinfo/services/identity-role.service.ts "Defined in identity-role.service.ts")
|
||||||
|
|
||||||
|
Provides APIs for working with the Roles in Identity Services.
|
@@ -20,7 +20,7 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|||||||
import { CommentModel, UserProcessModel } from '../models';
|
import { CommentModel, UserProcessModel } from '../models';
|
||||||
import { CommentListComponent } from './comment-list.component';
|
import { CommentListComponent } from './comment-list.component';
|
||||||
import { By } from '@angular/platform-browser';
|
import { By } from '@angular/platform-browser';
|
||||||
import { EcmUserService } from '../userinfo/services/ecm-user.service';
|
import { EcmUserService } from '../services/ecm-user.service';
|
||||||
import { PeopleProcessService } from '../services/people-process.service';
|
import { PeopleProcessService } from '../services/people-process.service';
|
||||||
import { setupTestBed } from '../testing/setupTestBed';
|
import { setupTestBed } from '../testing/setupTestBed';
|
||||||
import { CoreTestingModule } from '../testing/core.testing.module';
|
import { CoreTestingModule } from '../testing/core.testing.module';
|
||||||
|
@@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
import { Component, EventEmitter, Input, Output, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core';
|
import { Component, EventEmitter, Input, Output, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core';
|
||||||
import { CommentModel } from '../models/comment.model';
|
import { CommentModel } from '../models/comment.model';
|
||||||
import { EcmUserService } from '../userinfo/services/ecm-user.service';
|
import { EcmUserService } from '../services/ecm-user.service';
|
||||||
import { PeopleProcessService } from '../services/people-process.service';
|
import { PeopleProcessService } from '../services/people-process.service';
|
||||||
import { UserPreferencesService, UserPreferenceValues } from '../services/user-preferences.service';
|
import { UserPreferencesService, UserPreferenceValues } from '../services/user-preferences.service';
|
||||||
import { Subject } from 'rxjs';
|
import { Subject } from 'rxjs';
|
||||||
|
@@ -15,8 +15,8 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { IdentityGroupModel, IdentityGroupCountModel } from '../userinfo/models/identity-group.model';
|
import { IdentityGroupModel, IdentityGroupCountModel } from '../models/identity-group.model';
|
||||||
import { IdentityRoleModel } from '../userinfo/models/identity-role.model';
|
import { IdentityRoleModel } from '../models/identity-role.model';
|
||||||
|
|
||||||
export let mockIdentityGroup1 = new IdentityGroupModel({
|
export let mockIdentityGroup1 = new IdentityGroupModel({
|
||||||
id: 'mock-group-id-1', name: 'Mock Group 1', path: '/mock', subGroups: []
|
id: 'mock-group-id-1', name: 'Mock Group 1', path: '/mock', subGroups: []
|
||||||
|
@@ -15,31 +15,18 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { IdentityUserModel, IdentityJoinGroupRequestModel } from './../userinfo/models/identity-user.model';
|
import { IdentityUserModel } from '../models/identity-user.model';
|
||||||
import { IdentityRoleModel } from './../userinfo/models/identity-role.model';
|
import { IdentityRoleModel } from '../models/identity-role.model';
|
||||||
import { IdentityGroupModel } from './../userinfo/models/identity-group.model';
|
import { IdentityGroupModel } from '../models/identity-group.model';
|
||||||
|
import { IdentityJoinGroupRequestModel } from '../services/identity-user.service';
|
||||||
|
|
||||||
export let mockIdentityUser1 = new IdentityUserModel(
|
export const mockIdentityUser1: IdentityUserModel = { id: 'mock-user-id-1', username: 'userName1', firstName: 'first-name-1', lastName: 'last-name-1', email: 'abc@xyz.com' };
|
||||||
{ id: 'mock-user-id-1', username: 'userName1', firstName: 'first-name-1', lastName: 'last-name-1', email: 'abc@xyz.com' }
|
export const mockIdentityUser2: IdentityUserModel = { id: 'mock-user-id-2', username: 'userName2', firstName: 'first-name-2', lastName: 'last-name-2', email: 'abcd@xyz.com'};
|
||||||
);
|
export const mockIdentityUser3: IdentityUserModel = { id: 'mock-user-id-3', username: 'userName3', firstName: 'first-name-3', lastName: 'last-name-3', email: 'abcde@xyz.com' };
|
||||||
|
export const mockIdentityUser4: IdentityUserModel = { id: 'mock-user-id-4', username: 'userName4', firstName: 'first-name-4', lastName: 'last-name-4', email: 'abcde@xyz.com' };
|
||||||
|
export let mockIdentityUser5: IdentityUserModel = { id: 'mock-user-id-5', username: 'userName5', firstName: 'first-name-5', lastName: 'last-name-5', email: 'abcde@xyz.com' };
|
||||||
|
|
||||||
export let mockIdentityUser2 = new IdentityUserModel(
|
export const mockIdentityUsers: IdentityUserModel[] = [
|
||||||
{ id: 'mock-user-id-2', username: 'userName2', firstName: 'first-name-2', lastName: 'last-name-2', email: 'abcd@xyz.com'}
|
|
||||||
);
|
|
||||||
|
|
||||||
export let mockIdentityUser3 = new IdentityUserModel(
|
|
||||||
{ id: 'mock-user-id-3', username: 'userName3', firstName: 'first-name-3', lastName: 'last-name-3', email: 'abcde@xyz.com' }
|
|
||||||
);
|
|
||||||
|
|
||||||
export let mockIdentityUser4 = new IdentityUserModel(
|
|
||||||
{ id: 'mock-user-id-4', username: 'userName4', firstName: 'first-name-4', lastName: 'last-name-4', email: 'abcde@xyz.com' }
|
|
||||||
);
|
|
||||||
|
|
||||||
export let mockIdentityUser5 = new IdentityUserModel(
|
|
||||||
{ id: 'mock-user-id-5', username: 'userName5', firstName: 'first-name-5', lastName: 'last-name-5', email: 'abcde@xyz.com' }
|
|
||||||
);
|
|
||||||
|
|
||||||
export let mockIdentityUsers = [
|
|
||||||
mockIdentityUser1,
|
mockIdentityUser1,
|
||||||
mockIdentityUser2,
|
mockIdentityUser2,
|
||||||
mockIdentityUser3,
|
mockIdentityUser3,
|
||||||
@@ -47,43 +34,43 @@ export let mockIdentityUsers = [
|
|||||||
mockIdentityUser5
|
mockIdentityUser5
|
||||||
];
|
];
|
||||||
|
|
||||||
export let mockIdentityRole = new IdentityRoleModel({ id: 'id-1', name: 'MOCK-ADMIN-ROLE'});
|
export const mockIdentityRole = new IdentityRoleModel({ id: 'id-1', name: 'MOCK-ADMIN-ROLE'});
|
||||||
|
|
||||||
export let mockAvailableRoles = [
|
export const mockAvailableRoles = [
|
||||||
new IdentityRoleModel({ id: 'mock-role-id-1', name: 'MOCK-ADMIN-ROLE'}),
|
new IdentityRoleModel({ id: 'mock-role-id-1', name: 'MOCK-ADMIN-ROLE'}),
|
||||||
new IdentityRoleModel({ id: 'mock-role-id-2', name: 'MOCK-USER-ROLE'}),
|
new IdentityRoleModel({ id: 'mock-role-id-2', name: 'MOCK-USER-ROLE'}),
|
||||||
new IdentityRoleModel({ id: 'mock-role-id-3', name: 'MOCK_MODELER-ROLE' }),
|
new IdentityRoleModel({ id: 'mock-role-id-3', name: 'MOCK_MODELER-ROLE' }),
|
||||||
new IdentityRoleModel({ id: 'mock-role-id-5', name: 'MOCK-ROLE-2'})
|
new IdentityRoleModel({ id: 'mock-role-id-5', name: 'MOCK-ROLE-2'})
|
||||||
];
|
];
|
||||||
|
|
||||||
export let mockAssignedRoles = [
|
export const mockAssignedRoles = [
|
||||||
new IdentityRoleModel({ id: 'mock-role-id-1', name: 'MOCK-ADMIN-ROLE'}),
|
new IdentityRoleModel({ id: 'mock-role-id-1', name: 'MOCK-ADMIN-ROLE'}),
|
||||||
new IdentityRoleModel({ id: 'mock-role-id-2', name: 'MOCK_MODELER-ROLE' }),
|
new IdentityRoleModel({ id: 'mock-role-id-2', name: 'MOCK_MODELER-ROLE' }),
|
||||||
new IdentityRoleModel({ id: 'mock-role-id-3', name: 'MOCK-ROLE-1' })
|
new IdentityRoleModel({ id: 'mock-role-id-3', name: 'MOCK-ROLE-1' })
|
||||||
];
|
];
|
||||||
|
|
||||||
export let mockEffectiveRoles = [
|
export const mockEffectiveRoles = [
|
||||||
new IdentityRoleModel({id: 'mock-role-id-1', name: 'MOCK-ACTIVE-ADMIN-ROLE'}),
|
new IdentityRoleModel({id: 'mock-role-id-1', name: 'MOCK-ACTIVE-ADMIN-ROLE'}),
|
||||||
new IdentityRoleModel({id: 'mock-role-id-2', name: 'MOCK-ACTIVE-USER-ROLE'}),
|
new IdentityRoleModel({id: 'mock-role-id-2', name: 'MOCK-ACTIVE-USER-ROLE'}),
|
||||||
new IdentityRoleModel({id: 'mock-role-id-3', name: 'MOCK-ROLE-1'})
|
new IdentityRoleModel({id: 'mock-role-id-3', name: 'MOCK-ROLE-1'})
|
||||||
];
|
];
|
||||||
|
|
||||||
export let mockJoinGroupRequest = new IdentityJoinGroupRequestModel({userId: 'mock-hser-id', groupId: 'mock-group-id', realm: 'mock-realm-name'});
|
export const mockJoinGroupRequest: IdentityJoinGroupRequestModel = {userId: 'mock-hser-id', groupId: 'mock-group-id', realm: 'mock-realm-name'};
|
||||||
|
|
||||||
export let mockGroup1 = new IdentityGroupModel({
|
export const mockGroup1 = new IdentityGroupModel({
|
||||||
id: 'mock-group-id-1', name: 'Mock Group 1', path: '/mock', subGroups: []
|
id: 'mock-group-id-1', name: 'Mock Group 1', path: '/mock', subGroups: []
|
||||||
});
|
});
|
||||||
|
|
||||||
export let mockGroup2 = new IdentityGroupModel({
|
export const mockGroup2 = new IdentityGroupModel({
|
||||||
id: 'mock-group-id-2', name: 'Mock Group 2', path: '', subGroups: []
|
id: 'mock-group-id-2', name: 'Mock Group 2', path: '', subGroups: []
|
||||||
});
|
});
|
||||||
|
|
||||||
export let mockGroups = [
|
export const mockGroups = [
|
||||||
new IdentityGroupModel({ id: 'mock-group-id-1', name: 'Mock Group 1', path: '/mock', subGroups: [] }),
|
new IdentityGroupModel({ id: 'mock-group-id-1', name: 'Mock Group 1', path: '/mock', subGroups: [] }),
|
||||||
new IdentityGroupModel({ id: 'mock-group-id-2', name: 'Mock Group 2', path: '', subGroups: [] })
|
new IdentityGroupModel({ id: 'mock-group-id-2', name: 'Mock Group 2', path: '', subGroups: [] })
|
||||||
];
|
];
|
||||||
|
|
||||||
export let queryUsersMockApi = {
|
export const queryUsersMockApi = {
|
||||||
oauth2Auth: {
|
oauth2Auth: {
|
||||||
callCustomApi: () => {
|
callCustomApi: () => {
|
||||||
return Promise.resolve(mockIdentityUsers);
|
return Promise.resolve(mockIdentityUsers);
|
||||||
@@ -91,7 +78,7 @@ export let queryUsersMockApi = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export let createUserMockApi = {
|
export const createUserMockApi = {
|
||||||
oauth2Auth: {
|
oauth2Auth: {
|
||||||
callCustomApi: () => {
|
callCustomApi: () => {
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
@@ -99,7 +86,7 @@ export let createUserMockApi = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export let updateUserMockApi = {
|
export const updateUserMockApi = {
|
||||||
oauth2Auth: {
|
oauth2Auth: {
|
||||||
callCustomApi: () => {
|
callCustomApi: () => {
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
@@ -107,7 +94,7 @@ export let updateUserMockApi = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export let deleteUserMockApi = {
|
export const deleteUserMockApi = {
|
||||||
oauth2Auth: {
|
oauth2Auth: {
|
||||||
callCustomApi: () => {
|
callCustomApi: () => {
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
@@ -115,7 +102,7 @@ export let deleteUserMockApi = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export let getInvolvedGroupsMockApi = {
|
export const getInvolvedGroupsMockApi = {
|
||||||
oauth2Auth: {
|
oauth2Auth: {
|
||||||
callCustomApi: () => {
|
callCustomApi: () => {
|
||||||
return Promise.resolve(mockGroups);
|
return Promise.resolve(mockGroups);
|
||||||
@@ -123,7 +110,7 @@ export let getInvolvedGroupsMockApi = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export let joinGroupMockApi = {
|
export const joinGroupMockApi = {
|
||||||
oauth2Auth: {
|
oauth2Auth: {
|
||||||
callCustomApi: () => {
|
callCustomApi: () => {
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
@@ -131,7 +118,7 @@ export let joinGroupMockApi = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export let leaveGroupMockApi = {
|
export const leaveGroupMockApi = {
|
||||||
oauth2Auth: {
|
oauth2Auth: {
|
||||||
callCustomApi: () => {
|
callCustomApi: () => {
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
@@ -139,7 +126,7 @@ export let leaveGroupMockApi = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export let getAvailableRolesMockApi = {
|
export const getAvailableRolesMockApi = {
|
||||||
oauth2Auth: {
|
oauth2Auth: {
|
||||||
callCustomApi: () => {
|
callCustomApi: () => {
|
||||||
return Promise.resolve(mockAvailableRoles);
|
return Promise.resolve(mockAvailableRoles);
|
||||||
@@ -147,7 +134,7 @@ export let getAvailableRolesMockApi = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export let getAssignedRolesMockApi = {
|
export const getAssignedRolesMockApi = {
|
||||||
oauth2Auth: {
|
oauth2Auth: {
|
||||||
callCustomApi: () => {
|
callCustomApi: () => {
|
||||||
return Promise.resolve(mockAssignedRoles);
|
return Promise.resolve(mockAssignedRoles);
|
||||||
@@ -155,7 +142,7 @@ export let getAssignedRolesMockApi = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export let getEffectiveRolesMockApi = {
|
export const getEffectiveRolesMockApi = {
|
||||||
oauth2Auth: {
|
oauth2Auth: {
|
||||||
callCustomApi: () => {
|
callCustomApi: () => {
|
||||||
return Promise.resolve(mockEffectiveRoles);
|
return Promise.resolve(mockEffectiveRoles);
|
||||||
@@ -163,7 +150,7 @@ export let getEffectiveRolesMockApi = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export let assignRolesMockApi = {
|
export const assignRolesMockApi = {
|
||||||
oauth2Auth: {
|
oauth2Auth: {
|
||||||
callCustomApi: () => {
|
callCustomApi: () => {
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
@@ -171,7 +158,7 @@ export let assignRolesMockApi = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export let removeRolesMockApi = {
|
export const removeRolesMockApi = {
|
||||||
oauth2Auth: {
|
oauth2Auth: {
|
||||||
callCustomApi: () => {
|
callCustomApi: () => {
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
|
@@ -16,7 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Person } from '@alfresco/js-api';
|
import { Person } from '@alfresco/js-api';
|
||||||
import { EcmCompanyModel } from '../../models/ecm-company.model';
|
import { EcmCompanyModel } from './ecm-company.model';
|
||||||
|
|
||||||
export class EcmUserModel implements Person {
|
export class EcmUserModel implements Person {
|
||||||
id: string;
|
id: string;
|
27
lib/core/models/identity-user.model.ts
Normal file
27
lib/core/models/identity-user.model.ts
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export interface IdentityUserModel {
|
||||||
|
id?: string;
|
||||||
|
firstName?: string;
|
||||||
|
lastName?: string;
|
||||||
|
email?: string;
|
||||||
|
username?: string;
|
||||||
|
createdTimestamp?: any;
|
||||||
|
emailVerified?: boolean;
|
||||||
|
enabled?: boolean;
|
||||||
|
}
|
@@ -27,3 +27,9 @@ export * from './pagination.model';
|
|||||||
export * from './oauth-config.model';
|
export * from './oauth-config.model';
|
||||||
export * from './request-pagination.model';
|
export * from './request-pagination.model';
|
||||||
export * from './decimal-number.model';
|
export * from './decimal-number.model';
|
||||||
|
export * from './bpm-user.model';
|
||||||
|
export * from './ecm-user.model';
|
||||||
|
export * from './identity-group.model';
|
||||||
|
export * from './identity-user.model';
|
||||||
|
export * from './identity-role.model';
|
||||||
|
export * from './identity-group.model';
|
||||||
|
@@ -18,7 +18,7 @@
|
|||||||
import { Pipe, PipeTransform } from '@angular/core';
|
import { Pipe, PipeTransform } from '@angular/core';
|
||||||
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
|
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
|
||||||
import { UserProcessModel } from '../models/user-process.model';
|
import { UserProcessModel } from '../models/user-process.model';
|
||||||
import { EcmUserModel } from '../userinfo/models/ecm-user.model';
|
import { EcmUserModel } from '../models/ecm-user.model';
|
||||||
|
|
||||||
@Pipe({
|
@Pipe({
|
||||||
name: 'usernameInitials'
|
name: 'usernameInitials'
|
||||||
@@ -37,7 +37,7 @@ export class InitialUsernamePipe implements PipeTransform {
|
|||||||
return safeHtml;
|
return safeHtml;
|
||||||
}
|
}
|
||||||
|
|
||||||
getInitialUserName(firstName: string, lastName: string, delimiter: string) {
|
getInitialUserName(firstName: string, lastName: string, delimiter: string): string {
|
||||||
firstName = (firstName ? firstName[0] : '');
|
firstName = (firstName ? firstName[0] : '');
|
||||||
lastName = (lastName ? lastName[0] : '');
|
lastName = (lastName ? lastName[0] : '');
|
||||||
return firstName + delimiter + lastName;
|
return firstName + delimiter + lastName;
|
||||||
|
@@ -18,10 +18,10 @@
|
|||||||
import { TestBed } from '@angular/core/testing';
|
import { TestBed } from '@angular/core/testing';
|
||||||
import { BpmUserModel } from '../models/bpm-user.model';
|
import { BpmUserModel } from '../models/bpm-user.model';
|
||||||
import { BpmUserService } from '../services/bpm-user.service';
|
import { BpmUserService } from '../services/bpm-user.service';
|
||||||
import { setupTestBed } from '../../testing/setupTestBed';
|
import { setupTestBed } from '../testing/setupTestBed';
|
||||||
import { CoreModule } from '../../core.module';
|
import { CoreModule } from '../core.module';
|
||||||
import { AlfrescoApiService } from '../../services/alfresco-api.service';
|
import { AlfrescoApiService } from './alfresco-api.service';
|
||||||
import { AlfrescoApiServiceMock } from '../../mock/alfresco-api.service.mock';
|
import { AlfrescoApiServiceMock } from '../mock/alfresco-api.service.mock';
|
||||||
|
|
||||||
declare let jasmine: any;
|
declare let jasmine: any;
|
||||||
|
|
@@ -17,8 +17,8 @@
|
|||||||
|
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Observable, from, throwError } from 'rxjs';
|
import { Observable, from, throwError } from 'rxjs';
|
||||||
import { AlfrescoApiService } from '../../services/alfresco-api.service';
|
import { AlfrescoApiService } from './alfresco-api.service';
|
||||||
import { LogService } from '../../services/log.service';
|
import { LogService } from './log.service';
|
||||||
import { BpmUserModel } from '../models/bpm-user.model';
|
import { BpmUserModel } from '../models/bpm-user.model';
|
||||||
import { map, catchError } from 'rxjs/operators';
|
import { map, catchError } from 'rxjs/operators';
|
||||||
import { UserRepresentation } from '@alfresco/js-api';
|
import { UserRepresentation } from '@alfresco/js-api';
|
@@ -16,12 +16,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { TestBed } from '@angular/core/testing';
|
import { TestBed } from '@angular/core/testing';
|
||||||
import { AuthenticationService, ContentService, AlfrescoApiService } from '../../services';
|
import { AuthenticationService, ContentService, AlfrescoApiService } from '.';
|
||||||
import { fakeEcmUser } from '../../mock/ecm-user.service.mock';
|
import { fakeEcmUser } from '../mock/ecm-user.service.mock';
|
||||||
import { EcmUserService } from '../services/ecm-user.service';
|
import { EcmUserService } from '../services/ecm-user.service';
|
||||||
import { setupTestBed } from '../../testing/setupTestBed';
|
import { setupTestBed } from '../testing/setupTestBed';
|
||||||
import { CoreModule } from '../../core.module';
|
import { CoreModule } from '../core.module';
|
||||||
import { AlfrescoApiServiceMock } from '../../mock/alfresco-api.service.mock';
|
import { AlfrescoApiServiceMock } from '../mock/alfresco-api.service.mock';
|
||||||
|
|
||||||
declare let jasmine: any;
|
declare let jasmine: any;
|
||||||
|
|
@@ -18,9 +18,9 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Observable, from, throwError } from 'rxjs';
|
import { Observable, from, throwError } from 'rxjs';
|
||||||
import { map, catchError } from 'rxjs/operators';
|
import { map, catchError } from 'rxjs/operators';
|
||||||
import { ContentService } from '../../services/content.service';
|
import { ContentService } from './content.service';
|
||||||
import { AlfrescoApiService } from '../../services/alfresco-api.service';
|
import { AlfrescoApiService } from './alfresco-api.service';
|
||||||
import { LogService } from '../../services/log.service';
|
import { LogService } from './log.service';
|
||||||
import { EcmUserModel } from '../models/ecm-user.model';
|
import { EcmUserModel } from '../models/ecm-user.model';
|
||||||
import { PersonEntry } from '@alfresco/js-api';
|
import { PersonEntry } from '@alfresco/js-api';
|
||||||
|
|
@@ -44,7 +44,7 @@ import {
|
|||||||
updateGroupMappingApi,
|
updateGroupMappingApi,
|
||||||
deleteGroupMappingApi,
|
deleteGroupMappingApi,
|
||||||
mockIdentityGroupsCount
|
mockIdentityGroupsCount
|
||||||
} from '../../mock/identity-group.service.mock';
|
} from '../mock/identity-group.service.mock';
|
||||||
|
|
||||||
describe('IdentityGroupService', () => {
|
describe('IdentityGroupService', () => {
|
||||||
let service: IdentityGroupService;
|
let service: IdentityGroupService;
|
@@ -18,9 +18,9 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Observable, of, from, throwError } from 'rxjs';
|
import { Observable, of, from, throwError } from 'rxjs';
|
||||||
import { catchError, map, switchMap } from 'rxjs/operators';
|
import { catchError, map, switchMap } from 'rxjs/operators';
|
||||||
import { AppConfigService } from '../../app-config/app-config.service';
|
import { AppConfigService } from '../app-config/app-config.service';
|
||||||
import { AlfrescoApiService } from '../../services/alfresco-api.service';
|
import { AlfrescoApiService } from './alfresco-api.service';
|
||||||
import { LogService } from '../../services/log.service';
|
import { LogService } from './log.service';
|
||||||
import {
|
import {
|
||||||
IdentityGroupSearchParam,
|
IdentityGroupSearchParam,
|
||||||
IdentityGroupQueryCloudRequestModel,
|
IdentityGroupQueryCloudRequestModel,
|
140
lib/core/services/identity-role.service.spec.ts
Normal file
140
lib/core/services/identity-role.service.spec.ts
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { setupTestBed } from '@alfresco/adf-core';
|
||||||
|
import { HttpClientModule, HttpErrorResponse, HttpResponse } from '@angular/common/http';
|
||||||
|
import { TestBed } from '@angular/core/testing';
|
||||||
|
import { of, throwError } from 'rxjs';
|
||||||
|
import { IdentityRoleResponseModel, IdentityRoleService } from './identity-role.service';
|
||||||
|
|
||||||
|
export let mockIdentityRole1 = {
|
||||||
|
id: 'mock-id-1', name: 'Mock_Role_1', description: 'Mock desc1', clientRole: true, composite: false
|
||||||
|
};
|
||||||
|
|
||||||
|
export let mockIdentityRole2 = {
|
||||||
|
id: 'mock-id-2', name: 'Mock_Role_2', description: 'Mock desc2', clientRole: false, composite: true
|
||||||
|
};
|
||||||
|
|
||||||
|
export let mockIdentityRole3 = {
|
||||||
|
id: 'mock-id-3', name: 'Mock_Role_3', description: 'Mock desc3', clientRole: false, composite: false
|
||||||
|
};
|
||||||
|
|
||||||
|
export let mockIdentityRoles = {
|
||||||
|
entries: [
|
||||||
|
mockIdentityRole1, mockIdentityRole2, mockIdentityRole3
|
||||||
|
],
|
||||||
|
pagination: {
|
||||||
|
skipCount: 1,
|
||||||
|
maxItems: 5,
|
||||||
|
count: 100,
|
||||||
|
hasMoreItems: false,
|
||||||
|
totalItems: 100
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
describe('IdentityRoleService', () => {
|
||||||
|
let service: IdentityRoleService;
|
||||||
|
|
||||||
|
setupTestBed({
|
||||||
|
imports: [
|
||||||
|
HttpClientModule
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
service = TestBed.get(IdentityRoleService);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Should fetch roles', () => {
|
||||||
|
spyOn(service, 'getRoles').and.returnValue(of(mockIdentityRoles));
|
||||||
|
service.getRoles().subscribe((response: IdentityRoleResponseModel) => {
|
||||||
|
expect(response).toBeDefined();
|
||||||
|
|
||||||
|
expect(response.entries[0]).toEqual(mockIdentityRole1);
|
||||||
|
expect(response.entries[1]).toEqual(mockIdentityRole2);
|
||||||
|
expect(response.entries[2]).toEqual(mockIdentityRole3);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be able to add role', (done) => {
|
||||||
|
const response = new HttpResponse({
|
||||||
|
body: [],
|
||||||
|
'status': 201,
|
||||||
|
'statusText': 'Created'
|
||||||
|
});
|
||||||
|
spyOn(service, 'addRole').and.returnValue(of(response));
|
||||||
|
service.addRole(mockIdentityRole1).subscribe(
|
||||||
|
(res: any) => {
|
||||||
|
expect(res).toBeDefined();
|
||||||
|
expect(res.status).toEqual(201);
|
||||||
|
expect(res.statusText).toEqual('Created');
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Should not add role if error occurred', () => {
|
||||||
|
const errorResponse = new HttpErrorResponse({
|
||||||
|
error: 'test 404 error',
|
||||||
|
status: 404, statusText: 'Not Found'
|
||||||
|
});
|
||||||
|
spyOn(service, 'addRole').and.returnValue(throwError(errorResponse));
|
||||||
|
service.addRole(mockIdentityRole1)
|
||||||
|
.subscribe(
|
||||||
|
() => fail('expected an error'),
|
||||||
|
(error) => {
|
||||||
|
expect(error.status).toEqual(404);
|
||||||
|
expect(error.statusText).toEqual('Not Found');
|
||||||
|
expect(error.error).toEqual('test 404 error');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be able to delete role', (done) => {
|
||||||
|
const response = new HttpResponse({
|
||||||
|
body: [],
|
||||||
|
'status': 204,
|
||||||
|
'statusText': 'No Content'
|
||||||
|
});
|
||||||
|
spyOn(service, 'deleteRole').and.returnValue(of(response));
|
||||||
|
service.deleteRole(mockIdentityRole1).subscribe(
|
||||||
|
(res: any) => {
|
||||||
|
expect(res).toBeDefined();
|
||||||
|
expect(res.status).toEqual(204);
|
||||||
|
expect(res.statusText).toEqual('No Content');
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Should not delete role if error occurred', () => {
|
||||||
|
const errorResponse = new HttpErrorResponse({
|
||||||
|
error: 'test 404 error',
|
||||||
|
status: 404, statusText: 'Not Found'
|
||||||
|
});
|
||||||
|
spyOn(service, 'deleteRole').and.returnValue(throwError(errorResponse));
|
||||||
|
service.deleteRole(mockIdentityRole1)
|
||||||
|
.subscribe(
|
||||||
|
() => fail('expected an error'),
|
||||||
|
(error) => {
|
||||||
|
expect(error.status).toEqual(404);
|
||||||
|
expect(error.statusText).toEqual('Not Found');
|
||||||
|
expect(error.error).toEqual('test 404 error');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
128
lib/core/services/identity-role.service.ts
Normal file
128
lib/core/services/identity-role.service.ts
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
import { throwError as observableThrowError, Observable } from 'rxjs';
|
||||||
|
import { catchError, map } from 'rxjs/operators';
|
||||||
|
import { Pagination } from '@alfresco/js-api';
|
||||||
|
import { IdentityRoleModel } from '../models/identity-role.model';
|
||||||
|
import { AppConfigService } from '../app-config/app-config.service';
|
||||||
|
import { LogService } from './log.service';
|
||||||
|
|
||||||
|
export interface IdentityRoleResponseModel {
|
||||||
|
entries: IdentityRoleModel[];
|
||||||
|
pagination: Pagination;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class IdentityRoleService {
|
||||||
|
contextRoot = '';
|
||||||
|
identityHost = '';
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
protected http: HttpClient,
|
||||||
|
protected appConfig: AppConfigService,
|
||||||
|
protected logService: LogService
|
||||||
|
) {
|
||||||
|
this.contextRoot = this.appConfig.get('apiHost', '');
|
||||||
|
this.identityHost = this.appConfig.get('identityHost');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ret all roles
|
||||||
|
* @returns List of roles
|
||||||
|
*/
|
||||||
|
getRoles(
|
||||||
|
skipCount: number = 0,
|
||||||
|
size: number = 5
|
||||||
|
): Observable<IdentityRoleResponseModel> {
|
||||||
|
return this.http.get<any>(`${this.identityHost}/roles`).pipe(
|
||||||
|
map(res => {
|
||||||
|
return this.preparePaginationWithRoles(res, skipCount, size);
|
||||||
|
}),
|
||||||
|
catchError(error => this.handleError(error))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private preparePaginationWithRoles(
|
||||||
|
roles: IdentityRoleModel[],
|
||||||
|
skipCount: number = 0,
|
||||||
|
size: number = 5
|
||||||
|
): IdentityRoleResponseModel {
|
||||||
|
return {
|
||||||
|
entries: roles.slice(skipCount, skipCount + size),
|
||||||
|
pagination: {
|
||||||
|
skipCount: skipCount,
|
||||||
|
maxItems: size,
|
||||||
|
count: roles.length,
|
||||||
|
hasMoreItems: false,
|
||||||
|
totalItems: roles.length
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add new role
|
||||||
|
* @param newRole Role model
|
||||||
|
* @returns Server result payload
|
||||||
|
*/
|
||||||
|
addRole(newRole: IdentityRoleModel): Observable<any> {
|
||||||
|
if (newRole) {
|
||||||
|
const request = newRole;
|
||||||
|
return this.http
|
||||||
|
.post(`${this.identityHost}/roles`, request)
|
||||||
|
.pipe(catchError(error => this.handleError(error)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete existing role
|
||||||
|
* @param deletedRole Role model
|
||||||
|
* @returns Server result payload
|
||||||
|
*/
|
||||||
|
deleteRole(deletedRole: IdentityRoleModel): Observable<any> {
|
||||||
|
return this.http
|
||||||
|
.delete(`${this.identityHost}/roles-by-id/${deletedRole.id}`)
|
||||||
|
.pipe(catchError(error => this.handleError(error)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update existing role
|
||||||
|
* @param updatedRole Role model
|
||||||
|
* @param roleId Role id
|
||||||
|
* @returns Server result payload
|
||||||
|
*/
|
||||||
|
updateRole(
|
||||||
|
updatedRole: IdentityRoleModel,
|
||||||
|
roleId: string
|
||||||
|
): Observable<any> {
|
||||||
|
if (updatedRole && roleId) {
|
||||||
|
const request = updatedRole;
|
||||||
|
return this.http
|
||||||
|
.put(`${this.identityHost}/roles-by-id/${roleId}`, request)
|
||||||
|
.pipe(catchError(error => this.handleError(error)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private handleError(error: any) {
|
||||||
|
this.logService.error(error);
|
||||||
|
return observableThrowError(error || 'Server error');
|
||||||
|
}
|
||||||
|
}
|
@@ -38,13 +38,12 @@ import {
|
|||||||
mockJoinGroupRequest
|
mockJoinGroupRequest
|
||||||
} from 'core/mock/identity-user.service.mock';
|
} from 'core/mock/identity-user.service.mock';
|
||||||
import { IdentityUserService } from '../services/identity-user.service';
|
import { IdentityUserService } from '../services/identity-user.service';
|
||||||
import { setupTestBed } from '../../testing/setupTestBed';
|
import { setupTestBed } from '../testing/setupTestBed';
|
||||||
import { CoreModule } from '../../core.module';
|
import { CoreModule } from '../core.module';
|
||||||
import { AlfrescoApiService } from '../../services/alfresco-api.service';
|
import { AlfrescoApiService } from './alfresco-api.service';
|
||||||
import { mockToken } from './../../mock/jwt-helper.service.spec';
|
import { mockToken } from '../mock/jwt-helper.service.spec';
|
||||||
import { IdentityUserModel, IdentityUserQueryCloudRequestModel } from '../models/identity-user.model';
|
|
||||||
import { IdentityRoleModel } from '../models/identity-role.model';
|
import { IdentityRoleModel } from '../models/identity-role.model';
|
||||||
import { AlfrescoApiServiceMock } from '../../mock/alfresco-api.service.mock';
|
import { AlfrescoApiServiceMock } from '../mock/alfresco-api.service.mock';
|
||||||
|
|
||||||
describe('IdentityUserService', () => {
|
describe('IdentityUserService', () => {
|
||||||
|
|
||||||
@@ -97,7 +96,7 @@ describe('IdentityUserService', () => {
|
|||||||
it('should fetch users ', (done) => {
|
it('should fetch users ', (done) => {
|
||||||
spyOn(service, 'getUsers').and.returnValue(of(mockIdentityUsers));
|
spyOn(service, 'getUsers').and.returnValue(of(mockIdentityUsers));
|
||||||
service.getUsers().subscribe(
|
service.getUsers().subscribe(
|
||||||
(res: IdentityUserModel[]) => {
|
res => {
|
||||||
expect(res).toBeDefined();
|
expect(res).toBeDefined();
|
||||||
expect(res[0].id).toEqual('mock-user-id-1');
|
expect(res[0].id).toEqual('mock-user-id-1');
|
||||||
expect(res[0].username).toEqual('userName1');
|
expect(res[0].username).toEqual('userName1');
|
||||||
@@ -171,7 +170,7 @@ describe('IdentityUserService', () => {
|
|||||||
spyOn(service, 'getUserRoles').and.returnValue(of(mockRoles));
|
spyOn(service, 'getUserRoles').and.returnValue(of(mockRoles));
|
||||||
|
|
||||||
service.getUsersByRolesWithCurrentUser([mockRoles[0].name]).then(
|
service.getUsersByRolesWithCurrentUser([mockRoles[0].name]).then(
|
||||||
(res: IdentityUserModel[]) => {
|
res => {
|
||||||
expect(res).toBeDefined();
|
expect(res).toBeDefined();
|
||||||
expect(res[0].id).toEqual('mock-user-id-1');
|
expect(res[0].id).toEqual('mock-user-id-1');
|
||||||
expect(res[0].username).toEqual('userName1');
|
expect(res[0].username).toEqual('userName1');
|
||||||
@@ -209,7 +208,7 @@ describe('IdentityUserService', () => {
|
|||||||
spyOn(service, 'getCurrentUserInfo').and.returnValue(mockIdentityUsers[0]);
|
spyOn(service, 'getCurrentUserInfo').and.returnValue(mockIdentityUsers[0]);
|
||||||
|
|
||||||
service.getUsersByRolesWithoutCurrentUser([mockRoles[0].name]).then(
|
service.getUsersByRolesWithoutCurrentUser([mockRoles[0].name]).then(
|
||||||
(res: IdentityUserModel[]) => {
|
res => {
|
||||||
expect(res).toBeDefined();
|
expect(res).toBeDefined();
|
||||||
expect(res[0].id).toEqual('mock-user-id-2');
|
expect(res[0].id).toEqual('mock-user-id-2');
|
||||||
expect(res[0].username).toEqual('userName2');
|
expect(res[0].username).toEqual('userName2');
|
||||||
@@ -292,7 +291,7 @@ describe('IdentityUserService', () => {
|
|||||||
|
|
||||||
it('should be able to query users based on query params (first & max params)', (done) => {
|
it('should be able to query users based on query params (first & max params)', (done) => {
|
||||||
spyOn(alfrescoApiService, 'getInstance').and.returnValue(queryUsersMockApi);
|
spyOn(alfrescoApiService, 'getInstance').and.returnValue(queryUsersMockApi);
|
||||||
service.queryUsers(new IdentityUserQueryCloudRequestModel({first: 0, max: 5})).subscribe((res) => {
|
service.queryUsers({first: 0, max: 5}).subscribe((res) => {
|
||||||
expect(res).toBeDefined();
|
expect(res).toBeDefined();
|
||||||
expect(res).not.toBeNull();
|
expect(res).not.toBeNull();
|
||||||
expect(res.entries.length).toBe(5);
|
expect(res.entries.length).toBe(5);
|
||||||
@@ -314,7 +313,7 @@ describe('IdentityUserService', () => {
|
|||||||
|
|
||||||
spyOn(service, 'queryUsers').and.returnValue(throwError(errorResponse));
|
spyOn(service, 'queryUsers').and.returnValue(throwError(errorResponse));
|
||||||
|
|
||||||
service.queryUsers(new IdentityUserQueryCloudRequestModel({first: 0, max: 5}))
|
service.queryUsers({first: 0, max: 5})
|
||||||
.subscribe(
|
.subscribe(
|
||||||
() => {
|
() => {
|
||||||
fail('expected an error, not users');
|
fail('expected an error, not users');
|
@@ -15,23 +15,40 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import { Pagination } from '@alfresco/js-api';
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Observable, of, from, throwError } from 'rxjs';
|
import { from, Observable, of, throwError } from 'rxjs';
|
||||||
import { catchError, map, switchMap } from 'rxjs/operators';
|
import { catchError, map, switchMap } from 'rxjs/operators';
|
||||||
|
import { AppConfigService } from '../app-config/app-config.service';
|
||||||
import {
|
|
||||||
IdentityUserModel,
|
|
||||||
IdentityUserQueryResponse,
|
|
||||||
IdentityUserQueryCloudRequestModel,
|
|
||||||
IdentityUserPasswordModel,
|
|
||||||
IdentityJoinGroupRequestModel
|
|
||||||
} from '../models/identity-user.model';
|
|
||||||
import { JwtHelperService } from '../../services/jwt-helper.service';
|
|
||||||
import { LogService } from '../../services/log.service';
|
|
||||||
import { AppConfigService } from '../../app-config/app-config.service';
|
|
||||||
import { AlfrescoApiService } from '../../services/alfresco-api.service';
|
|
||||||
import { IdentityRoleModel } from '../models/identity-role.model';
|
|
||||||
import { IdentityGroupModel } from '../models/identity-group.model';
|
import { IdentityGroupModel } from '../models/identity-group.model';
|
||||||
|
import { IdentityRoleModel } from '../models/identity-role.model';
|
||||||
|
import { IdentityUserModel } from '../models/identity-user.model';
|
||||||
|
import { AlfrescoApiService } from './alfresco-api.service';
|
||||||
|
import { JwtHelperService } from './jwt-helper.service';
|
||||||
|
import { LogService } from './log.service';
|
||||||
|
|
||||||
|
export interface IdentityUserQueryResponse {
|
||||||
|
|
||||||
|
entries: IdentityUserModel[];
|
||||||
|
pagination: Pagination;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IdentityUserPasswordModel {
|
||||||
|
type?: string;
|
||||||
|
value?: string;
|
||||||
|
temporary?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IdentityUserQueryCloudRequestModel {
|
||||||
|
first: number;
|
||||||
|
max: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IdentityJoinGroupRequestModel {
|
||||||
|
realm: string;
|
||||||
|
userId: string;
|
||||||
|
groupId: string;
|
||||||
|
}
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
@@ -53,8 +70,7 @@ export class IdentityUserService {
|
|||||||
const givenName = this.jwtHelperService.getValueFromLocalAccessToken<string>(JwtHelperService.GIVEN_NAME);
|
const givenName = this.jwtHelperService.getValueFromLocalAccessToken<string>(JwtHelperService.GIVEN_NAME);
|
||||||
const email = this.jwtHelperService.getValueFromLocalAccessToken<string>(JwtHelperService.USER_EMAIL);
|
const email = this.jwtHelperService.getValueFromLocalAccessToken<string>(JwtHelperService.USER_EMAIL);
|
||||||
const username = this.jwtHelperService.getValueFromLocalAccessToken<string>(JwtHelperService.USER_PREFERRED_USERNAME);
|
const username = this.jwtHelperService.getValueFromLocalAccessToken<string>(JwtHelperService.USER_PREFERRED_USERNAME);
|
||||||
const user = { firstName: givenName, lastName: familyName, email: email, username: username };
|
return { firstName: givenName, lastName: familyName, email: email, username: username };
|
||||||
return new IdentityUserModel(user);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
@@ -56,3 +56,8 @@ export * from './lock.service';
|
|||||||
export * from './automation.service';
|
export * from './automation.service';
|
||||||
export * from './automation.service';
|
export * from './automation.service';
|
||||||
export * from './download.service';
|
export * from './download.service';
|
||||||
|
export * from './bpm-user.service';
|
||||||
|
export * from './ecm-user.service';
|
||||||
|
export * from './identity-user.service';
|
||||||
|
export * from './identity-group.service';
|
||||||
|
export * from './identity-role.service';
|
||||||
|
@@ -21,16 +21,15 @@ import { AuthenticationService, ContentService } from '../../services';
|
|||||||
import { InitialUsernamePipe } from '../../pipes';
|
import { InitialUsernamePipe } from '../../pipes';
|
||||||
import { fakeBpmUser } from '../../mock/bpm-user.service.mock';
|
import { fakeBpmUser } from '../../mock/bpm-user.service.mock';
|
||||||
import { fakeEcmEditedUser, fakeEcmUser, fakeEcmUserNoImage } from '../../mock/ecm-user.service.mock';
|
import { fakeEcmEditedUser, fakeEcmUser, fakeEcmUserNoImage } from '../../mock/ecm-user.service.mock';
|
||||||
import { BpmUserService } from '../services/bpm-user.service';
|
import { BpmUserService } from '../../services/bpm-user.service';
|
||||||
import { EcmUserService } from '../services/ecm-user.service';
|
import { EcmUserService } from '../../services/ecm-user.service';
|
||||||
import { IdentityUserService } from '../services/identity-user.service';
|
import { IdentityUserService } from '../../services/identity-user.service';
|
||||||
import { BpmUserModel } from './../models/bpm-user.model';
|
import { BpmUserModel } from '../../models/bpm-user.model';
|
||||||
import { EcmUserModel } from './../models/ecm-user.model';
|
import { EcmUserModel } from '../../models/ecm-user.model';
|
||||||
import { UserInfoComponent } from './user-info.component';
|
import { UserInfoComponent } from './user-info.component';
|
||||||
import { of } from 'rxjs';
|
import { of } from 'rxjs';
|
||||||
import { setupTestBed } from '../../testing/setupTestBed';
|
import { setupTestBed } from '../../testing/setupTestBed';
|
||||||
import { CoreTestingModule } from '../../testing/core.testing.module';
|
import { CoreTestingModule } from '../../testing/core.testing.module';
|
||||||
import { IdentityUserModel } from '../models/identity-user.model';
|
|
||||||
|
|
||||||
class FakeSanitizer extends DomSanitizer {
|
class FakeSanitizer extends DomSanitizer {
|
||||||
|
|
||||||
@@ -556,7 +555,7 @@ describe('User info component', () => {
|
|||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
component.identityUser$.subscribe((response: IdentityUserModel) => {
|
component.identityUser$.subscribe(response => {
|
||||||
expect(response).toBeDefined();
|
expect(response).toBeDefined();
|
||||||
expect(response.firstName).toBe('fake-identity-first-name');
|
expect(response.firstName).toBe('fake-identity-first-name');
|
||||||
expect(response.lastName).toBe('fake-identity-last-name');
|
expect(response.lastName).toBe('fake-identity-last-name');
|
||||||
@@ -583,8 +582,7 @@ describe('User info component', () => {
|
|||||||
|
|
||||||
it('should show last name if first name is null', async(() => {
|
it('should show last name if first name is null', async(() => {
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
const fakeIdentityUser: IdentityUserModel = new IdentityUserModel(identityUserWithOutFirstNameMock);
|
getCurrentUserInfoStub.and.returnValue(identityUserWithOutFirstNameMock);
|
||||||
getCurrentUserInfoStub.and.returnValue(fakeIdentityUser);
|
|
||||||
|
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
@@ -598,8 +596,7 @@ describe('User info component', () => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
it('should not show first name if it is null string', async(() => {
|
it('should not show first name if it is null string', async(() => {
|
||||||
const fakeIdentityUser: IdentityUserModel = new IdentityUserModel(identityUserWithOutFirstNameMock);
|
getCurrentUserInfoStub.and.returnValue(of(identityUserWithOutFirstNameMock));
|
||||||
getCurrentUserInfoStub.and.returnValue(of(fakeIdentityUser));
|
|
||||||
|
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
@@ -613,8 +610,7 @@ describe('User info component', () => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
it('should not show last name if it is null string', async(() => {
|
it('should not show last name if it is null string', async(() => {
|
||||||
const fakeIdentityUser: IdentityUserModel = new IdentityUserModel(identityUserWithOutLastNameMock);
|
getCurrentUserInfoStub.and.returnValue(of(identityUserWithOutLastNameMock));
|
||||||
getCurrentUserInfoStub.and.returnValue(of(fakeIdentityUser));
|
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
|
@@ -17,12 +17,12 @@
|
|||||||
|
|
||||||
import { Component, Input, OnInit, ViewEncapsulation, ViewChild } from '@angular/core';
|
import { Component, Input, OnInit, ViewEncapsulation, ViewChild } from '@angular/core';
|
||||||
import { AuthenticationService } from '../../services/authentication.service';
|
import { AuthenticationService } from '../../services/authentication.service';
|
||||||
import { BpmUserModel } from './../models/bpm-user.model';
|
import { BpmUserModel } from '../../models/bpm-user.model';
|
||||||
import { EcmUserModel } from './../models/ecm-user.model';
|
import { EcmUserModel } from '../../models/ecm-user.model';
|
||||||
import { IdentityUserModel } from './../models/identity-user.model';
|
import { IdentityUserModel } from '../../models/identity-user.model';
|
||||||
import { BpmUserService } from './../services/bpm-user.service';
|
import { BpmUserService } from '../../services/bpm-user.service';
|
||||||
import { EcmUserService } from './../services/ecm-user.service';
|
import { EcmUserService } from '../../services/ecm-user.service';
|
||||||
import { IdentityUserService } from '../services/identity-user.service';
|
import { IdentityUserService } from '../../services/identity-user.service';
|
||||||
import { of, Observable } from 'rxjs';
|
import { of, Observable } from 'rxjs';
|
||||||
import { MatMenuTrigger } from '@angular/material';
|
import { MatMenuTrigger } from '@angular/material';
|
||||||
|
|
||||||
|
@@ -1,91 +0,0 @@
|
|||||||
/*!
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Alfresco Software, Ltd.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { Pagination } from '@alfresco/js-api';
|
|
||||||
|
|
||||||
export class IdentityUserModel {
|
|
||||||
id: string;
|
|
||||||
firstName: string;
|
|
||||||
lastName: string;
|
|
||||||
email: string;
|
|
||||||
username: string;
|
|
||||||
createdTimestamp?: any;
|
|
||||||
emailVerified?: boolean;
|
|
||||||
enabled?: boolean;
|
|
||||||
|
|
||||||
constructor(obj?: any) {
|
|
||||||
if (obj) {
|
|
||||||
this.id = obj.id || null;
|
|
||||||
this.firstName = obj.firstName || null;
|
|
||||||
this.lastName = obj.lastName || null;
|
|
||||||
this.email = obj.email || null;
|
|
||||||
this.username = obj.username || null;
|
|
||||||
this.createdTimestamp = obj.createdTimestamp || null;
|
|
||||||
this.emailVerified = obj.emailVerified || null;
|
|
||||||
this.enabled = obj.enabled || null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class IdentityUserPasswordModel {
|
|
||||||
|
|
||||||
type: string;
|
|
||||||
value: string;
|
|
||||||
temporary: boolean;
|
|
||||||
|
|
||||||
constructor(obj?: any) {
|
|
||||||
if (obj) {
|
|
||||||
this.type = obj.type;
|
|
||||||
this.value = obj.value;
|
|
||||||
this.temporary = obj.temporary;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface IdentityUserQueryResponse {
|
|
||||||
|
|
||||||
entries: IdentityUserModel[];
|
|
||||||
pagination: Pagination;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class IdentityUserQueryCloudRequestModel {
|
|
||||||
|
|
||||||
first: number;
|
|
||||||
max: number;
|
|
||||||
|
|
||||||
constructor(obj?: any) {
|
|
||||||
if (obj) {
|
|
||||||
this.first = obj.first;
|
|
||||||
this.max = obj.max;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class IdentityJoinGroupRequestModel {
|
|
||||||
|
|
||||||
realm: string;
|
|
||||||
userId: string;
|
|
||||||
groupId: string;
|
|
||||||
|
|
||||||
constructor(obj?: any) {
|
|
||||||
if (obj) {
|
|
||||||
this.realm = obj.realm;
|
|
||||||
this.userId = obj.userId;
|
|
||||||
this.groupId = obj.groupId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -16,15 +16,4 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
export * from './components/user-info.component';
|
export * from './components/user-info.component';
|
||||||
export * from './services/bpm-user.service';
|
|
||||||
export * from './services/ecm-user.service';
|
|
||||||
export * from './services/identity-user.service';
|
|
||||||
export * from './services/identity-group.service';
|
|
||||||
export * from './models/bpm-user.model';
|
|
||||||
export * from './models/ecm-user.model';
|
|
||||||
export * from './models/identity-group.model';
|
|
||||||
export * from './models/identity-user.model';
|
|
||||||
export * from './models/identity-role.model';
|
|
||||||
export * from './models/identity-group.model';
|
|
||||||
|
|
||||||
export * from './userinfo.module';
|
export * from './userinfo.module';
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { IdentityUserService, IdentityUserModel } from '@alfresco/adf-core';
|
import { IdentityUserService } from '@alfresco/adf-core';
|
||||||
import { Injectable, Inject } from '@angular/core';
|
import { Injectable, Inject } from '@angular/core';
|
||||||
import { Observable, of, BehaviorSubject, throwError } from 'rxjs';
|
import { Observable, of, BehaviorSubject, throwError } from 'rxjs';
|
||||||
import { ProcessFilterCloudModel } from '../models/process-filter-cloud.model';
|
import { ProcessFilterCloudModel } from '../models/process-filter-cloud.model';
|
||||||
@@ -226,7 +226,7 @@ export class ProcessFilterCloudService {
|
|||||||
* @returns String of process instance filters preference key
|
* @returns String of process instance filters preference key
|
||||||
*/
|
*/
|
||||||
private prepareKey(appName: string): string {
|
private prepareKey(appName: string): string {
|
||||||
const user: IdentityUserModel = this.identityUserService.getCurrentUserInfo();
|
const user = this.identityUserService.getCurrentUserInfo();
|
||||||
return `process-filters-${appName}-${user.username}`;
|
return `process-filters-${appName}-${user.username}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -17,8 +17,7 @@
|
|||||||
|
|
||||||
import { PeopleCloudComponent } from './people-cloud.component';
|
import { PeopleCloudComponent } from './people-cloud.component';
|
||||||
import { ComponentFixture, TestBed, async, tick, fakeAsync } from '@angular/core/testing';
|
import { ComponentFixture, TestBed, async, tick, fakeAsync } from '@angular/core/testing';
|
||||||
import { IdentityUserService, AlfrescoApiService,
|
import { IdentityUserService, AlfrescoApiService, CoreModule, setupTestBed } from '@alfresco/adf-core';
|
||||||
CoreModule, IdentityUserModel, setupTestBed } from '@alfresco/adf-core';
|
|
||||||
import { ProcessServiceCloudTestingModule } from '../../../../testing/process-service-cloud.testing.module';
|
import { ProcessServiceCloudTestingModule } from '../../../../testing/process-service-cloud.testing.module';
|
||||||
import { of } from 'rxjs';
|
import { of } from 'rxjs';
|
||||||
import { mockUsers } from '../../mock/user-cloud.mock';
|
import { mockUsers } from '../../mock/user-cloud.mock';
|
||||||
@@ -111,7 +110,7 @@ describe('PeopleCloudComponent', () => {
|
|||||||
it('should emit selectedUser if option is valid', (done) => {
|
it('should emit selectedUser if option is valid', (done) => {
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
const selectEmitSpy = spyOn(component.selectUser, 'emit');
|
const selectEmitSpy = spyOn(component.selectUser, 'emit');
|
||||||
component.onSelect(new IdentityUserModel({ username: 'username' }));
|
component.onSelect({ username: 'username' });
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
expect(selectEmitSpy).toHaveBeenCalled();
|
expect(selectEmitSpy).toHaveBeenCalled();
|
||||||
|
@@ -73,7 +73,7 @@ export class PeopleCloudComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
|
|
||||||
/** FormControl to search the user */
|
/** FormControl to search the user */
|
||||||
@Input()
|
@Input()
|
||||||
searchUserCtrl: FormControl = new FormControl();
|
searchUserCtrl = new FormControl();
|
||||||
|
|
||||||
/** Placeholder translation key
|
/** Placeholder translation key
|
||||||
*/
|
*/
|
||||||
@@ -82,15 +82,15 @@ export class PeopleCloudComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
|
|
||||||
/** Emitted when a user is selected. */
|
/** Emitted when a user is selected. */
|
||||||
@Output()
|
@Output()
|
||||||
selectUser: EventEmitter<IdentityUserModel> = new EventEmitter<IdentityUserModel>();
|
selectUser = new EventEmitter<IdentityUserModel>();
|
||||||
|
|
||||||
/** Emitted when a selected user is removed in multi selection mode. */
|
/** Emitted when a selected user is removed in multi selection mode. */
|
||||||
@Output()
|
@Output()
|
||||||
removeUser: EventEmitter<IdentityUserModel> = new EventEmitter<IdentityUserModel>();
|
removeUser = new EventEmitter<IdentityUserModel>();
|
||||||
|
|
||||||
/** Emitted when an warning occurs. */
|
/** Emitted when an warning occurs. */
|
||||||
@Output()
|
@Output()
|
||||||
warning: EventEmitter<any> = new EventEmitter<any>();
|
warning = new EventEmitter<any>();
|
||||||
|
|
||||||
@ViewChild('userInput')
|
@ViewChild('userInput')
|
||||||
private userInput: ElementRef<HTMLInputElement>;
|
private userInput: ElementRef<HTMLInputElement>;
|
||||||
@@ -214,7 +214,7 @@ export class PeopleCloudComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
this.logService.error(error);
|
this.logService.error(error);
|
||||||
}
|
}
|
||||||
const isUserValid: boolean = this.userExists(result);
|
const isUserValid: boolean = this.userExists(result);
|
||||||
return isUserValid ? new IdentityUserModel(result) : null;
|
return isUserValid ? result : null;
|
||||||
});
|
});
|
||||||
return await Promise.all(promiseBatch);
|
return await Promise.all(promiseBatch);
|
||||||
}
|
}
|
||||||
|
@@ -52,7 +52,7 @@ describe('StartTaskCloudComponent', () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const mockUser = new IdentityUserModel({username: 'currentUser', firstName: 'Test', lastName: 'User', email: 'currentUser@test.com'});
|
const mockUser: IdentityUserModel = {username: 'currentUser', firstName: 'Test', lastName: 'User', email: 'currentUser@test.com'};
|
||||||
|
|
||||||
setupTestBed({
|
setupTestBed({
|
||||||
imports: [ProcessServiceCloudTestingModule, StartTaskCloudTestingModule],
|
imports: [ProcessServiceCloudTestingModule, StartTaskCloudTestingModule],
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { IdentityUserService, IdentityUserModel } from '@alfresco/adf-core';
|
import { IdentityUserService } from '@alfresco/adf-core';
|
||||||
import { Injectable, Inject } from '@angular/core';
|
import { Injectable, Inject } from '@angular/core';
|
||||||
import { Observable, of, BehaviorSubject, throwError } from 'rxjs';
|
import { Observable, of, BehaviorSubject, throwError } from 'rxjs';
|
||||||
import { TaskFilterCloudModel } from '../models/filter-cloud.model';
|
import { TaskFilterCloudModel } from '../models/filter-cloud.model';
|
||||||
@@ -231,7 +231,7 @@ export class TaskFilterCloudService {
|
|||||||
* @returns Username string
|
* @returns Username string
|
||||||
*/
|
*/
|
||||||
getUsername(): string {
|
getUsername(): string {
|
||||||
const user: IdentityUserModel = this.identityUserService.getCurrentUserInfo();
|
const user = this.identityUserService.getCurrentUserInfo();
|
||||||
return user.username;
|
return user.username;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user