@flusys/nestjs-auth 7.1.0 → 8.0.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/README.md +1 -1
- package/config/index.d.ts +3 -3
- package/config/message-keys.d.ts +4 -0
- package/controllers/authentication.controller.d.ts +5 -5
- package/controllers/branch.controller.d.ts +2 -2
- package/controllers/company-selection.controller.d.ts +4 -4
- package/controllers/company.controller.d.ts +2 -2
- package/controllers/email-verification.controller.d.ts +6 -6
- package/controllers/index.d.ts +9 -9
- package/controllers/social-auth-config.controller.d.ts +2 -2
- package/controllers/social-auth.controller.d.ts +3 -3
- package/controllers/user-permission.controller.d.ts +7 -4
- package/controllers/user.controller.d.ts +7 -7
- package/docs/auth-swagger.config.d.ts +2 -2
- package/docs/index.d.ts +1 -1
- package/dtos/index.d.ts +6 -6
- package/dtos/social-auth.dto.d.ts +1 -1
- package/dtos/user-permission.dto.d.ts +30 -0
- package/entities/company-branch.entity.d.ts +1 -1
- package/entities/company.entity.d.ts +1 -1
- package/entities/index.d.ts +14 -14
- package/entities/pending-registration.entity.d.ts +1 -1
- package/entities/user-company-permission.entity.d.ts +4 -4
- package/enums/index.d.ts +2 -2
- package/fesm/118.js +1404 -0
- package/fesm/120.js +2265 -0
- package/fesm/24.js +4422 -0
- package/fesm/370.js +1163 -0
- package/fesm/446.js +877 -0
- package/fesm/chunks/117.js +69 -0
- package/fesm/config/index.js +246 -3
- package/fesm/controllers/index.js +27 -9
- package/fesm/docs/index.js +479 -1
- package/fesm/dtos/index.js +135 -6
- package/fesm/entities/index.js +68 -22
- package/fesm/enums/index.js +53 -2
- package/fesm/helpers/index.js +115 -2
- package/fesm/index.js +1455 -13
- package/fesm/interceptors/index.js +510 -2
- package/fesm/interfaces/index.js +75 -8
- package/fesm/modules/index.js +546 -1
- package/fesm/runtime.js +134 -0
- package/fesm/services/index.js +67 -11
- package/helpers/auth-response.mapper.d.ts +3 -3
- package/helpers/index.d.ts +2 -2
- package/helpers/token.helper.d.ts +2 -2
- package/index.d.ts +13 -13
- package/interceptors/clear-token.interceptor.d.ts +2 -2
- package/interceptors/index.d.ts +2 -2
- package/interceptors/set-token.interceptor.d.ts +2 -2
- package/interfaces/auth-module-options.interface.d.ts +3 -3
- package/interfaces/authentication.interface.d.ts +3 -3
- package/interfaces/company-branch.interface.d.ts +2 -2
- package/interfaces/company.interface.d.ts +1 -1
- package/interfaces/index.d.ts +8 -8
- package/interfaces/social-auth.interface.d.ts +2 -2
- package/interfaces/user-enricher.interface.d.ts +3 -3
- package/modules/auth.module.d.ts +4 -4
- package/modules/index.d.ts +1 -1
- package/package.json +32 -39
- package/providers/facebook.social-provider.d.ts +2 -2
- package/providers/google.social-provider.d.ts +2 -2
- package/providers/index.d.ts +1 -1
- package/providers/linkedin.social-provider.d.ts +2 -2
- package/providers/microsoft.social-provider.d.ts +2 -2
- package/providers/social-provider.registry.d.ts +2 -2
- package/services/auth-config.service.d.ts +3 -3
- package/services/auth-datasource.provider.d.ts +3 -3
- package/services/auth-email.service.d.ts +3 -3
- package/services/authentication.service.d.ts +12 -12
- package/services/branch.service.d.ts +7 -7
- package/services/company.service.d.ts +6 -6
- package/services/index.d.ts +11 -11
- package/services/social-auth-config.service.d.ts +6 -6
- package/services/social-auth.service.d.ts +5 -5
- package/services/user-permission.service.d.ts +10 -4
- package/services/user.service.d.ts +7 -7
- package/strategies/jwt.strategy.d.ts +4 -4
- package/validators/password.validator.d.ts +1 -1
- package/cjs/config/auth.constants.js +0 -49
- package/cjs/config/event-actions.js +0 -47
- package/cjs/config/index.js +0 -20
- package/cjs/config/message-keys.js +0 -135
- package/cjs/controllers/authentication.controller.js +0 -427
- package/cjs/controllers/authentication.controller.spec.js +0 -219
- package/cjs/controllers/branch.controller.js +0 -102
- package/cjs/controllers/branch.controller.spec.js +0 -134
- package/cjs/controllers/company-selection.controller.js +0 -198
- package/cjs/controllers/company-selection.controller.spec.js +0 -84
- package/cjs/controllers/company.controller.js +0 -102
- package/cjs/controllers/company.controller.spec.js +0 -131
- package/cjs/controllers/email-verification.controller.js +0 -224
- package/cjs/controllers/email-verification.controller.spec.js +0 -142
- package/cjs/controllers/index.js +0 -26
- package/cjs/controllers/social-auth-config.controller.js +0 -107
- package/cjs/controllers/social-auth.controller.js +0 -175
- package/cjs/controllers/social-auth.controller.spec.js +0 -79
- package/cjs/controllers/user-permission.controller.js +0 -223
- package/cjs/controllers/user-permission.controller.spec.js +0 -138
- package/cjs/controllers/user.controller.js +0 -438
- package/cjs/controllers/user.controller.spec.js +0 -204
- package/cjs/docs/auth-swagger.config.js +0 -461
- package/cjs/docs/auth-swagger.config.spec.js +0 -130
- package/cjs/docs/index.js +0 -18
- package/cjs/dtos/authentication.dto.js +0 -755
- package/cjs/dtos/company-branch.dto.js +0 -294
- package/cjs/dtos/company.dto.js +0 -298
- package/cjs/dtos/index.js +0 -23
- package/cjs/dtos/social-auth.dto.js +0 -318
- package/cjs/dtos/user-permission.dto.js +0 -358
- package/cjs/dtos/user.dto.js +0 -413
- package/cjs/entities/app-user.entity.js +0 -25
- package/cjs/entities/company-branch.entity.js +0 -163
- package/cjs/entities/company.entity.js +0 -146
- package/cjs/entities/index.js +0 -67
- package/cjs/entities/index.spec.js +0 -84
- package/cjs/entities/pending-registration.entity.js +0 -135
- package/cjs/entities/social-auth-config.entity.js +0 -102
- package/cjs/entities/user-company-permission.entity.js +0 -153
- package/cjs/entities/user-token.entity.js +0 -120
- package/cjs/enums/index.js +0 -19
- package/cjs/enums/social-provider-type.enum.js +0 -17
- package/cjs/enums/user-org-permission-type.enum.js +0 -15
- package/cjs/helpers/auth-response.mapper.js +0 -46
- package/cjs/helpers/auth-response.mapper.spec.js +0 -139
- package/cjs/helpers/index.js +0 -19
- package/cjs/helpers/token.helper.js +0 -58
- package/cjs/helpers/token.helper.spec.js +0 -86
- package/cjs/index.js +0 -30
- package/cjs/interceptors/clear-token.interceptor.js +0 -73
- package/cjs/interceptors/clear-token.interceptor.spec.js +0 -107
- package/cjs/interceptors/index.js +0 -19
- package/cjs/interceptors/set-token.interceptor.js +0 -107
- package/cjs/interceptors/set-token.interceptor.spec.js +0 -165
- package/cjs/interfaces/auth-email-provider.interface.js +0 -45
- package/cjs/interfaces/auth-module-options.interface.js +0 -4
- package/cjs/interfaces/authentication.interface.js +0 -4
- package/cjs/interfaces/company-branch.interface.js +0 -4
- package/cjs/interfaces/company.interface.js +0 -4
- package/cjs/interfaces/index.js +0 -25
- package/cjs/interfaces/social-auth.interface.js +0 -4
- package/cjs/interfaces/user-enricher.interface.js +0 -4
- package/cjs/interfaces/user.interface.js +0 -4
- package/cjs/modules/auth.module.js +0 -208
- package/cjs/modules/auth.module.spec.js +0 -258
- package/cjs/modules/index.js +0 -18
- package/cjs/providers/facebook.social-provider.js +0 -73
- package/cjs/providers/google.social-provider.js +0 -68
- package/cjs/providers/index.js +0 -18
- package/cjs/providers/linkedin.social-provider.js +0 -66
- package/cjs/providers/microsoft.social-provider.js +0 -78
- package/cjs/providers/oauth-http.util.js +0 -107
- package/cjs/providers/social-provider.registry.js +0 -24
- package/cjs/providers/social-provider.registry.spec.js +0 -135
- package/cjs/services/auth-config.service.js +0 -113
- package/cjs/services/auth-config.service.spec.js +0 -100
- package/cjs/services/auth-datasource.provider.js +0 -138
- package/cjs/services/auth-datasource.provider.spec.js +0 -191
- package/cjs/services/auth-email.service.js +0 -539
- package/cjs/services/auth-email.service.spec.js +0 -456
- package/cjs/services/authentication.service.js +0 -1203
- package/cjs/services/authentication.service.spec.js +0 -1020
- package/cjs/services/branch.service.js +0 -153
- package/cjs/services/branch.service.spec.js +0 -169
- package/cjs/services/company-selection-session.service.js +0 -121
- package/cjs/services/company-selection-session.service.spec.js +0 -90
- package/cjs/services/company.service.js +0 -140
- package/cjs/services/company.service.spec.js +0 -127
- package/cjs/services/index.js +0 -28
- package/cjs/services/social-auth-config.service.js +0 -103
- package/cjs/services/social-auth-config.service.spec.js +0 -71
- package/cjs/services/social-auth.service.js +0 -310
- package/cjs/services/social-auth.service.spec.js +0 -310
- package/cjs/services/user-permission.service.js +0 -236
- package/cjs/services/user-permission.service.spec.js +0 -254
- package/cjs/services/user.service.js +0 -671
- package/cjs/services/user.service.spec.js +0 -718
- package/cjs/strategies/jwt.strategy.js +0 -140
- package/cjs/strategies/jwt.strategy.spec.js +0 -166
- package/cjs/validators/password.validator.js +0 -45
- package/cjs/validators/password.validator.spec.js +0 -161
- package/fesm/config/auth.constants.js +0 -14
- package/fesm/config/event-actions.js +0 -26
- package/fesm/config/message-keys.js +0 -99
- package/fesm/controllers/authentication.controller.js +0 -417
- package/fesm/controllers/authentication.controller.spec.js +0 -215
- package/fesm/controllers/branch.controller.js +0 -92
- package/fesm/controllers/branch.controller.spec.js +0 -130
- package/fesm/controllers/company-selection.controller.js +0 -188
- package/fesm/controllers/company-selection.controller.spec.js +0 -80
- package/fesm/controllers/company.controller.js +0 -92
- package/fesm/controllers/company.controller.spec.js +0 -127
- package/fesm/controllers/email-verification.controller.js +0 -214
- package/fesm/controllers/email-verification.controller.spec.js +0 -138
- package/fesm/controllers/social-auth-config.controller.js +0 -97
- package/fesm/controllers/social-auth.controller.js +0 -165
- package/fesm/controllers/social-auth.controller.spec.js +0 -75
- package/fesm/controllers/user-permission.controller.js +0 -213
- package/fesm/controllers/user-permission.controller.spec.js +0 -134
- package/fesm/controllers/user.controller.js +0 -428
- package/fesm/controllers/user.controller.spec.js +0 -200
- package/fesm/docs/auth-swagger.config.js +0 -454
- package/fesm/docs/auth-swagger.config.spec.js +0 -126
- package/fesm/dtos/authentication.dto.js +0 -683
- package/fesm/dtos/company-branch.dto.js +0 -279
- package/fesm/dtos/company.dto.js +0 -283
- package/fesm/dtos/social-auth.dto.js +0 -282
- package/fesm/dtos/user-permission.dto.js +0 -339
- package/fesm/dtos/user.dto.js +0 -391
- package/fesm/entities/app-user.entity.js +0 -15
- package/fesm/entities/company-branch.entity.js +0 -153
- package/fesm/entities/company.entity.js +0 -136
- package/fesm/entities/index.spec.js +0 -80
- package/fesm/entities/pending-registration.entity.js +0 -125
- package/fesm/entities/social-auth-config.entity.js +0 -92
- package/fesm/entities/user-company-permission.entity.js +0 -136
- package/fesm/entities/user-token.entity.js +0 -104
- package/fesm/enums/social-provider-type.enum.js +0 -7
- package/fesm/enums/user-org-permission-type.enum.js +0 -5
- package/fesm/helpers/auth-response.mapper.js +0 -25
- package/fesm/helpers/auth-response.mapper.spec.js +0 -135
- package/fesm/helpers/token.helper.js +0 -40
- package/fesm/helpers/token.helper.spec.js +0 -82
- package/fesm/interceptors/clear-token.interceptor.js +0 -63
- package/fesm/interceptors/clear-token.interceptor.spec.js +0 -103
- package/fesm/interceptors/set-token.interceptor.js +0 -98
- package/fesm/interceptors/set-token.interceptor.spec.js +0 -161
- package/fesm/interfaces/auth-email-provider.interface.js +0 -38
- package/fesm/interfaces/auth-module-options.interface.js +0 -3
- package/fesm/interfaces/authentication.interface.js +0 -1
- package/fesm/interfaces/company-branch.interface.js +0 -1
- package/fesm/interfaces/company.interface.js +0 -1
- package/fesm/interfaces/social-auth.interface.js +0 -1
- package/fesm/interfaces/user-enricher.interface.js +0 -4
- package/fesm/interfaces/user.interface.js +0 -1
- package/fesm/modules/auth.module.js +0 -198
- package/fesm/modules/auth.module.spec.js +0 -254
- package/fesm/providers/facebook.social-provider.js +0 -63
- package/fesm/providers/google.social-provider.js +0 -58
- package/fesm/providers/index.js +0 -1
- package/fesm/providers/linkedin.social-provider.js +0 -56
- package/fesm/providers/microsoft.social-provider.js +0 -68
- package/fesm/providers/oauth-http.util.js +0 -77
- package/fesm/providers/social-provider.registry.js +0 -14
- package/fesm/providers/social-provider.registry.spec.js +0 -131
- package/fesm/services/auth-config.service.js +0 -103
- package/fesm/services/auth-config.service.spec.js +0 -96
- package/fesm/services/auth-datasource.provider.js +0 -87
- package/fesm/services/auth-datasource.provider.spec.js +0 -187
- package/fesm/services/auth-email.service.js +0 -488
- package/fesm/services/auth-email.service.spec.js +0 -411
- package/fesm/services/authentication.service.js +0 -1152
- package/fesm/services/authentication.service.spec.js +0 -975
- package/fesm/services/branch.service.js +0 -143
- package/fesm/services/branch.service.spec.js +0 -165
- package/fesm/services/company-selection-session.service.js +0 -111
- package/fesm/services/company-selection-session.service.spec.js +0 -86
- package/fesm/services/company.service.js +0 -130
- package/fesm/services/company.service.spec.js +0 -123
- package/fesm/services/social-auth-config.service.js +0 -93
- package/fesm/services/social-auth-config.service.spec.js +0 -67
- package/fesm/services/social-auth.service.js +0 -300
- package/fesm/services/social-auth.service.spec.js +0 -265
- package/fesm/services/user-permission.service.js +0 -226
- package/fesm/services/user-permission.service.spec.js +0 -250
- package/fesm/services/user.service.js +0 -620
- package/fesm/services/user.service.spec.js +0 -673
- package/fesm/strategies/jwt.strategy.js +0 -130
- package/fesm/strategies/jwt.strategy.spec.js +0 -162
- package/fesm/validators/password.validator.js +0 -48
- package/fesm/validators/password.validator.spec.js +0 -157
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
const _repositorymock = require("@test-utils/mocks/repository.mock");
|
|
6
|
-
const _companyservice = require("./company.service");
|
|
7
|
-
const _companybranchentity = require("../entities/company-branch.entity");
|
|
8
|
-
const _usercompanypermissionentity = require("../entities/user-company-permission.entity");
|
|
9
|
-
describe('CompanyService', ()=>{
|
|
10
|
-
let service;
|
|
11
|
-
let mockRepo;
|
|
12
|
-
let mockPermissionSyncAdapter;
|
|
13
|
-
let mockQueryRunner;
|
|
14
|
-
let branchRepo;
|
|
15
|
-
let permissionRepo;
|
|
16
|
-
beforeEach(()=>{
|
|
17
|
-
mockRepo = (0, _repositorymock.createMockRepository)();
|
|
18
|
-
mockRepo.find.mockResolvedValue([]);
|
|
19
|
-
const mockDataSourceProvider = (0, _repositorymock.createMockDataSourceProvider)(mockRepo);
|
|
20
|
-
mockPermissionSyncAdapter = {
|
|
21
|
-
onCompanyDeleted: jest.fn()
|
|
22
|
-
};
|
|
23
|
-
service = new _companyservice.CompanyService({}, {}, mockDataSourceProvider, mockPermissionSyncAdapter);
|
|
24
|
-
branchRepo = (0, _repositorymock.createMockRepository)();
|
|
25
|
-
branchRepo.find.mockResolvedValue([]);
|
|
26
|
-
permissionRepo = (0, _repositorymock.createMockRepository)();
|
|
27
|
-
mockQueryRunner = {
|
|
28
|
-
manager: {
|
|
29
|
-
getRepository: jest.fn().mockImplementation((entity)=>{
|
|
30
|
-
if (entity === _companybranchentity.CompanyBranch) return branchRepo;
|
|
31
|
-
if (entity === _usercompanypermissionentity.UserCompanyPermission) return permissionRepo;
|
|
32
|
-
throw new Error('Unexpected entity');
|
|
33
|
-
})
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
});
|
|
37
|
-
describe('beforeDeleteOperation', ()=>{
|
|
38
|
-
it('deletes permissions for the companies and their branches', async ()=>{
|
|
39
|
-
branchRepo.find.mockResolvedValue([
|
|
40
|
-
{
|
|
41
|
-
id: 'branch-1'
|
|
42
|
-
}
|
|
43
|
-
]);
|
|
44
|
-
await service.beforeDeleteOperation({
|
|
45
|
-
id: [
|
|
46
|
-
'company-1'
|
|
47
|
-
]
|
|
48
|
-
}, null, mockQueryRunner);
|
|
49
|
-
const deleteArg = permissionRepo.delete.mock.calls[0][0];
|
|
50
|
-
expect(deleteArg.targetId._value).toEqual(expect.arrayContaining([
|
|
51
|
-
'company-1',
|
|
52
|
-
'branch-1'
|
|
53
|
-
]));
|
|
54
|
-
});
|
|
55
|
-
it('handles a single (non-array) company id', async ()=>{
|
|
56
|
-
await service.beforeDeleteOperation({
|
|
57
|
-
id: 'company-1'
|
|
58
|
-
}, null, mockQueryRunner);
|
|
59
|
-
expect(branchRepo.find).toHaveBeenCalledWith(expect.objectContaining({
|
|
60
|
-
where: {
|
|
61
|
-
companyId: expect.anything()
|
|
62
|
-
}
|
|
63
|
-
}));
|
|
64
|
-
});
|
|
65
|
-
it('does nothing further when no permission sync adapter is configured', async ()=>{
|
|
66
|
-
service = new _companyservice.CompanyService({}, {}, (0, _repositorymock.createMockDataSourceProvider)(mockRepo), undefined);
|
|
67
|
-
await expect(service.beforeDeleteOperation({
|
|
68
|
-
id: [
|
|
69
|
-
'company-1'
|
|
70
|
-
]
|
|
71
|
-
}, null, mockQueryRunner)).resolves.toBeUndefined();
|
|
72
|
-
});
|
|
73
|
-
it('notifies the permission sync adapter for each deleted company', async ()=>{
|
|
74
|
-
await service.beforeDeleteOperation({
|
|
75
|
-
id: [
|
|
76
|
-
'company-1',
|
|
77
|
-
'company-2'
|
|
78
|
-
]
|
|
79
|
-
}, null, mockQueryRunner);
|
|
80
|
-
expect(mockPermissionSyncAdapter.onCompanyDeleted).toHaveBeenCalledWith('company-1');
|
|
81
|
-
expect(mockPermissionSyncAdapter.onCompanyDeleted).toHaveBeenCalledWith('company-2');
|
|
82
|
-
});
|
|
83
|
-
it('rejects deleting a readonly company', async ()=>{
|
|
84
|
-
mockRepo.find.mockResolvedValue([
|
|
85
|
-
{
|
|
86
|
-
id: 'company-1',
|
|
87
|
-
name: 'Default Company',
|
|
88
|
-
readOnly: true
|
|
89
|
-
}
|
|
90
|
-
]);
|
|
91
|
-
await expect(service.beforeDeleteOperation({
|
|
92
|
-
id: 'company-1'
|
|
93
|
-
}, null, mockQueryRunner)).rejects.toThrow('Cannot delete readonly company');
|
|
94
|
-
expect(branchRepo.find).not.toHaveBeenCalled();
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
describe('getSelectQuery', ()=>{
|
|
98
|
-
it('applies the default selected fields when none are provided', async ()=>{
|
|
99
|
-
const qb = mockRepo.createQueryBuilder();
|
|
100
|
-
const { isRaw } = await service.getSelectQuery(qb, null);
|
|
101
|
-
expect(qb.select).toHaveBeenCalledWith(expect.arrayContaining([
|
|
102
|
-
'company.id',
|
|
103
|
-
'company.name',
|
|
104
|
-
'company.slug'
|
|
105
|
-
]));
|
|
106
|
-
expect(isRaw).toBe(false);
|
|
107
|
-
});
|
|
108
|
-
it('honors an explicit select list', async ()=>{
|
|
109
|
-
const qb = mockRepo.createQueryBuilder();
|
|
110
|
-
await service.getSelectQuery(qb, null, [
|
|
111
|
-
'id'
|
|
112
|
-
]);
|
|
113
|
-
expect(qb.select).toHaveBeenCalledWith([
|
|
114
|
-
'company.id'
|
|
115
|
-
]);
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
describe('getGlobalSearchQuery', ()=>{
|
|
119
|
-
it('adds a LIKE search clause across name/slug/email', async ()=>{
|
|
120
|
-
const qb = mockRepo.createQueryBuilder();
|
|
121
|
-
await service.getGlobalSearchQuery(qb, 'acme');
|
|
122
|
-
expect(qb.andWhere).toHaveBeenCalledWith(expect.stringContaining('company.name LIKE'), {
|
|
123
|
-
search: '%acme%'
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
});
|
package/cjs/services/index.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
_export_star(require("./authentication.service"), exports);
|
|
6
|
-
_export_star(require("./auth-email.service"), exports);
|
|
7
|
-
_export_star(require("./company-selection-session.service"), exports);
|
|
8
|
-
_export_star(require("./social-auth.service"), exports);
|
|
9
|
-
_export_star(require("./social-auth-config.service"), exports);
|
|
10
|
-
_export_star(require("./user.service"), exports);
|
|
11
|
-
_export_star(require("./company.service"), exports);
|
|
12
|
-
_export_star(require("./branch.service"), exports);
|
|
13
|
-
_export_star(require("./user-permission.service"), exports);
|
|
14
|
-
_export_star(require("./auth-config.service"), exports);
|
|
15
|
-
_export_star(require("./auth-datasource.provider"), exports);
|
|
16
|
-
function _export_star(from, to) {
|
|
17
|
-
Object.keys(from).forEach(function(k) {
|
|
18
|
-
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
19
|
-
Object.defineProperty(to, k, {
|
|
20
|
-
enumerable: true,
|
|
21
|
-
get: function() {
|
|
22
|
-
return from[k];
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
return from;
|
|
28
|
-
}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "SocialAuthConfigService", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return SocialAuthConfigService;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _classes = require("@flusys/nestjs-shared/classes");
|
|
12
|
-
const _modules = require("@flusys/nestjs-shared/modules");
|
|
13
|
-
const _common = require("@nestjs/common");
|
|
14
|
-
const _typeorm = require("typeorm");
|
|
15
|
-
const _config = require("../config");
|
|
16
|
-
const _socialauthconfigentity = require("../entities/social-auth-config.entity");
|
|
17
|
-
const _authdatasourceprovider = require("./auth-datasource.provider");
|
|
18
|
-
function _define_property(obj, key, value) {
|
|
19
|
-
if (key in obj) {
|
|
20
|
-
Object.defineProperty(obj, key, {
|
|
21
|
-
value: value,
|
|
22
|
-
enumerable: true,
|
|
23
|
-
configurable: true,
|
|
24
|
-
writable: true
|
|
25
|
-
});
|
|
26
|
-
} else {
|
|
27
|
-
obj[key] = value;
|
|
28
|
-
}
|
|
29
|
-
return obj;
|
|
30
|
-
}
|
|
31
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
32
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
33
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
34
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
35
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
36
|
-
}
|
|
37
|
-
function _ts_metadata(k, v) {
|
|
38
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
39
|
-
}
|
|
40
|
-
function _ts_param(paramIndex, decorator) {
|
|
41
|
-
return function(target, key) {
|
|
42
|
-
decorator(target, key, paramIndex);
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
let SocialAuthConfigService = class SocialAuthConfigService extends _classes.ApiService {
|
|
46
|
-
async beforeInsertOperation(dto, _user, _queryRunner) {
|
|
47
|
-
for (const entry of Array.isArray(dto) ? dto : [
|
|
48
|
-
dto
|
|
49
|
-
]){
|
|
50
|
-
await this.ensureProviderUnclaimed(entry.provider);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
async beforeUpdateOperation(dto, _user, _queryRunner) {
|
|
54
|
-
for (const entry of Array.isArray(dto) ? dto : [
|
|
55
|
-
dto
|
|
56
|
-
]){
|
|
57
|
-
if (entry.provider) await this.ensureProviderUnclaimed(entry.provider, entry.id);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
async ensureProviderUnclaimed(provider, exceptId) {
|
|
61
|
-
await this.ensureDataSourceRepository();
|
|
62
|
-
const existing = await this.repository.findOne({
|
|
63
|
-
where: {
|
|
64
|
-
provider,
|
|
65
|
-
deletedAt: (0, _typeorm.IsNull)(),
|
|
66
|
-
...exceptId ? {
|
|
67
|
-
id: (0, _typeorm.Not)(exceptId)
|
|
68
|
-
} : {}
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
if (existing) {
|
|
72
|
-
throw new _common.ConflictException({
|
|
73
|
-
message: `Social provider "${provider}" is already configured`,
|
|
74
|
-
messageKey: _config.SOCIAL_AUTH_CONFIG_MESSAGES.PROVIDER_ALREADY_CONFIGURED,
|
|
75
|
-
messageVariables: {
|
|
76
|
-
provider
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
async getExtraManipulateQuery(query, filterDto, user) {
|
|
82
|
-
const result = await super.getExtraManipulateQuery(query, filterDto, user);
|
|
83
|
-
query.orderBy(`${this.entityName}.provider`, 'ASC');
|
|
84
|
-
return result;
|
|
85
|
-
}
|
|
86
|
-
constructor(cacheManager, utilsService, dataSourceProvider){
|
|
87
|
-
super(_config.AUTH_EVENT_ENTITIES.SOCIAL_AUTH_CONFIG, cacheManager, utilsService, SocialAuthConfigService.name, true, _config.AUTH_EVENT_MODULE, dataSourceProvider, _socialauthconfigentity.SocialAuthConfig), _define_property(this, "cacheManager", void 0), _define_property(this, "utilsService", void 0), this.cacheManager = cacheManager, this.utilsService = utilsService;
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
SocialAuthConfigService = _ts_decorate([
|
|
91
|
-
(0, _common.Injectable)({
|
|
92
|
-
scope: _common.Scope.REQUEST
|
|
93
|
-
}),
|
|
94
|
-
_ts_param(0, (0, _common.Inject)('CACHE_INSTANCE')),
|
|
95
|
-
_ts_param(1, (0, _common.Inject)(_modules.UtilsService)),
|
|
96
|
-
_ts_param(2, (0, _common.Inject)(_authdatasourceprovider.AuthDataSourceProvider)),
|
|
97
|
-
_ts_metadata("design:type", Function),
|
|
98
|
-
_ts_metadata("design:paramtypes", [
|
|
99
|
-
typeof _classes.HybridCache === "undefined" ? Object : _classes.HybridCache,
|
|
100
|
-
typeof _modules.UtilsService === "undefined" ? Object : _modules.UtilsService,
|
|
101
|
-
typeof _authdatasourceprovider.AuthDataSourceProvider === "undefined" ? Object : _authdatasourceprovider.AuthDataSourceProvider
|
|
102
|
-
])
|
|
103
|
-
], SocialAuthConfigService);
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
const _common = require("@nestjs/common");
|
|
6
|
-
const _repositorymock = require("@test-utils/mocks/repository.mock");
|
|
7
|
-
const _typeorm = require("typeorm");
|
|
8
|
-
const _socialprovidertypeenum = require("../enums/social-provider-type.enum");
|
|
9
|
-
const _socialauthconfigservice = require("./social-auth-config.service");
|
|
10
|
-
describe('SocialAuthConfigService', ()=>{
|
|
11
|
-
let repo;
|
|
12
|
-
let service;
|
|
13
|
-
beforeEach(()=>{
|
|
14
|
-
repo = (0, _repositorymock.createMockRepository)();
|
|
15
|
-
const dataSourceProvider = {
|
|
16
|
-
getRepository: jest.fn().mockResolvedValue(repo)
|
|
17
|
-
};
|
|
18
|
-
service = new _socialauthconfigservice.SocialAuthConfigService({
|
|
19
|
-
get: jest.fn(),
|
|
20
|
-
set: jest.fn(),
|
|
21
|
-
del: jest.fn()
|
|
22
|
-
}, {}, dataSourceProvider);
|
|
23
|
-
});
|
|
24
|
-
const beforeInsert = (dto)=>service.beforeInsertOperation(dto, null, {});
|
|
25
|
-
const beforeUpdate = (dto)=>service.beforeUpdateOperation(dto, null, {});
|
|
26
|
-
it('allows the first configuration of a provider', async ()=>{
|
|
27
|
-
repo.findOne.mockResolvedValue(null);
|
|
28
|
-
await expect(beforeInsert({
|
|
29
|
-
provider: _socialprovidertypeenum.SocialProviderTypeEnum.GOOGLE
|
|
30
|
-
})).resolves.toBeUndefined();
|
|
31
|
-
});
|
|
32
|
-
it('rejects a second row for a provider that is already configured', async ()=>{
|
|
33
|
-
repo.findOne.mockResolvedValue({
|
|
34
|
-
id: 'existing'
|
|
35
|
-
});
|
|
36
|
-
await expect(beforeInsert({
|
|
37
|
-
provider: _socialprovidertypeenum.SocialProviderTypeEnum.GOOGLE
|
|
38
|
-
})).rejects.toThrow(_common.ConflictException);
|
|
39
|
-
});
|
|
40
|
-
it('checks every provider in a batch insert', async ()=>{
|
|
41
|
-
repo.findOne.mockResolvedValue(null);
|
|
42
|
-
await beforeInsert([
|
|
43
|
-
{
|
|
44
|
-
provider: _socialprovidertypeenum.SocialProviderTypeEnum.GOOGLE
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
provider: _socialprovidertypeenum.SocialProviderTypeEnum.FACEBOOK
|
|
48
|
-
}
|
|
49
|
-
]);
|
|
50
|
-
expect(repo.findOne).toHaveBeenCalledTimes(2);
|
|
51
|
-
});
|
|
52
|
-
it('lets a row keep its own provider on update', async ()=>{
|
|
53
|
-
repo.findOne.mockResolvedValue(null);
|
|
54
|
-
await beforeUpdate({
|
|
55
|
-
id: 'config-1',
|
|
56
|
-
provider: _socialprovidertypeenum.SocialProviderTypeEnum.GOOGLE
|
|
57
|
-
});
|
|
58
|
-
expect(repo.findOne).toHaveBeenCalledWith(expect.objectContaining({
|
|
59
|
-
where: expect.objectContaining({
|
|
60
|
-
id: (0, _typeorm.Not)('config-1')
|
|
61
|
-
})
|
|
62
|
-
}));
|
|
63
|
-
});
|
|
64
|
-
it('skips the check for an update that does not touch the provider', async ()=>{
|
|
65
|
-
await beforeUpdate({
|
|
66
|
-
id: 'config-1',
|
|
67
|
-
isEnabled: false
|
|
68
|
-
});
|
|
69
|
-
expect(repo.findOne).not.toHaveBeenCalled();
|
|
70
|
-
});
|
|
71
|
-
});
|
|
@@ -1,310 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "SocialAuthService", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return SocialAuthService;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _nestjsshared = require("@flusys/nestjs-shared");
|
|
12
|
-
const _classes = require("@flusys/nestjs-shared/classes");
|
|
13
|
-
const _constants = require("@flusys/nestjs-shared/constants");
|
|
14
|
-
const _common = require("@nestjs/common");
|
|
15
|
-
const _crypto = require("crypto");
|
|
16
|
-
const _typeorm = require("typeorm");
|
|
17
|
-
const _config = require("../config");
|
|
18
|
-
const _appuserentity = require("../entities/app-user.entity");
|
|
19
|
-
const _socialauthconfigentity = require("../entities/social-auth-config.entity");
|
|
20
|
-
const _socialprovidertypeenum = require("../enums/social-provider-type.enum");
|
|
21
|
-
const _socialproviderregistry = require("../providers/social-provider.registry");
|
|
22
|
-
const _authdatasourceprovider = require("./auth-datasource.provider");
|
|
23
|
-
const _authenticationservice = require("./authentication.service");
|
|
24
|
-
function _define_property(obj, key, value) {
|
|
25
|
-
if (key in obj) {
|
|
26
|
-
Object.defineProperty(obj, key, {
|
|
27
|
-
value: value,
|
|
28
|
-
enumerable: true,
|
|
29
|
-
configurable: true,
|
|
30
|
-
writable: true
|
|
31
|
-
});
|
|
32
|
-
} else {
|
|
33
|
-
obj[key] = value;
|
|
34
|
-
}
|
|
35
|
-
return obj;
|
|
36
|
-
}
|
|
37
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
38
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
39
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
40
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
41
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
42
|
-
}
|
|
43
|
-
function _ts_metadata(k, v) {
|
|
44
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
45
|
-
}
|
|
46
|
-
function _ts_param(paramIndex, decorator) {
|
|
47
|
-
return function(target, key) {
|
|
48
|
-
decorator(target, key, paramIndex);
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
let SocialAuthService = class SocialAuthService {
|
|
52
|
-
async listEnabledProviders(redirectUri) {
|
|
53
|
-
const repository = await this.dataSourceProvider.getRepository(_socialauthconfigentity.SocialAuthConfig);
|
|
54
|
-
const configs = await repository.find({
|
|
55
|
-
where: {
|
|
56
|
-
isEnabled: true,
|
|
57
|
-
deletedAt: (0, _typeorm.IsNull)()
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
return configs.filter((config)=>!!config.clientId && !!config.clientSecret).map((config)=>({
|
|
61
|
-
provider: config.provider,
|
|
62
|
-
redirectUri
|
|
63
|
-
}));
|
|
64
|
-
}
|
|
65
|
-
async createAuthorization(provider, redirectUri) {
|
|
66
|
-
const config = await this.getUsableConfig(provider);
|
|
67
|
-
const state = (0, _crypto.randomBytes)(24).toString('hex');
|
|
68
|
-
await this.getCache().set(this.stateKey(state), {
|
|
69
|
-
provider,
|
|
70
|
-
redirectUri
|
|
71
|
-
}, _config.SOCIAL_STATE_TTL_MS);
|
|
72
|
-
return {
|
|
73
|
-
provider,
|
|
74
|
-
authorizationUrl: (0, _socialproviderregistry.getSocialProvider)(provider).buildAuthorizationUrl(this.toCredentials(config, redirectUri), state),
|
|
75
|
-
state
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
async completeLogin(code, state, redirectUri) {
|
|
79
|
-
const provider = await this.consumeState(state, redirectUri);
|
|
80
|
-
const config = await this.getUsableConfig(provider);
|
|
81
|
-
const profile = await (0, _socialproviderregistry.getSocialProvider)(provider).fetchProfile(this.toCredentials(config, redirectUri), code);
|
|
82
|
-
if (!profile.providerUserId) {
|
|
83
|
-
throw new _common.UnauthorizedException({
|
|
84
|
-
message: `${provider} did not return an account identifier`,
|
|
85
|
-
messageKey: _config.SOCIAL_AUTH_MESSAGES.PROFILE_INCOMPLETE,
|
|
86
|
-
messageVariables: {
|
|
87
|
-
provider
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
const user = await this.resolveUser(provider, profile);
|
|
92
|
-
const response = await this.authService.issueLoginForUser(user);
|
|
93
|
-
this.publishSocialEvent(_config.AUTH_EVENT_ENTITIES.SESSION, _config.AUTH_EVENT_ACTIONS.SOCIAL_LOGGED_IN, user, provider);
|
|
94
|
-
return response;
|
|
95
|
-
}
|
|
96
|
-
async resolveUser(provider, profile) {
|
|
97
|
-
this.ensureVerifiedEmail(provider, profile);
|
|
98
|
-
const userRepository = await this.dataSourceProvider.getRepository(_appuserentity.AppUser);
|
|
99
|
-
const existing = await userRepository.findOne({
|
|
100
|
-
where: {
|
|
101
|
-
email: profile.email
|
|
102
|
-
},
|
|
103
|
-
withDeleted: true
|
|
104
|
-
});
|
|
105
|
-
if (existing?.deletedAt) {
|
|
106
|
-
throw new _common.UnauthorizedException({
|
|
107
|
-
message: 'This account has been permanently deleted. Please contact your system administrator.',
|
|
108
|
-
messageKey: _config.SOCIAL_AUTH_MESSAGES.ACCOUNT_DELETED
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
if (existing) {
|
|
112
|
-
// The provider already proved ownership of this email (ensureVerifiedEmail above),
|
|
113
|
-
// so a social login carries at least as much proof as clicking a verification link.
|
|
114
|
-
if (!existing.emailVerified) {
|
|
115
|
-
existing.emailVerified = true;
|
|
116
|
-
await userRepository.save(existing);
|
|
117
|
-
}
|
|
118
|
-
return existing;
|
|
119
|
-
}
|
|
120
|
-
const user = await this.registerUser(provider, userRepository, profile);
|
|
121
|
-
this.publishSocialEvent(_config.AUTH_EVENT_ENTITIES.USER, _config.AUTH_EVENT_ACTIONS.REGISTERED, user, provider);
|
|
122
|
-
return user;
|
|
123
|
-
}
|
|
124
|
-
ensureVerifiedEmail(provider, profile) {
|
|
125
|
-
if (!profile.email) {
|
|
126
|
-
throw new _common.UnauthorizedException({
|
|
127
|
-
message: `${provider} did not share an email address`,
|
|
128
|
-
messageKey: _config.SOCIAL_AUTH_MESSAGES.EMAIL_REQUIRED,
|
|
129
|
-
messageVariables: {
|
|
130
|
-
provider
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
if (!profile.emailVerified) {
|
|
135
|
-
throw new _common.UnauthorizedException({
|
|
136
|
-
message: `${provider} has not verified this email address`,
|
|
137
|
-
messageKey: _config.SOCIAL_AUTH_MESSAGES.EMAIL_NOT_VERIFIED,
|
|
138
|
-
messageVariables: {
|
|
139
|
-
provider
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
async registerUser(provider, userRepository, profile) {
|
|
145
|
-
if (!this.dataSourceProvider.isSignUpEnabled()) {
|
|
146
|
-
throw new _common.UnauthorizedException({
|
|
147
|
-
message: `No account is linked to this ${provider} profile`,
|
|
148
|
-
messageKey: _config.SOCIAL_AUTH_MESSAGES.ACCOUNT_NOT_LINKED,
|
|
149
|
-
messageVariables: {
|
|
150
|
-
provider
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
if (this.dataSourceProvider.isCompanyFeatureEnabled()) {
|
|
155
|
-
throw new _common.UnauthorizedException({
|
|
156
|
-
message: `No account is linked to this ${provider} profile. Please sign up manually and join or create a company first, then social sign-in will work.`,
|
|
157
|
-
messageKey: _config.SOCIAL_AUTH_MESSAGES.COMPANY_REQUIRED,
|
|
158
|
-
messageVariables: {
|
|
159
|
-
provider
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
return userRepository.save(userRepository.create({
|
|
164
|
-
email: profile.email,
|
|
165
|
-
name: profile.name,
|
|
166
|
-
password: null,
|
|
167
|
-
isActive: true,
|
|
168
|
-
emailVerified: true
|
|
169
|
-
}));
|
|
170
|
-
}
|
|
171
|
-
async getUsableConfig(provider) {
|
|
172
|
-
const repository = await this.dataSourceProvider.getRepository(_socialauthconfigentity.SocialAuthConfig);
|
|
173
|
-
const config = await repository.findOne({
|
|
174
|
-
where: {
|
|
175
|
-
provider,
|
|
176
|
-
deletedAt: (0, _typeorm.IsNull)()
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
if (!config?.isEnabled) {
|
|
180
|
-
throw new _common.BadRequestException({
|
|
181
|
-
message: `Social sign-in with ${provider} is not enabled`,
|
|
182
|
-
messageKey: _config.SOCIAL_AUTH_MESSAGES.PROVIDER_DISABLED,
|
|
183
|
-
messageVariables: {
|
|
184
|
-
provider
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
if (!config.clientId || !config.clientSecret) {
|
|
189
|
-
throw new _common.BadRequestException({
|
|
190
|
-
message: `Social sign-in with ${provider} is missing its client credentials`,
|
|
191
|
-
messageKey: _config.SOCIAL_AUTH_MESSAGES.PROVIDER_NOT_CONFIGURED,
|
|
192
|
-
messageVariables: {
|
|
193
|
-
provider
|
|
194
|
-
}
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
return config;
|
|
198
|
-
}
|
|
199
|
-
toCredentials(config, redirectUri) {
|
|
200
|
-
return {
|
|
201
|
-
clientId: config.clientId,
|
|
202
|
-
clientSecret: config.clientSecret,
|
|
203
|
-
redirectUri,
|
|
204
|
-
scopes: config.scopes,
|
|
205
|
-
extraConfig: config.extraConfig
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
async consumeState(state, redirectUri) {
|
|
209
|
-
const key = this.stateKey(state);
|
|
210
|
-
const stored = await this.getCache().get(key);
|
|
211
|
-
await this.getCache().del(key);
|
|
212
|
-
if (!stored) {
|
|
213
|
-
throw new _common.UnauthorizedException({
|
|
214
|
-
message: 'Social sign-in session is invalid or has expired',
|
|
215
|
-
messageKey: _config.SOCIAL_AUTH_MESSAGES.STATE_INVALID
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
if (stored.redirectUri !== redirectUri) {
|
|
219
|
-
throw new _common.UnauthorizedException({
|
|
220
|
-
message: 'Redirect URI does not match the one the sign-in started with',
|
|
221
|
-
messageKey: _config.SOCIAL_AUTH_MESSAGES.REDIRECT_URI_MISMATCH
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
return stored.provider;
|
|
225
|
-
}
|
|
226
|
-
stateKey(state) {
|
|
227
|
-
return `${_config.SOCIAL_STATE_PREFIX}:${state}`;
|
|
228
|
-
}
|
|
229
|
-
getCache() {
|
|
230
|
-
if (!this.cacheManager) {
|
|
231
|
-
throw new _common.InternalServerErrorException({
|
|
232
|
-
message: 'Cache is required to hold the social sign-in state',
|
|
233
|
-
messageKey: _constants.SYSTEM_MESSAGES.SERVICE_NOT_AVAILABLE,
|
|
234
|
-
messageVariables: {
|
|
235
|
-
provider: 'CACHE_INSTANCE',
|
|
236
|
-
available: ''
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
return this.cacheManager;
|
|
241
|
-
}
|
|
242
|
-
publishSocialEvent(entity, action, user, provider) {
|
|
243
|
-
void (0, _classes.publishDomainEvent)({
|
|
244
|
-
module: _config.AUTH_EVENT_MODULE,
|
|
245
|
-
entity,
|
|
246
|
-
action,
|
|
247
|
-
ids: [
|
|
248
|
-
user.id
|
|
249
|
-
],
|
|
250
|
-
metadata: {
|
|
251
|
-
email: user.email,
|
|
252
|
-
provider
|
|
253
|
-
},
|
|
254
|
-
user: {
|
|
255
|
-
id: user.id,
|
|
256
|
-
email: user.email
|
|
257
|
-
}
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
constructor(authService, dataSourceProvider, cacheManager){
|
|
261
|
-
_define_property(this, "authService", void 0);
|
|
262
|
-
_define_property(this, "dataSourceProvider", void 0);
|
|
263
|
-
_define_property(this, "cacheManager", void 0);
|
|
264
|
-
this.authService = authService;
|
|
265
|
-
this.dataSourceProvider = dataSourceProvider;
|
|
266
|
-
this.cacheManager = cacheManager;
|
|
267
|
-
}
|
|
268
|
-
};
|
|
269
|
-
_ts_decorate([
|
|
270
|
-
(0, _nestjsshared.LogAction)({
|
|
271
|
-
action: 'auth.social.authorize',
|
|
272
|
-
module: 'auth',
|
|
273
|
-
includeParams: false
|
|
274
|
-
}),
|
|
275
|
-
_ts_metadata("design:type", Function),
|
|
276
|
-
_ts_metadata("design:paramtypes", [
|
|
277
|
-
typeof _socialprovidertypeenum.SocialProviderTypeEnum === "undefined" ? Object : _socialprovidertypeenum.SocialProviderTypeEnum,
|
|
278
|
-
String
|
|
279
|
-
]),
|
|
280
|
-
_ts_metadata("design:returntype", Promise)
|
|
281
|
-
], SocialAuthService.prototype, "createAuthorization", null);
|
|
282
|
-
_ts_decorate([
|
|
283
|
-
(0, _nestjsshared.LogAction)({
|
|
284
|
-
action: 'auth.social.login',
|
|
285
|
-
module: 'auth',
|
|
286
|
-
includeParams: false
|
|
287
|
-
}),
|
|
288
|
-
_ts_metadata("design:type", Function),
|
|
289
|
-
_ts_metadata("design:paramtypes", [
|
|
290
|
-
String,
|
|
291
|
-
String,
|
|
292
|
-
String
|
|
293
|
-
]),
|
|
294
|
-
_ts_metadata("design:returntype", Promise)
|
|
295
|
-
], SocialAuthService.prototype, "completeLogin", null);
|
|
296
|
-
SocialAuthService = _ts_decorate([
|
|
297
|
-
(0, _common.Injectable)({
|
|
298
|
-
scope: _common.Scope.REQUEST
|
|
299
|
-
}),
|
|
300
|
-
_ts_param(0, (0, _common.Inject)(_authenticationservice.AuthenticationService)),
|
|
301
|
-
_ts_param(1, (0, _common.Inject)(_authdatasourceprovider.AuthDataSourceProvider)),
|
|
302
|
-
_ts_param(2, (0, _common.Optional)()),
|
|
303
|
-
_ts_param(2, (0, _common.Inject)('CACHE_INSTANCE')),
|
|
304
|
-
_ts_metadata("design:type", Function),
|
|
305
|
-
_ts_metadata("design:paramtypes", [
|
|
306
|
-
typeof _authenticationservice.AuthenticationService === "undefined" ? Object : _authenticationservice.AuthenticationService,
|
|
307
|
-
typeof _authdatasourceprovider.AuthDataSourceProvider === "undefined" ? Object : _authdatasourceprovider.AuthDataSourceProvider,
|
|
308
|
-
typeof _classes.HybridCache === "undefined" ? Object : _classes.HybridCache
|
|
309
|
-
])
|
|
310
|
-
], SocialAuthService);
|