@solidxai/core 0.1.16-beta.2 → 0.1.16-beta.4

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.
Files changed (111) hide show
  1. package/CHANGELOG.md +1319 -0
  2. package/dist/controllers/chatter-message-details.controller.d.ts.map +1 -1
  3. package/dist/controllers/chatter-message-details.controller.js +2 -6
  4. package/dist/controllers/chatter-message-details.controller.js.map +1 -1
  5. package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
  6. package/dist/controllers/chatter-message.controller.js +3 -7
  7. package/dist/controllers/chatter-message.controller.js.map +1 -1
  8. package/dist/controllers/dashboard-user-layout.controller.d.ts.map +1 -1
  9. package/dist/controllers/dashboard-user-layout.controller.js +2 -6
  10. package/dist/controllers/dashboard-user-layout.controller.js.map +1 -1
  11. package/dist/controllers/import-transaction-error-log.controller.d.ts.map +1 -1
  12. package/dist/controllers/import-transaction-error-log.controller.js +2 -6
  13. package/dist/controllers/import-transaction-error-log.controller.js.map +1 -1
  14. package/dist/controllers/import-transaction.controller.d.ts.map +1 -1
  15. package/dist/controllers/import-transaction.controller.js +2 -6
  16. package/dist/controllers/import-transaction.controller.js.map +1 -1
  17. package/dist/controllers/list-of-values.controller.d.ts.map +1 -1
  18. package/dist/controllers/list-of-values.controller.js +2 -6
  19. package/dist/controllers/list-of-values.controller.js.map +1 -1
  20. package/dist/controllers/locale.controller.d.ts.map +1 -1
  21. package/dist/controllers/locale.controller.js +2 -6
  22. package/dist/controllers/locale.controller.js.map +1 -1
  23. package/dist/controllers/media.controller.d.ts.map +1 -1
  24. package/dist/controllers/media.controller.js +2 -6
  25. package/dist/controllers/media.controller.js.map +1 -1
  26. package/dist/controllers/model-sequence.controller.d.ts.map +1 -1
  27. package/dist/controllers/model-sequence.controller.js +2 -6
  28. package/dist/controllers/model-sequence.controller.js.map +1 -1
  29. package/dist/controllers/saved-filters.controller.d.ts.map +1 -1
  30. package/dist/controllers/saved-filters.controller.js +2 -6
  31. package/dist/controllers/saved-filters.controller.js.map +1 -1
  32. package/dist/controllers/scheduled-job.controller.d.ts.map +1 -1
  33. package/dist/controllers/scheduled-job.controller.js +2 -6
  34. package/dist/controllers/scheduled-job.controller.js.map +1 -1
  35. package/dist/controllers/security-rule.controller.d.ts.map +1 -1
  36. package/dist/controllers/security-rule.controller.js +2 -6
  37. package/dist/controllers/security-rule.controller.js.map +1 -1
  38. package/dist/controllers/user-activity-history.controller.d.ts.map +1 -1
  39. package/dist/controllers/user-activity-history.controller.js +2 -6
  40. package/dist/controllers/user-activity-history.controller.js.map +1 -1
  41. package/dist/controllers/user-view-metadata.controller.d.ts.map +1 -1
  42. package/dist/controllers/user-view-metadata.controller.js +2 -6
  43. package/dist/controllers/user-view-metadata.controller.js.map +1 -1
  44. package/dist/controllers/workflow-definition.controller.d.ts.map +1 -1
  45. package/dist/controllers/workflow-definition.controller.js +2 -6
  46. package/dist/controllers/workflow-definition.controller.js.map +1 -1
  47. package/dist/controllers/workflow-execution-artifact.controller.d.ts.map +1 -1
  48. package/dist/controllers/workflow-execution-artifact.controller.js +2 -6
  49. package/dist/controllers/workflow-execution-artifact.controller.js.map +1 -1
  50. package/dist/controllers/workflow-execution-log.controller.d.ts.map +1 -1
  51. package/dist/controllers/workflow-execution-log.controller.js +2 -6
  52. package/dist/controllers/workflow-execution-log.controller.js.map +1 -1
  53. package/dist/controllers/workflow-execution.controller.d.ts.map +1 -1
  54. package/dist/controllers/workflow-execution.controller.js +2 -6
  55. package/dist/controllers/workflow-execution.controller.js.map +1 -1
  56. package/dist/controllers/workflow-secret.controller.d.ts.map +1 -1
  57. package/dist/controllers/workflow-secret.controller.js +2 -6
  58. package/dist/controllers/workflow-secret.controller.js.map +1 -1
  59. package/dist/controllers/workflow-step-execution.controller.d.ts.map +1 -1
  60. package/dist/controllers/workflow-step-execution.controller.js +2 -6
  61. package/dist/controllers/workflow-step-execution.controller.js.map +1 -1
  62. package/dist/controllers/workflow-trigger-execution.controller.d.ts.map +1 -1
  63. package/dist/controllers/workflow-trigger-execution.controller.js +2 -6
  64. package/dist/controllers/workflow-trigger-execution.controller.js.map +1 -1
  65. package/dist/dtos/basic-filters.dto.d.ts +3 -5
  66. package/dist/dtos/basic-filters.dto.d.ts.map +1 -1
  67. package/dist/dtos/basic-filters.dto.js +6 -8
  68. package/dist/dtos/basic-filters.dto.js.map +1 -1
  69. package/dist/dtos/otp-sign-up.dto.d.ts +1 -0
  70. package/dist/dtos/otp-sign-up.dto.d.ts.map +1 -1
  71. package/dist/dtos/otp-sign-up.dto.js +12 -1
  72. package/dist/dtos/otp-sign-up.dto.js.map +1 -1
  73. package/dist/enums/show-soft-deleted.enum.d.ts +5 -0
  74. package/dist/enums/show-soft-deleted.enum.d.ts.map +1 -0
  75. package/dist/enums/show-soft-deleted.enum.js +9 -0
  76. package/dist/enums/show-soft-deleted.enum.js.map +1 -0
  77. package/dist/index.d.ts +1 -0
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +1 -0
  80. package/dist/index.js.map +1 -1
  81. package/dist/services/authentication.service.d.ts.map +1 -1
  82. package/dist/services/authentication.service.js +15 -6
  83. package/dist/services/authentication.service.js.map +1 -1
  84. package/package.json +1 -1
  85. package/postman/signup-issues +3 -2
  86. package/src/controllers/chatter-message-details.controller.ts +1 -4
  87. package/src/controllers/chatter-message.controller.ts +1 -4
  88. package/src/controllers/dashboard-user-layout.controller.ts +1 -4
  89. package/src/controllers/import-transaction-error-log.controller.ts +1 -4
  90. package/src/controllers/import-transaction.controller.ts +1 -4
  91. package/src/controllers/list-of-values.controller.ts +1 -4
  92. package/src/controllers/locale.controller.ts +1 -4
  93. package/src/controllers/media.controller.ts +1 -4
  94. package/src/controllers/model-sequence.controller.ts +1 -4
  95. package/src/controllers/saved-filters.controller.ts +1 -4
  96. package/src/controllers/scheduled-job.controller.ts +1 -4
  97. package/src/controllers/security-rule.controller.ts +1 -4
  98. package/src/controllers/user-activity-history.controller.ts +1 -4
  99. package/src/controllers/user-view-metadata.controller.ts +1 -4
  100. package/src/controllers/workflow-definition.controller.ts +1 -4
  101. package/src/controllers/workflow-execution-artifact.controller.ts +1 -4
  102. package/src/controllers/workflow-execution-log.controller.ts +1 -4
  103. package/src/controllers/workflow-execution.controller.ts +1 -4
  104. package/src/controllers/workflow-secret.controller.ts +1 -4
  105. package/src/controllers/workflow-step-execution.controller.ts +1 -4
  106. package/src/controllers/workflow-trigger-execution.controller.ts +1 -4
  107. package/src/dtos/basic-filters.dto.ts +6 -7
  108. package/src/dtos/otp-sign-up.dto.ts +11 -1
  109. package/src/enums/show-soft-deleted.enum.ts +4 -0
  110. package/src/index.ts +1 -0
  111. package/src/services/authentication.service.ts +61 -26
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidxai/core",
3
- "version": "0.1.16-beta.2",
3
+ "version": "0.1.16-beta.4",
4
4
  "description": "This module is a NestJS module containing all the required core providers required by a Solid application",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,2 +1,3 @@
