generator-nokode 1.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 +214 -0
- package/generators/app/index.js +116 -0
- package/generators/app/templates/.gradle/9.0.0/checksums/checksums.lock +0 -0
- package/generators/app/templates/.gradle/9.0.0/fileChanges/last-build.bin +0 -0
- package/generators/app/templates/.gradle/9.0.0/fileHashes/fileHashes.lock +0 -0
- package/generators/app/templates/.gradle/9.0.0/gc.properties +0 -0
- package/generators/app/templates/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/generators/app/templates/.gradle/buildOutputCleanup/cache.properties +2 -0
- package/generators/app/templates/.gradle/vcs-1/gc.properties +0 -0
- package/generators/app/templates/01-code/NokodeSampleApplication.java +13 -0
- package/generators/app/templates/01-code/config/AuthConfig.java +10 -0
- package/generators/app/templates/01-code/config/CloudStorageConfig.java +30 -0
- package/generators/app/templates/01-code/config/MongoConfig.java +43 -0
- package/generators/app/templates/01-code/config/NotificationConfig.java +47 -0
- package/generators/app/templates/01-code/config/PantherCrudBeans.java +33 -0
- package/generators/app/templates/01-code/config/ShedlockConfig.java +24 -0
- package/generators/app/templates/01-code/config/WebConfig.java +38 -0
- package/generators/app/templates/01-code/config/annotations/AppAuth.java +24 -0
- package/generators/app/templates/01-code/config/audit/UserAuditing.java +29 -0
- package/generators/app/templates/01-code/config/constants/PantherCrudConstants.java +24 -0
- package/generators/app/templates/01-code/config/converters/BsonDocumentToJsonNodeConverter.java +31 -0
- package/generators/app/templates/01-code/config/converters/JsonNodeToBsonDocumentConverter.java +32 -0
- package/generators/app/templates/01-code/config/converters/ModuleDefinitionDeserializer.java +25 -0
- package/generators/app/templates/01-code/config/converters/ModulePermissionDefinitionModule.java +16 -0
- package/generators/app/templates/01-code/config/converters/PermissionDefinitionDeserializer.java +25 -0
- package/generators/app/templates/01-code/config/converters/StringToModuleDefinitionConverter.java +26 -0
- package/generators/app/templates/01-code/config/converters/StringToPermissionDefinitionConverter.java +26 -0
- package/generators/app/templates/01-code/config/exception/RestExceptionHandlerService.java +14 -0
- package/generators/app/templates/01-code/config/init/ApplicationInit.java +31 -0
- package/generators/app/templates/01-code/config/init/DataBuilderService.java +22 -0
- package/generators/app/templates/01-code/config/init/UserAndRoleInitService.java +71 -0
- package/generators/app/templates/01-code/config/interceptors/AuthInterceptor.java +25 -0
- package/generators/app/templates/01-code/config/interceptors/CorsFilterConfig.java +28 -0
- package/generators/app/templates/01-code/config/interceptors/LocaleInterceptor.java +26 -0
- package/generators/app/templates/01-code/config/interceptors/RequestContextInterceptor.java +26 -0
- package/generators/app/templates/01-code/config/openapi/OpenAPIConfig.java +48 -0
- package/generators/app/templates/01-code/role/domain/Role.java +21 -0
- package/generators/app/templates/01-code/role/dto/RoleCreateDto.java +31 -0
- package/generators/app/templates/01-code/role/dto/RoleDetailDto.java +31 -0
- package/generators/app/templates/01-code/role/dto/RoleSearchDto.java +30 -0
- package/generators/app/templates/01-code/role/enums/ModuleEnum.java +9 -0
- package/generators/app/templates/01-code/role/enums/PermissionEnum.java +9 -0
- package/generators/app/templates/01-code/role/mapper/RoleCreateDtoMapper.java +19 -0
- package/generators/app/templates/01-code/role/mapper/RoleDetailDtoMapper.java +19 -0
- package/generators/app/templates/01-code/role/mapper/RoleSearchDtoMapper.java +19 -0
- package/generators/app/templates/01-code/role/repository/RoleRepository.java +11 -0
- package/generators/app/templates/01-code/role/service/RoleCrudService.java +36 -0
- package/generators/app/templates/01-code/user/domain/User.java +32 -0
- package/generators/app/templates/01-code/user/dto/EmailLoginDto.java +42 -0
- package/generators/app/templates/01-code/user/dto/ResetEmailPasswordDto.java +31 -0
- package/generators/app/templates/01-code/user/dto/UserCreateDto.java +29 -0
- package/generators/app/templates/01-code/user/dto/UserDetailDto.java +25 -0
- package/generators/app/templates/01-code/user/dto/UserSearchDto.java +25 -0
- package/generators/app/templates/01-code/user/dto/UserSignupDto.java +37 -0
- package/generators/app/templates/01-code/user/mapper/UserCreateDtoMapper.java +19 -0
- package/generators/app/templates/01-code/user/mapper/UserDetailDtoMapper.java +19 -0
- package/generators/app/templates/01-code/user/mapper/UserSearchDtoMapper.java +19 -0
- package/generators/app/templates/01-code/user/mapper/UserSignupDtoMapper.java +21 -0
- package/generators/app/templates/01-code/user/repository/UserRepository.java +10 -0
- package/generators/app/templates/01-code/user/service/UserCrudService.java +70 -0
- package/generators/app/templates/02-test-code/NokodeSampleApplicationTests.java +13 -0
- package/generators/app/templates/03-main-resources/META-INF/additional-spring-configuration-metadata.json +34 -0
- package/generators/app/templates/03-main-resources/application.properties +21 -0
- package/generators/app/templates/build.gradle +104 -0
- package/generators/app/templates/build.sh +7 -0
- package/generators/app/templates/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/generators/app/templates/gradle/wrapper/gradle-wrapper.properties +7 -0
- package/generators/app/templates/gradlew +252 -0
- package/generators/app/templates/gradlew.bat +94 -0
- package/generators/app/templates/settings.gradle +1 -0
- package/generators/base-generator.js +70 -0
- package/generators/constants.js +14 -0
- package/index.js +74 -0
- package/package.json +42 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package <%= packageName %>.role.mapper;
|
|
2
|
+
|
|
3
|
+
import com.sixsprints.core.mapper.GenericCrudMapper;
|
|
4
|
+
|
|
5
|
+
import <%= packageName %>.role.domain.Role;
|
|
6
|
+
import <%= packageName %>.role.dto.RoleSearchDto;
|
|
7
|
+
|
|
8
|
+
import org.mapstruct.Mapper;
|
|
9
|
+
import org.mapstruct.ReportingPolicy;
|
|
10
|
+
|
|
11
|
+
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
|
12
|
+
public abstract class RoleSearchDtoMapper extends GenericCrudMapper<Role, RoleSearchDto> {
|
|
13
|
+
|
|
14
|
+
@Override
|
|
15
|
+
public abstract Role toDomain(RoleSearchDto dto);
|
|
16
|
+
|
|
17
|
+
@Override
|
|
18
|
+
public abstract RoleSearchDto toDto(Role domain);
|
|
19
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
package <%= packageName %>.role.repository;
|
|
2
|
+
|
|
3
|
+
import com.sixsprints.auth.repository.AbstractRoleRepository;
|
|
4
|
+
|
|
5
|
+
import <%= packageName %>.role.domain.Role;
|
|
6
|
+
|
|
7
|
+
public interface RoleRepository extends AbstractRoleRepository<Role> {
|
|
8
|
+
|
|
9
|
+
Role findByName(String name);
|
|
10
|
+
|
|
11
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
package <%= packageName %>.role.service;
|
|
2
|
+
|
|
3
|
+
import com.sixsprints.core.dto.MetaData;
|
|
4
|
+
import com.sixsprints.core.service.AbstractCrudService;
|
|
5
|
+
|
|
6
|
+
import <%= packageName %>.role.domain.Role;
|
|
7
|
+
import <%= packageName %>.role.repository.RoleRepository;
|
|
8
|
+
|
|
9
|
+
import org.springframework.stereotype.Service;
|
|
10
|
+
|
|
11
|
+
import lombok.RequiredArgsConstructor;
|
|
12
|
+
import com.sixsprints.auth.service.AbstractRoleService;
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@Service
|
|
16
|
+
@RequiredArgsConstructor
|
|
17
|
+
public class RoleCrudService extends AbstractCrudService<Role> implements AbstractRoleService<Role> {
|
|
18
|
+
|
|
19
|
+
private final RoleRepository repository;
|
|
20
|
+
|
|
21
|
+
@Override
|
|
22
|
+
protected RoleRepository repository() {
|
|
23
|
+
return repository;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@Override
|
|
27
|
+
protected Role findDuplicate(Role domain) {
|
|
28
|
+
return repository.findByName(domain.getName());
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@Override
|
|
32
|
+
protected MetaData<Role> metaData() {
|
|
33
|
+
return MetaData.<Role>builder().classType(Role.class).build();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
package <%= packageName %>.user.domain;
|
|
2
|
+
|
|
3
|
+
import org.springframework.data.mongodb.core.index.Indexed;
|
|
4
|
+
|
|
5
|
+
import com.sixsprints.auth.domain.AbstractAuthenticableEntity;
|
|
6
|
+
|
|
7
|
+
import lombok.Data;
|
|
8
|
+
import lombok.EqualsAndHashCode;
|
|
9
|
+
import lombok.NoArgsConstructor;
|
|
10
|
+
import lombok.experimental.SuperBuilder;
|
|
11
|
+
import lombok.AllArgsConstructor;
|
|
12
|
+
|
|
13
|
+
@Data
|
|
14
|
+
@SuperBuilder
|
|
15
|
+
@AllArgsConstructor
|
|
16
|
+
@NoArgsConstructor
|
|
17
|
+
@EqualsAndHashCode(callSuper = true)
|
|
18
|
+
public class User extends AbstractAuthenticableEntity {
|
|
19
|
+
|
|
20
|
+
private String name;
|
|
21
|
+
|
|
22
|
+
@Indexed(unique = true)
|
|
23
|
+
private String email;
|
|
24
|
+
|
|
25
|
+
private static final long serialVersionUID = 1L;
|
|
26
|
+
|
|
27
|
+
@Override
|
|
28
|
+
public String authId() {
|
|
29
|
+
return email;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
package <%= packageName %>.user.dto;
|
|
2
|
+
|
|
3
|
+
import com.sixsprints.auth.dto.Authenticable;
|
|
4
|
+
|
|
5
|
+
import io.swagger.v3.oas.annotations.media.Schema;
|
|
6
|
+
import jakarta.validation.constraints.Email;
|
|
7
|
+
import jakarta.validation.constraints.NotNull;
|
|
8
|
+
import jakarta.validation.constraints.Size;
|
|
9
|
+
import lombok.AllArgsConstructor;
|
|
10
|
+
import lombok.Data;
|
|
11
|
+
import lombok.NoArgsConstructor;
|
|
12
|
+
import lombok.ToString;
|
|
13
|
+
import lombok.experimental.SuperBuilder;
|
|
14
|
+
|
|
15
|
+
@Data
|
|
16
|
+
@SuperBuilder
|
|
17
|
+
@NoArgsConstructor
|
|
18
|
+
@AllArgsConstructor
|
|
19
|
+
@ToString(exclude = "password")
|
|
20
|
+
public class EmailLoginDto implements Authenticable {
|
|
21
|
+
|
|
22
|
+
@Email
|
|
23
|
+
@NotNull
|
|
24
|
+
@Size(min = 1)
|
|
25
|
+
@Schema(format = "email")
|
|
26
|
+
private String email;
|
|
27
|
+
|
|
28
|
+
@NotNull
|
|
29
|
+
@Size(min = 1)
|
|
30
|
+
@Schema(format = "password")
|
|
31
|
+
private String password;
|
|
32
|
+
|
|
33
|
+
@Override
|
|
34
|
+
public String authId() {
|
|
35
|
+
return email;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@Override
|
|
39
|
+
public String passcode() {
|
|
40
|
+
return password;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
package <%= packageName %>.user.dto;
|
|
2
|
+
|
|
3
|
+
import com.sixsprints.auth.dto.ResetPasscode;
|
|
4
|
+
|
|
5
|
+
import jakarta.validation.constraints.NotNull;
|
|
6
|
+
import jakarta.validation.constraints.Size;
|
|
7
|
+
import lombok.AllArgsConstructor;
|
|
8
|
+
import lombok.Data;
|
|
9
|
+
import lombok.EqualsAndHashCode;
|
|
10
|
+
import lombok.NoArgsConstructor;
|
|
11
|
+
import lombok.ToString;
|
|
12
|
+
import lombok.experimental.SuperBuilder;
|
|
13
|
+
|
|
14
|
+
@Data
|
|
15
|
+
@SuperBuilder
|
|
16
|
+
@NoArgsConstructor
|
|
17
|
+
@AllArgsConstructor
|
|
18
|
+
@ToString(callSuper = true)
|
|
19
|
+
@EqualsAndHashCode(callSuper = true)
|
|
20
|
+
public class ResetEmailPasswordDto extends EmailLoginDto implements ResetPasscode {
|
|
21
|
+
|
|
22
|
+
@NotNull
|
|
23
|
+
@Size(min = 1)
|
|
24
|
+
private String otp;
|
|
25
|
+
|
|
26
|
+
@Override
|
|
27
|
+
public String otp() {
|
|
28
|
+
return otp;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
package <%= packageName %>.user.dto;
|
|
2
|
+
|
|
3
|
+
import java.io.Serializable;
|
|
4
|
+
|
|
5
|
+
import jakarta.validation.constraints.Email;
|
|
6
|
+
import jakarta.validation.constraints.NotNull;
|
|
7
|
+
import jakarta.validation.constraints.Size;
|
|
8
|
+
import lombok.AllArgsConstructor;
|
|
9
|
+
import lombok.Builder;
|
|
10
|
+
import lombok.Data;
|
|
11
|
+
import lombok.NoArgsConstructor;
|
|
12
|
+
|
|
13
|
+
@Data
|
|
14
|
+
@Builder
|
|
15
|
+
@AllArgsConstructor
|
|
16
|
+
@NoArgsConstructor
|
|
17
|
+
public class UserCreateDto implements Serializable {
|
|
18
|
+
|
|
19
|
+
@NotNull
|
|
20
|
+
@Size(min = 1, max = 100)
|
|
21
|
+
private String name;
|
|
22
|
+
|
|
23
|
+
@Email
|
|
24
|
+
@NotNull
|
|
25
|
+
@Size(min = 1)
|
|
26
|
+
private String email;
|
|
27
|
+
|
|
28
|
+
private static final long serialVersionUID = 1L;
|
|
29
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
package <%= packageName %>.user.dto;
|
|
2
|
+
|
|
3
|
+
import java.io.Serializable;
|
|
4
|
+
|
|
5
|
+
import lombok.AllArgsConstructor;
|
|
6
|
+
import lombok.Data;
|
|
7
|
+
import lombok.NoArgsConstructor;
|
|
8
|
+
import lombok.Builder;
|
|
9
|
+
|
|
10
|
+
@Data
|
|
11
|
+
@Builder
|
|
12
|
+
@AllArgsConstructor
|
|
13
|
+
@NoArgsConstructor
|
|
14
|
+
public class UserDetailDto implements Serializable {
|
|
15
|
+
|
|
16
|
+
private String id;
|
|
17
|
+
|
|
18
|
+
private String slug;
|
|
19
|
+
|
|
20
|
+
private String name;
|
|
21
|
+
|
|
22
|
+
private String email;
|
|
23
|
+
|
|
24
|
+
private static final long serialVersionUID = 1L;
|
|
25
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
package <%= packageName %>.user.dto;
|
|
2
|
+
|
|
3
|
+
import java.io.Serializable;
|
|
4
|
+
|
|
5
|
+
import lombok.AllArgsConstructor;
|
|
6
|
+
import lombok.Builder;
|
|
7
|
+
import lombok.Data;
|
|
8
|
+
import lombok.NoArgsConstructor;
|
|
9
|
+
|
|
10
|
+
@Data
|
|
11
|
+
@Builder
|
|
12
|
+
@AllArgsConstructor
|
|
13
|
+
@NoArgsConstructor
|
|
14
|
+
public class UserSearchDto implements Serializable {
|
|
15
|
+
|
|
16
|
+
private String id;
|
|
17
|
+
|
|
18
|
+
private String slug;
|
|
19
|
+
|
|
20
|
+
private String name;
|
|
21
|
+
|
|
22
|
+
private String email;
|
|
23
|
+
|
|
24
|
+
private static final long serialVersionUID = 1L;
|
|
25
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
package <%= packageName %>.user.dto;
|
|
2
|
+
|
|
3
|
+
import java.io.Serializable;
|
|
4
|
+
|
|
5
|
+
import io.swagger.v3.oas.annotations.media.Schema;
|
|
6
|
+
import jakarta.validation.constraints.Email;
|
|
7
|
+
import jakarta.validation.constraints.NotNull;
|
|
8
|
+
import jakarta.validation.constraints.Size;
|
|
9
|
+
import lombok.AllArgsConstructor;
|
|
10
|
+
import lombok.Builder;
|
|
11
|
+
import lombok.Data;
|
|
12
|
+
import lombok.NoArgsConstructor;
|
|
13
|
+
|
|
14
|
+
@Data
|
|
15
|
+
@Builder
|
|
16
|
+
@AllArgsConstructor
|
|
17
|
+
@NoArgsConstructor
|
|
18
|
+
public class UserSignupDto implements Serializable {
|
|
19
|
+
|
|
20
|
+
@NotNull
|
|
21
|
+
@Size(min = 2, max = 100)
|
|
22
|
+
private String name;
|
|
23
|
+
|
|
24
|
+
@Email
|
|
25
|
+
@NotNull
|
|
26
|
+
@Size(min = 2, max = 100)
|
|
27
|
+
@Schema(format = "email")
|
|
28
|
+
private String email;
|
|
29
|
+
|
|
30
|
+
@NotNull
|
|
31
|
+
@Size(min = 8, max = 20)
|
|
32
|
+
@Schema(format = "password")
|
|
33
|
+
private String password;
|
|
34
|
+
|
|
35
|
+
private static final long serialVersionUID = 1L;
|
|
36
|
+
|
|
37
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package <%= packageName %>.user.mapper;
|
|
2
|
+
|
|
3
|
+
import com.sixsprints.core.mapper.GenericCrudMapper;
|
|
4
|
+
|
|
5
|
+
import <%= packageName %>.user.domain.User;
|
|
6
|
+
import <%= packageName %>.user.dto.UserCreateDto;
|
|
7
|
+
|
|
8
|
+
import org.mapstruct.Mapper;
|
|
9
|
+
import org.mapstruct.ReportingPolicy;
|
|
10
|
+
|
|
11
|
+
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
|
12
|
+
public abstract class UserCreateDtoMapper extends GenericCrudMapper<User, UserCreateDto> {
|
|
13
|
+
|
|
14
|
+
@Override
|
|
15
|
+
public abstract User toDomain(UserCreateDto dto);
|
|
16
|
+
|
|
17
|
+
@Override
|
|
18
|
+
public abstract UserCreateDto toDto(User domain);
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package <%= packageName %>.user.mapper;
|
|
2
|
+
|
|
3
|
+
import com.sixsprints.core.mapper.GenericCrudMapper;
|
|
4
|
+
|
|
5
|
+
import <%= packageName %>.user.domain.User;
|
|
6
|
+
import <%= packageName %>.user.dto.UserDetailDto;
|
|
7
|
+
|
|
8
|
+
import org.mapstruct.Mapper;
|
|
9
|
+
import org.mapstruct.ReportingPolicy;
|
|
10
|
+
|
|
11
|
+
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
|
12
|
+
public abstract class UserDetailDtoMapper extends GenericCrudMapper<User, UserDetailDto> {
|
|
13
|
+
|
|
14
|
+
@Override
|
|
15
|
+
public abstract User toDomain(UserDetailDto dto);
|
|
16
|
+
|
|
17
|
+
@Override
|
|
18
|
+
public abstract UserDetailDto toDto(User domain);
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package <%= packageName %>.user.mapper;
|
|
2
|
+
|
|
3
|
+
import com.sixsprints.core.mapper.GenericCrudMapper;
|
|
4
|
+
|
|
5
|
+
import <%= packageName %>.user.domain.User;
|
|
6
|
+
import <%= packageName %>.user.dto.UserSearchDto;
|
|
7
|
+
|
|
8
|
+
import org.mapstruct.Mapper;
|
|
9
|
+
import org.mapstruct.ReportingPolicy;
|
|
10
|
+
|
|
11
|
+
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
|
12
|
+
public abstract class UserSearchDtoMapper extends GenericCrudMapper<User, UserSearchDto> {
|
|
13
|
+
|
|
14
|
+
@Override
|
|
15
|
+
public abstract User toDomain(UserSearchDto dto);
|
|
16
|
+
|
|
17
|
+
@Override
|
|
18
|
+
public abstract UserSearchDto toDto(User domain);
|
|
19
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
package <%= packageName %>.user.mapper;
|
|
2
|
+
|
|
3
|
+
import org.mapstruct.Mapper;
|
|
4
|
+
import org.mapstruct.Mapping;
|
|
5
|
+
import org.mapstruct.ReportingPolicy;
|
|
6
|
+
|
|
7
|
+
import com.sixsprints.core.mapper.GenericCrudMapper;
|
|
8
|
+
|
|
9
|
+
import <%= packageName %>.user.domain.User;
|
|
10
|
+
import <%= packageName %>.user.dto.UserSignupDto;
|
|
11
|
+
|
|
12
|
+
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
|
13
|
+
public abstract class UserSignupDtoMapper extends GenericCrudMapper<User, UserSignupDto> {
|
|
14
|
+
|
|
15
|
+
@Override
|
|
16
|
+
public abstract User toDomain(UserSignupDto dto);
|
|
17
|
+
|
|
18
|
+
@Override
|
|
19
|
+
@Mapping(ignore = true, target = "password")
|
|
20
|
+
public abstract UserSignupDto toDto(User domain);
|
|
21
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
package <%= packageName %>.user.repository;
|
|
2
|
+
|
|
3
|
+
import com.sixsprints.core.repository.GenericCrudRepository;
|
|
4
|
+
|
|
5
|
+
import <%= packageName %>.user.domain.User;
|
|
6
|
+
|
|
7
|
+
public interface UserRepository extends GenericCrudRepository<User> {
|
|
8
|
+
|
|
9
|
+
abstract User findByEmail(String email);
|
|
10
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
package <%= packageName %>.user.service;
|
|
2
|
+
|
|
3
|
+
import org.apache.commons.lang3.StringUtils;
|
|
4
|
+
|
|
5
|
+
import com.sixsprints.auth.service.OtpService;
|
|
6
|
+
import com.sixsprints.auth.service.impl.AbstractAuthService;
|
|
7
|
+
import com.sixsprints.core.dto.MetaData;
|
|
8
|
+
import com.sixsprints.notification.service.NotificationService;
|
|
9
|
+
import org.springframework.stereotype.Service;
|
|
10
|
+
|
|
11
|
+
import <%= packageName %>.config.constants.<%= appNameTitleCase %>Constants;
|
|
12
|
+
import <%= packageName %>.role.domain.Role;
|
|
13
|
+
import <%= packageName %>.role.service.RoleCrudService;
|
|
14
|
+
import <%= packageName %>.user.domain.User;
|
|
15
|
+
import <%= packageName %>.user.dto.UserDetailDto;
|
|
16
|
+
import <%= packageName %>.user.dto.UserSignupDto;
|
|
17
|
+
import <%= packageName %>.user.mapper.UserDetailDtoMapper;
|
|
18
|
+
import <%= packageName %>.user.mapper.UserSignupDtoMapper;
|
|
19
|
+
import <%= packageName %>.user.repository.UserRepository;
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@Service
|
|
24
|
+
public class UserCrudService extends
|
|
25
|
+
AbstractAuthService<User, UserSignupDto, UserDetailDto, Role> {
|
|
26
|
+
|
|
27
|
+
private final UserRepository repository;
|
|
28
|
+
|
|
29
|
+
public UserCrudService(UserRepository repository, UserSignupDtoMapper userSignupDtoMapper,
|
|
30
|
+
UserDetailDtoMapper userDetailDtoMapper, NotificationService notificationService,
|
|
31
|
+
OtpService otpService, RoleCrudService roleCrudService) {
|
|
32
|
+
|
|
33
|
+
super(userSignupDtoMapper, userDetailDtoMapper, notificationService, otpService,
|
|
34
|
+
roleCrudService);
|
|
35
|
+
this.repository = repository;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@Override
|
|
39
|
+
protected UserRepository repository() {
|
|
40
|
+
return repository;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@Override
|
|
44
|
+
protected User findDuplicate(User domain) {
|
|
45
|
+
return repository.findByEmail(domain.getEmail());
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@Override
|
|
49
|
+
protected MetaData<User> metaData() {
|
|
50
|
+
return MetaData.<User>builder().classType(User.class).build();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@Override
|
|
54
|
+
protected User findByAuthId(String email) {
|
|
55
|
+
return repository.findByEmail(email);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@Override
|
|
59
|
+
protected void enhanceEntity(User user) {
|
|
60
|
+
super.enhanceEntity(user);
|
|
61
|
+
setRole(user);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
private void setRole(User user) {
|
|
65
|
+
if (StringUtils.isBlank(user.getRoleSlug())) {
|
|
66
|
+
user.setRoleSlug(<%= appNameTitleCase %>Constants.ROLES.get(<%= appNameTitleCase %>Constants.USER_ROLE).getSlug());
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"properties": [
|
|
3
|
+
{
|
|
4
|
+
"name": "email.ssl.enabled",
|
|
5
|
+
"type": "java.lang.String",
|
|
6
|
+
"description": "A description for 'email.ssl.enabled'"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"name": "email.password",
|
|
10
|
+
"type": "java.lang.String",
|
|
11
|
+
"description": "A description for 'email.password'"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"name": "email.username",
|
|
15
|
+
"type": "java.lang.String",
|
|
16
|
+
"description": "A description for 'email.username'"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"name": "email.hostname",
|
|
20
|
+
"type": "java.lang.String",
|
|
21
|
+
"description": "A description for 'email.hostname'"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"name": "email.from.address",
|
|
25
|
+
"type": "java.lang.String",
|
|
26
|
+
"description": "A description for 'email.from.address'"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"name": "email.from",
|
|
30
|
+
"type": "java.lang.String",
|
|
31
|
+
"description": "A description for 'email.from'"
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## Spring
|
|
2
|
+
spring.application.name=<%= appName %>
|
|
3
|
+
server.port=8181
|
|
4
|
+
|
|
5
|
+
## Mongo
|
|
6
|
+
spring.data.mongodb.uri=mongodb://localhost:27017/<%= appNameSlug %>
|
|
7
|
+
spring.data.mongodb.database=<%= appNameSlug %>
|
|
8
|
+
logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG
|
|
9
|
+
|
|
10
|
+
## Email
|
|
11
|
+
email.from=<%= appName %>
|
|
12
|
+
email.from.address=<%= appNameSlug %>@sixsprints.com
|
|
13
|
+
email.hostname=email-smtp.ap-south-1.amazonaws.com
|
|
14
|
+
email.username=xxxxxxxxxxxxxxxx
|
|
15
|
+
email.password=xxxxxxxxxxxxxxxx
|
|
16
|
+
email.ssl.enabled=true
|
|
17
|
+
|
|
18
|
+
## AWS S3
|
|
19
|
+
aws.s3.access.key=xxxxxxxxxxxxxxxx
|
|
20
|
+
aws.s3.secret.key=xxxxxxxxxxxxxxxx
|
|
21
|
+
aws.s3.region=ap-south-1
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
|
|
2
|
+
import org.gradle.api.tasks.testing.logging.TestLogEvent
|
|
3
|
+
|
|
4
|
+
buildscript {
|
|
5
|
+
repositories {
|
|
6
|
+
mavenLocal()
|
|
7
|
+
gradlePluginPortal()
|
|
8
|
+
}
|
|
9
|
+
dependencies {
|
|
10
|
+
classpath 'com.github.ben-manes:gradle-versions-plugin:+'
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
plugins {
|
|
15
|
+
id 'java'
|
|
16
|
+
id 'org.springframework.boot' version '<%= SPRING_BOOT_VERSION %>'
|
|
17
|
+
id 'io.spring.dependency-management' version '<%= SPRING_PLUGIN_VERSION %>'
|
|
18
|
+
id "org.springdoc.openapi-gradle-plugin" version '<%= SPRINGDOC_PLUGIN_VERSION %>'
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
apply plugin: 'com.github.ben-manes.versions'
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
group = '<%= groupId %>'
|
|
25
|
+
version = '0.0.1'
|
|
26
|
+
|
|
27
|
+
java {
|
|
28
|
+
toolchain {
|
|
29
|
+
languageVersion = JavaLanguageVersion.of(<%= JAVA_VERSION %>)
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
tasks.withType(JavaCompile) {
|
|
34
|
+
options.compilerArgs << '-parameters'
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
configurations {
|
|
38
|
+
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
repositories {
|
|
42
|
+
mavenCentral()
|
|
43
|
+
maven {
|
|
44
|
+
url = "https://jitpack.io"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
dependencies {
|
|
49
|
+
implementation 'org.springframework.boot:spring-boot-starter-web'
|
|
50
|
+
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:<%= SPRINGDOC_OPENAPI_VERSION %>'
|
|
51
|
+
|
|
52
|
+
implementation 'com.github.Six-Sprints:auth-service:<%= SIXSPRINTS_AUTH_VERSION %>'
|
|
53
|
+
implementation 'com.github.Six-Sprints:cloud-storage-api:<%= SIXSPRINTS_CLOUD_STORAGE_API_VERSION %>'
|
|
54
|
+
implementation 'net.javacrumbs.shedlock:shedlock-spring:<%= SHEDLOCK_VERSION %>'
|
|
55
|
+
implementation 'net.javacrumbs.shedlock:shedlock-provider-mongo:<%= SHEDLOCK_VERSION %>'
|
|
56
|
+
|
|
57
|
+
annotationProcessor 'org.mapstruct:mapstruct-processor:<%= MAPSTRUCT_VERSION %>'
|
|
58
|
+
annotationProcessor 'org.projectlombok:lombok'
|
|
59
|
+
annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:<%= LOMBOK_MAPSTRUCT_BINDING_VERSION %>'
|
|
60
|
+
implementation 'org.mapstruct:mapstruct:<%= MAPSTRUCT_VERSION %>'
|
|
61
|
+
implementation 'org.mapstruct:mapstruct-processor:<%= MAPSTRUCT_VERSION %>'
|
|
62
|
+
testAnnotationProcessor 'org.mapstruct:mapstruct-processor:<%= MAPSTRUCT_VERSION %>'
|
|
63
|
+
testAnnotationProcessor 'org.projectlombok:lombok-mapstruct-binding:<%= LOMBOK_MAPSTRUCT_BINDING_VERSION %>'
|
|
64
|
+
compileOnly 'org.projectlombok:lombok'
|
|
65
|
+
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
|
66
|
+
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
tasks.named('test') {
|
|
70
|
+
useJUnitPlatform()
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
tasks.named('test') {
|
|
74
|
+
useJUnitPlatform()
|
|
75
|
+
testLogging {
|
|
76
|
+
events TestLogEvent.FAILED,
|
|
77
|
+
TestLogEvent.PASSED,
|
|
78
|
+
TestLogEvent.SKIPPED,
|
|
79
|
+
TestLogEvent.STANDARD_OUT
|
|
80
|
+
exceptionFormat = TestExceptionFormat.FULL
|
|
81
|
+
showExceptions = true
|
|
82
|
+
showCauses = true
|
|
83
|
+
showStackTraces = true
|
|
84
|
+
debug {
|
|
85
|
+
events TestLogEvent.STARTED,
|
|
86
|
+
TestLogEvent.FAILED,
|
|
87
|
+
TestLogEvent.PASSED,
|
|
88
|
+
TestLogEvent.SKIPPED,
|
|
89
|
+
TestLogEvent.STANDARD_ERROR,
|
|
90
|
+
TestLogEvent.STANDARD_OUT
|
|
91
|
+
exceptionFormat = TestExceptionFormat.FULL
|
|
92
|
+
}
|
|
93
|
+
info.events = debug.events
|
|
94
|
+
info.exceptionFormat = debug.exceptionFormat
|
|
95
|
+
afterSuite {
|
|
96
|
+
desc, result -> if (!desc.parent) {
|
|
97
|
+
def output = "Results: ${result.resultType} (${result.testCount} tests, ${result.successfulTestCount} successes, ${result.failedTestCount} failures, ${result.skippedTestCount} skipped)"
|
|
98
|
+
def startItem = '| ', endItem = ' |'
|
|
99
|
+
def repeatLength = startItem.length() + output.length() + endItem.length()
|
|
100
|
+
println('\n' + ('-' * repeatLength) + '\n' + startItem + output + endItem + '\n' + ('-' * repeatLength))
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
Binary file
|