@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user