add document
Test Workflow / test (push) Successful in 3s

This commit is contained in:
vladp
2026-02-06 22:21:51 +07:00
parent 682c21ba73
commit daadc82bbb
6 changed files with 54 additions and 13 deletions
@@ -1,5 +1,6 @@
package ru.soune.nocopy.service.register;
import jakarta.persistence.EntityNotFoundException;
import lombok.RequiredArgsConstructor;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
@@ -10,11 +11,13 @@ import ru.soune.nocopy.dto.register.LoginAnswer;
import ru.soune.nocopy.dto.register.LoginRequest;
import ru.soune.nocopy.dto.register.RegRequest;
import ru.soune.nocopy.entity.company.Company;
import ru.soune.nocopy.entity.tarif.Tariff;
import ru.soune.nocopy.entity.tarif.TariffInfo;
import ru.soune.nocopy.entity.tarif.TariffType;
import ru.soune.nocopy.entity.user.AuthToken;
import ru.soune.nocopy.entity.user.Permission;
import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.exception.MaxUserCountIsOver;
import ru.soune.nocopy.exception.NotFoundAuthToken;
import ru.soune.nocopy.exception.NotValidFieldException;
import ru.soune.nocopy.repository.AuthTokenRepository;
@@ -176,20 +179,29 @@ public class AuthService {
private void createIndividualCompanyAccount(RegRequest request, User user) {
String authToken = request.getAuthToken();
Long userIdByToken = authTokenRepository.findUserIdByToken(authToken);
User companyUser = userRepository.findById(userIdByToken).orElseThrow();
User companyUser = userRepository.findById(userIdByToken)
.orElseThrow(() -> new EntityNotFoundException("Not found token: " + authToken));
Company company = companyUser.getCompany();
TariffInfo tariffInfo = company.getTariffInfo();
Long maxUsers = tariffInfo.getTariff().getMaxUsers();
long currentCountUsers = userRepository.countByCompanyId(company.getId());
//TODO add exception
if (currentCountUsers < maxUsers) {
throw new RuntimeException();
if (company == null) {
throw new IllegalStateException("Not have company");
}
user.setCompany(companyUser.getCompany());
TariffInfo tariffInfo = company.getTariffInfo();
if (tariffInfo == null) {
throw new IllegalStateException("Company not have tariff");
}
Tariff tariff = tariffInfo.getTariff();
Long maxUsers = tariff.getMaxUsers();
long currentCountUsers = userRepository.countByCompanyId(company.getId());
if (currentCountUsers >= maxUsers) {
throw new MaxUserCountIsOver(
String.format("Max user is over. " + "Has: %d, current count: %d", maxUsers, currentCountUsers));
}
user.setCompany(company);
user.grantPermission(Permission.DEFAULT_USER_PERMISSIONS);
}
}