1
- fullName -> not set in the case of public registration
2
- userType is not set in the case of public registration
1
+ userType is not set in the case of public registration (pending)
2
+ need to test with transactional and mobile type (pending)
3
+ need to check the oauth flow as well
@@ -5,10 +5,7 @@ import { ChatterMessageDetailsService } from '../services/chatter-message-detail
5
5
  import { CreateChatterMessageDetailsDto } from '../dtos/create-chatter-message-details.dto';
6
6
  import { UpdateChatterMessageDetailsDto } from '../dtos/update-chatter-message-details.dto';
7
7
 
8
- enum ShowSoftDeleted {
9
- INCLUSIVE = "inclusive",
10
- EXCLUSIVE = "exclusive",
11
- }
8
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
12
9
 
13
10
  @ApiTags('Solid Core')
14
11
  @Controller('chatter-message-details')
@@ -10,10 +10,7 @@ import { SolidRequestContextDecorator } from 'src/decorators/solid-request-conte
10
10
  import { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';
11
11
  import { Public } from 'src/decorators/public.decorator';
12
12
 
13
- enum ShowSoftDeleted {
14
- INCLUSIVE = "inclusive",
15
- EXCLUSIVE = "exclusive",
16
- }
13
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
17
14
 
18
15
  @ApiTags('Solid Core')
19
16
  @Controller('chatter-message')
@@ -5,10 +5,7 @@ import { DashboardUserLayoutService } from '../services/dashboard-user-layout.se
5
5
  import { CreateDashboardUserLayoutDto } from '../dtos/create-dashboard-user-layout.dto';
6
6
  import { UpdateDashboardUserLayoutDto } from '../dtos/update-dashboard-user-layout.dto';
7
7
 
8
- enum ShowSoftDeleted {
9
- INCLUSIVE = "inclusive",
10
- EXCLUSIVE = "exclusive",
11
- }
8
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
12
9
 
13
10
  @ApiTags('Solid Core')
14
11
  @Controller('dashboard-user-layout')
@@ -5,10 +5,7 @@ import { ImportTransactionErrorLogService } from '../services/import-transaction
5
5
  import { CreateImportTransactionErrorLogDto } from '../dtos/create-import-transaction-error-log.dto';
6
6
  import { UpdateImportTransactionErrorLogDto } from '../dtos/update-import-transaction-error-log.dto';
7
7
 
8
- enum ShowSoftDeleted {
9
- INCLUSIVE = "inclusive",
10
- EXCLUSIVE = "exclusive",
11
- }
8
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
12
9
 
13
10
  @ApiTags('Solid Core')
14
11
  @Controller('import-transaction-error-log')
@@ -9,10 +9,7 @@ import { ActiveUser } from 'src/decorators/active-user.decorator';
9
9
  import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
10
10
  import { setFileDownloadHeaders } from 'src/helpers/file-download.helper';
11
11
 
12
- enum ShowSoftDeleted {
13
- INCLUSIVE = "inclusive",
14
- EXCLUSIVE = "exclusive",
15
- }
12
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
16
13
 
17
14
  @ApiTags('Solid Core')
18
15
  @Controller('import-transaction')
@@ -5,10 +5,7 @@ import { ListOfValuesService } from '../services/list-of-values.service';
5
5
  import { CreateListOfValuesDto } from '../dtos/create-list-of-values.dto';
6
6
  import { UpdateListOfValuesDto } from '../dtos/update-list-of-values.dto';
7
7
 
8
- enum ShowSoftDeleted {
9
- INCLUSIVE = "inclusive",
10
- EXCLUSIVE = "exclusive",
11
- }
8
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
12
9
 
13
10
  @ApiTags('Solid Core')
14
11
  @Controller('list-of-values')
@@ -7,10 +7,7 @@ import { LocaleService } from 'src/services/locale.service';
7
7
  import { CreateLocaleDto } from 'src/dtos/create-locale.dto';
8
8
  import { UpdateLocaleDto } from 'src/dtos/update-locale.dto';
9
9
 
10
- enum ShowSoftDeleted {
11
- INCLUSIVE = "inclusive",
12
- EXCLUSIVE = "exclusive",
13
- }
10
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
14
11
 
15
12
  @ApiTags('Solid Core')
16
13
  @Controller('locale')
@@ -12,10 +12,7 @@ import { Response } from 'express';
12
12
  import { getLowercaseFileExtension, INLINE_SAFE_EXTENSIONS } from 'src/constants/media-file-types';
13
13
  import { setFileDownloadHeaders } from 'src/helpers/file-download.helper';
14
14
 
15
- enum ShowSoftDeleted {
16
- INCLUSIVE = "inclusive",
17
- EXCLUSIVE = "exclusive",
18
- }
15
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
19
16
 
20
17
  @ApiTags('Solid Core')
21
18
  @Controller('media')
@@ -5,10 +5,7 @@ import { ModelSequenceService } from '../services/model-sequence.service';
5
5
  import { CreateModelSequenceDto } from '../dtos/create-model-sequence.dto';
6
6
  import { UpdateModelSequenceDto } from '../dtos/update-model-sequence.dto';
7
7
 
8
- enum ShowSoftDeleted {
9
- INCLUSIVE = "inclusive",
10
- EXCLUSIVE = "exclusive",
11
- }
8
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
12
9
 
13
10
  @ApiTags('Solid Core')
14
11
  @Controller('model-sequence')
@@ -5,10 +5,7 @@ import { SavedFiltersService } from '../services/saved-filters.service';
5
5
  import { CreateSavedFiltersDto } from '../dtos/create-saved-filters.dto';
6
6
  import { UpdateSavedFiltersDto } from '../dtos/update-saved-filters.dto';
7
7
 
8
- enum ShowSoftDeleted {
9
- INCLUSIVE = "inclusive",
10
- EXCLUSIVE = "exclusive",
11
- }
8
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
12
9
 
13
10
  @ApiTags('Solid Core')
14
11
  @Controller('saved-filters')
@@ -5,10 +5,7 @@ import { CreateScheduledJobDto } from 'src/dtos/create-scheduled-job.dto';
5
5
  import { UpdateScheduledJobDto } from 'src/dtos/update-scheduled-job.dto';
6
6
  import { ScheduledJobService } from 'src/services/scheduled-job.service';
7
7
 
8
- enum ShowSoftDeleted {
9
- INCLUSIVE = "inclusive",
10
- EXCLUSIVE = "exclusive",
11
- }
8
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
12
9
 
13
10
  @ApiTags('Solid Core')
14
11
  @Controller('scheduled-job')
@@ -5,10 +5,7 @@ import { SecurityRuleService } from '../services/security-rule.service';
5
5
  import { CreateSecurityRuleDto } from '../dtos/create-security-rule.dto';
6
6
  import { UpdateSecurityRuleDto } from '../dtos/update-security-rule.dto';
7
7
 
8
- enum ShowSoftDeleted {
9
- INCLUSIVE = "inclusive",
10
- EXCLUSIVE = "exclusive",
11
- }
8
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
12
9
 
13
10
  @ApiTags('Solid Core')
14
11
  @Controller('security-rule')
@@ -5,10 +5,7 @@ import { UserActivityHistoryService } from '../services/user-activity-history.se
5
5
  import { CreateUserActivityHistoryDto } from '../dtos/create-user-activity-history.dto';
6
6
  import { UpdateUserActivityHistoryDto } from '../dtos/update-user-activity-history.dto';
7
7
 
8
- enum ShowSoftDeleted {
9
- INCLUSIVE = "inclusive",
10
- EXCLUSIVE = "exclusive",
11
- }
8
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
12
9
 
13
10
  @ApiTags('Solid Core')
14
11
  @Controller('user-activity-history')
@@ -8,10 +8,7 @@ import { UpsertUserViewMetadataDto } from 'src/dtos/upsert-user-view-metadata.dt
8
8
  import { ActiveUser } from 'src/decorators/active-user.decorator';
9
9
  import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
10
10
 
11
- enum ShowSoftDeleted {
12
- INCLUSIVE = "inclusive",
13
- EXCLUSIVE = "exclusive",
14
- }
11
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
15
12
 
16
13
  @ApiTags('Solid Core')
17
14
  @Controller('user-view-metadata')
@@ -8,10 +8,7 @@ import { ExecuteWorkflowDto } from '../dtos/execute-workflow.dto';
8
8
  import { WorkflowNodeRegistryService } from '../services/workflow/workflow-node-registry.service';
9
9
  import { ValidateWorkflowDefinitionDto } from '../dtos/validate-workflow-definition.dto';
10
10
 
11
- enum ShowSoftDeleted {
12
- INCLUSIVE = "inclusive",
13
- EXCLUSIVE = "exclusive",
14
- }
11
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
15
12
 
16
13
  @ApiTags('Solid Core')
17
14
  @Controller('workflow-definition')
@@ -5,10 +5,7 @@ import { WorkflowExecutionArtifactService } from '../services/workflow-execution
5
5
  import { CreateWorkflowExecutionArtifactDto } from '../dtos/create-workflow-execution-artifact.dto';
6
6
  import { UpdateWorkflowExecutionArtifactDto } from '../dtos/update-workflow-execution-artifact.dto';
7
7
 
8
- enum ShowSoftDeleted {
9
- INCLUSIVE = "inclusive",
10
- EXCLUSIVE = "exclusive",
11
- }
8
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
12
9
 
13
10
  @ApiTags('Solid Core')
14
11
  @Controller('workflow-execution-artifact')
@@ -5,10 +5,7 @@ import { WorkflowExecutionLogService } from '../services/workflow-execution-log.
5
5
  import { CreateWorkflowExecutionLogDto } from '../dtos/create-workflow-execution-log.dto';
6
6
  import { UpdateWorkflowExecutionLogDto } from '../dtos/update-workflow-execution-log.dto';
7
7
 
8
- enum ShowSoftDeleted {
9
- INCLUSIVE = "inclusive",
10
- EXCLUSIVE = "exclusive",
11
- }
8
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
12
9
 
13
10
  @ApiTags('Solid Core')
14
11
  @Controller('workflow-execution-log')
@@ -6,10 +6,7 @@ import { CreateWorkflowExecutionDto } from '../dtos/create-workflow-execution.dt
6
6
  import { UpdateWorkflowExecutionDto } from '../dtos/update-workflow-execution.dto';
7
7
  import { WorkflowRuntimeService } from '../services/workflow/workflow-runtime.service';
8
8
 
9
- enum ShowSoftDeleted {
10
- INCLUSIVE = "inclusive",
11
- EXCLUSIVE = "exclusive",
12
- }
9
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
13
10
 
14
11
  @ApiTags('Solid Core')
15
12
  @Controller('workflow-execution')
@@ -5,10 +5,7 @@ import { WorkflowSecretService } from '../services/workflow-secret.service';
5
5
  import { CreateWorkflowSecretDto } from '../dtos/create-workflow-secret.dto';
6
6
  import { UpdateWorkflowSecretDto } from '../dtos/update-workflow-secret.dto';
7
7
 
8
- enum ShowSoftDeleted {
9
- INCLUSIVE = "inclusive",
10
- EXCLUSIVE = "exclusive",
11
- }
8
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
12
9
 
13
10
  @ApiTags('Solid Core')
14
11
  @Controller('workflow-secret')
@@ -5,10 +5,7 @@ import { WorkflowStepExecutionService } from '../services/workflow-step-executio
5
5
  import { CreateWorkflowStepExecutionDto } from '../dtos/create-workflow-step-execution.dto';
6
6
  import { UpdateWorkflowStepExecutionDto } from '../dtos/update-workflow-step-execution.dto';
7
7
 
8
- enum ShowSoftDeleted {
9
- INCLUSIVE = "inclusive",
10
- EXCLUSIVE = "exclusive",
11
- }
8
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
12
9
 
13
10
  @ApiTags('Solid Core')
14
11
  @Controller('workflow-step-execution')
@@ -5,10 +5,7 @@ import { WorkflowTriggerExecutionService } from '../services/workflow-trigger-ex
5
5
  import { CreateWorkflowTriggerExecutionDto } from '../dtos/create-workflow-trigger-execution.dto';
6
6
  import { UpdateWorkflowTriggerExecutionDto } from '../dtos/update-workflow-trigger-execution.dto';
7
7
 
8
- enum ShowSoftDeleted {
9
- INCLUSIVE = "inclusive",
10
- EXCLUSIVE = "exclusive",
11
- }
8
+ import { ShowSoftDeleted } from '../enums/show-soft-deleted.enum';
12
9
 
13
10
  @ApiTags('Solid Core')
14
11
  @Controller('workflow-trigger-execution')
@@ -4,11 +4,10 @@ import { IsEnum, IsOptional } from "class-validator";
4
4
  import { PaginationQueryDto } from "./pagination-query.dto";
5
5
  import { Timestamp } from "typeorm";
6
6
  import { BasicGroupFilterDto } from "./basic-group-filters.dto";
7
+ import { ShowSoftDeleted } from "../enums/show-soft-deleted.enum";
7
8
 
8
- export enum SoftDeleteFilter {
9
- INCLUSIVE = "inclusive",
10
- EXCLUSIVE = "exclusive",
11
- }
9
+ // Backwards-compatible alias for consumers using the older DTO name.
10
+ export { ShowSoftDeleted as SoftDeleteFilter } from "../enums/show-soft-deleted.enum";
12
11
 
13
12
  export class BasicFilterDto extends PaginationQueryDto {
14
13
 
@@ -41,12 +40,12 @@ export class BasicFilterDto extends PaginationQueryDto {
41
40
  // readonly filters: any[];
42
41
 
43
42
  @IsOptional()
44
- @IsEnum(SoftDeleteFilter)
43
+ @IsEnum(ShowSoftDeleted)
45
44
  @ApiProperty({
46
45
  description: "showSoftDeleted",
47
- enum: SoftDeleteFilter,
46
+ enum: ShowSoftDeleted,
48
47
  })
49
- readonly showSoftDeleted?: SoftDeleteFilter;
48
+ readonly showSoftDeleted?: ShowSoftDeleted;
50
49
 
51
50
  @IsOptional()
52
51
  @ApiProperty({ description: "populateGroup" })
@@ -1,17 +1,26 @@
1
- import { IsEmail, IsEnum, IsJSON, IsNotEmpty, IsOptional } from 'class-validator';
1
+ import { IsEmail, IsEnum, IsJSON, IsNotEmpty, IsOptional, IsString } from 'class-validator';
2
2
 
3
3
  import { PasswordlessRegistrationValidateWhatSources } from "../constants";
4
+ import { ApiProperty } from '@nestjs/swagger';
4
5
 
5
6
  export class OTPSignUpDto {
7
+ @IsOptional()
8
+ @IsString()
9
+ @ApiProperty()
10
+ fullName: string;
11
+
6
12
  @IsNotEmpty()
13
+ @ApiProperty()
7
14
  username: string;
8
15
 
9
16
  @IsOptional()
10
17
  @IsEmail()
18
+ @ApiProperty()
11
19
  email: string;
12
20
 
13
21
  @IsOptional()
14
22
  @IsNotEmpty()
23
+ @ApiProperty()
15
24
  mobile: string;
16
25
 
17
26
  @IsOptional()
@@ -19,5 +28,6 @@ export class OTPSignUpDto {
19
28
  validationSources: PasswordlessRegistrationValidateWhatSources[] = [];
20
29
 
21
30
  @IsOptional()
31
+ @ApiProperty()
22
32
  customPayload: any;
23
33
  }
@@ -0,0 +1,4 @@
1
+ export enum ShowSoftDeleted {
2
+ INCLUSIVE = "inclusive",
3
+ EXCLUSIVE = "exclusive",
4
+ }
package/src/index.ts CHANGED
@@ -194,6 +194,7 @@ export * from './entities/workflow-secret.entity'
194
194
  export * from './enums/auth-type.enum'
195
195
  export * from './enums/legacy-table-type.enum'
196
196
  export * from './enums/signup-intent.enum'
197
+ export * from './enums/show-soft-deleted.enum'
197
198
  export * from './decorators/disallow-in-production.decorator'
198
199
 
199
200
  export * from './filters/http-exception.filter'
@@ -70,9 +70,18 @@ interface otp {
70
70
 
71
71
  /** Where a signup's role names come from. */
72
72
  enum RolesSource {
73
- /** None from the caller: performSignUp applies the configured `defaultRole`. */
73
+ /**
74
+ * Ask nobody; returning [] lets performSignUp apply the configured `defaultRole`.
75
+ *
76
+ * No intent maps here today - it is kept for paths that deliberately bypass the
77
+ * provider. OAuth is the live example: its DTO can never carry a discriminator, so
78
+ * it takes `defaultRole` outright (currently inline in UserService).
79
+ */
74
80
  Default,
75
- /** `provider.roles(dto)`, unconditionally. */
81
+ /**
82
+ * `provider.roles(dto)` - and nothing else. Yields [] when no provider is registered
83
+ * or when the provider declines to name any, which falls through to `defaultRole`.
84
+ */
76
85
  Provider,
77
86
  /** The caller's own `dto.roles`. */
78
87
  Caller,
@@ -82,10 +91,18 @@ enum RolesSource {
82
91
  * The single place that decides, per intent, which entity a signup builds and where
83
92
  * its roles come from.
84
93
  *
85
- * `useProvider` is currently computable from `rolesSource` (`Caller` implies false),
86
- * but the two answer different questions - "which entity?" and "which roles?" - that
87
- * merely coincide across these three intents. Keep both, and change behaviour here
88
- * rather than at a call site.
94
+ * Where an extension user provider is registered it is the authority on that app's user
95
+ * roles, so every provider-backed intent asks it. `defaultRole` is the *fallback* for
96
+ * when it names none - or when there is no provider at all - not the rule.
97
+ *
98
+ * SelfRegistration and ExtensionModel resolve identically today. They stay separate
99
+ * intents because only SelfRegistration is gated on `allowPublicRegistration`, and
100
+ * because "an anonymous visitor signing themselves up" and "an admin creating a user
101
+ * from the model's own form" are different things that may yet need to diverge.
102
+ *
103
+ * `useProvider` is computable from `rolesSource` today (`Caller` implies false), but the
104
+ * two answer different questions - "which entity?" and "which roles?" - that merely
105
+ * coincide across these intents. Keep both, and change behaviour here, not at a call site.
89
106
  */
90
107
  const SIGNUP_POLICY: Record<
91
108
  SignupIntent,
@@ -93,7 +110,7 @@ const SIGNUP_POLICY: Record<
93
110
  > = {
94
111
  [SignupIntent.SelfRegistration]: {
95
112
  useProvider: true,
96
- rolesSource: RolesSource.Default,
113
+ rolesSource: RolesSource.Provider,
97
114
  },
98
115
  [SignupIntent.ExtensionModel]: {
99
116
  useProvider: true,
@@ -246,12 +263,24 @@ export class AuthenticationService {
246
263
  dto: Record<string, any>,
247
264
  source: RolesSource,
248
265
  ): string[] {
266
+ // Only `Caller` reads dto.roles. Anywhere else, roles in the body are ignored -
267
+ // which is what keeps an anonymous caller from naming their own on a @Public()
268
+ // endpoint - so say so rather than dropping them silently.
269
+ if (source !== RolesSource.Caller && dto.roles?.length) {
270
+ this.logger.warn(
271
+ `Ignoring caller-supplied roles for "${dto.username}": roles on this path come from ` +
272
+ (source === RolesSource.Provider
273
+ ? "the extension user provider"
274
+ : "the configured defaultRole"),
275
+ );
276
+ }
277
+
249
278
  switch (source) {
250
279
  case RolesSource.Provider:
251
- // Sole authority. `dto.roles` is deliberately not read - not as a preference,
252
- // not as a fallback. Reading it would skip roles(), which is where a provider
253
- // validates its discriminator, and CreateUserDto types roles as
254
- // UpdateRoleMetadataDto[] where performSignUp expects role-name strings.
280
+ // Sole authority. Reading dto.roles as a preference or fallback would skip
281
+ // roles(), which is where a provider validates its discriminator, and
282
+ // CreateUserDto types roles as UpdateRoleMetadataDto[] where performSignUp
283
+ // expects role-name strings. [] here falls through to `defaultRole`.
255
284
  return (
256
285
  this.solidRegistry
257
286
  .getExtensionUserCreationProvider()
@@ -262,14 +291,6 @@ export class AuthenticationService {
262
291
  return dto.roles ?? [];
263
292
 
264
293
  case RolesSource.Default:
265
- // Public signup: the form has no business naming roles. Returning empty lets
266
- // performSignUp apply the configured `defaultRole`, rather than adding a
267
- // second mechanism for the same thing.
268
- if (dto.roles?.length) {
269
- this.logger.warn(
270
- `Ignoring caller-supplied roles on public registration for "${dto.username}"`,
271
- );
272
- }
273
294
  return [];
274
295
  }
275
296
  }
@@ -772,16 +793,31 @@ export class AuthenticationService {
772
793
  validationSource: string,
773
794
  ): Promise<User> {
774
795
  if (isEmpty(existingUser)) {
796
+ // Resolved before anything is written: where a provider requires its discriminator
797
+ // roles() throws, and that should surface as a rejected request rather than as a
798
+ // half-registered user with no roles.
799
+ const roles = this.resolveSignupRoles(
800
+ signUpDto,
801
+ SIGNUP_POLICY[SignupIntent.SelfRegistration].rolesSource,
802
+ );
803
+
775
804
  // A new registration is saved through whichever repository createUser resolved,
776
805
  // which is the provider's when the app registers one.
777
806
  const { entity: user, repo } = await this.createUser(signUpDto);
778
807
  user.active = false; // User will be activated only after OTP verification, hence setting active to false for new user.
779
808
  await this.assignRegistrationOtp(validationSource, user);
780
809
  await repo.save(user);
781
- await this.userService.addRoleToUser(
782
- user.username,
783
- this.settingService.getConfigValue<SolidCoreSetting>("defaultRole"),
784
- );
810
+
811
+ if (roles.length) {
812
+ await this.userService.addRolesToUser(user.username, roles);
813
+ } else {
814
+ // The provider named none, or there is no provider: fall back to the configured
815
+ // default, matching what performSignUp does on the password paths.
816
+ await this.userService.addRoleToUser(
817
+ user.username,
818
+ this.settingService.getConfigValue<SolidCoreSetting>("defaultRole"),
819
+ );
820
+ }
785
821
  return user;
786
822
  }
787
823
 
@@ -812,9 +848,8 @@ export class AuthenticationService {
812
848
  entity.username = signUpDto.username;
813
849
  entity.email = signUpDto.email;
814
850
  entity.mobile = signUpDto.mobile;
815
- // OTPSignUpDto declares no `fullName`, so username is the only source here. Mirrors
816
- // the fallback in populateForSignup, which this path does not go through.
817
- entity.fullName = signUpDto.username;
851
+ // OTPSignUpDto declares no `fullName`, so username is the only source here. Mirrors the fallback in populateForSignup, which this path does not go through.
852
+ entity.fullName = signUpDto.fullName?.trim() || signUpDto.username;
818
853
  entity.customPayload = signUpDto.customPayload;
819
854
  entity.lastLoginProvider = LoginProvider.OTP;
820
855