Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
import java.util.TimeZone;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;

@SpringBootApplication
@ConfigurationPropertiesScan
public class LinedBackendApplication {

public static void main(String[] args) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,13 @@ public class AccountApplicationServiceImpl implements AccountApplicationService
@Override
@Transactional
public UserDto registerUser(UserCreateDto createDto) {
AccountProvisioningSpec provisioning = provisioningPolicy.defaultRegistration();
UserDto user = userService.create(createDto);
roleService.setUserRoles(user.id(), provisioningPolicy.defaultRoles());
roleService.setUserRoles(user.id(), provisioning.roleNames());

PlanDto defaultPlan = planService.getByName(provisioningPolicy.defaultPlanName());
PlanDto defaultPlan = planService.getByName(provisioning.planName());
subscriptionService.start(
user.id(), defaultPlan.id(), null, null, provisioningPolicy.defaultSubscriptionActive());
user.id(), defaultPlan.id(), null, null, provisioning.activeSubscription());

return userService.getById(user.id());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,30 +1,19 @@
package io.backend.lined.app;

import java.util.Set;
import org.springframework.beans.factory.annotation.Value;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

@Component
@RequiredArgsConstructor
public class AccountProvisioningPolicy {

@Value("${lined.provisioning.default-role:ROLE_USER}")
private String defaultRole;
private final AccountProvisioningProperties properties;

@Value("${lined.provisioning.default-plan:FREE}")
private String defaultPlan;

@Value("${lined.provisioning.default-subscription-active:true}")
private boolean subscriptionActive;

public Set<String> defaultRoles() {
return Set.of(defaultRole);
}

public String defaultPlanName() {
return defaultPlan;
}

public boolean defaultSubscriptionActive() {
return subscriptionActive;
public AccountProvisioningSpec defaultRegistration() {
return new AccountProvisioningSpec(
Set.of(properties.defaultRole()),
properties.defaultPlan(),
properties.defaultSubscriptionActive());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package io.backend.lined.app;

import io.backend.lined.plan.domain.BuiltInPlan;
import io.backend.lined.role.domain.BuiltInRole;
import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties("lined.provisioning")
public record AccountProvisioningProperties(
String defaultRole,
String defaultPlan,
Boolean defaultSubscriptionActive
) {

public AccountProvisioningProperties {
if (defaultRole == null || defaultRole.isBlank()) {
defaultRole = BuiltInRole.USER.value();
} else {
defaultRole = defaultRole.trim();
}
if (defaultPlan == null || defaultPlan.isBlank()) {
defaultPlan = BuiltInPlan.FREE.value();
} else {
defaultPlan = defaultPlan.trim();
}
if (defaultSubscriptionActive == null) {
defaultSubscriptionActive = true;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package io.backend.lined.app;

import java.util.Set;

public record AccountProvisioningSpec(
Set<String> roleNames,
String planName,
boolean activeSubscription
) {

public AccountProvisioningSpec {
roleNames = roleNames == null ? Set.of() : Set.copyOf(roleNames);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package io.backend.lined.plan.domain;

public enum BuiltInPlan {

FREE("FREE"),
PRO("PRO"),
FAMILY("FAMILY");

private final String value;

BuiltInPlan(String value) {
this.value = value;
}

public String value() {
return value;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package io.backend.lined.role.domain;

public enum BuiltInRole {

USER("ROLE_USER"),
ADMIN("ROLE_ADMIN");

private final String value;

BuiltInRole(String value) {
this.value = value;
}

public String value() {
return value;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,6 @@ public UserDto create(UserCreateDto dto) {
UserEntity entity = userMapper.toEntity(dto);
entity.setPassword(passwordEncoder.encode(dto.password()));

if (dto.roles() != null && !dto.roles().isEmpty()) {
entity.setRoles(roleResolver.resolve(dto.roles()));
}

try {
return userMapper.toDto(userRepository.save(entity));
} catch (DataIntegrityViolationException ex) {
Expand Down Expand Up @@ -89,10 +85,6 @@ public UserDto update(Long id, UserUpdateDto dto) {

userMapper.updateEntity(entity, dto);

if (dto.roles() != null) {
entity.setRoles(roleResolver.resolve(dto.roles()));
}

try {
return userMapper.toDto(userRepository.save(entity));
} catch (DataIntegrityViolationException ex) {
Expand Down
Loading
Loading