dev add tarifinfo by permission for user info
Test Workflow / test (push) Successful in 4s

This commit is contained in:
vladp
2026-02-03 15:05:03 +07:00
parent c38b86e1b9
commit 13324d4628
4 changed files with 27 additions and 10 deletions
@@ -11,6 +11,7 @@ import ru.soune.nocopy.dto.register.RegAnswer;
import ru.soune.nocopy.dto.register.RegRequest; import ru.soune.nocopy.dto.register.RegRequest;
import ru.soune.nocopy.dto.user.UserDTO; import ru.soune.nocopy.dto.user.UserDTO;
import ru.soune.nocopy.dto.user.UserRequest; import ru.soune.nocopy.dto.user.UserRequest;
import ru.soune.nocopy.entity.tarif.TariffInfo;
import ru.soune.nocopy.entity.user.AuthToken; import ru.soune.nocopy.entity.user.AuthToken;
import ru.soune.nocopy.entity.user.User; import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.exception.InvalidUserEmail; import ru.soune.nocopy.exception.InvalidUserEmail;
@@ -20,6 +21,8 @@ import ru.soune.nocopy.mapper.UserMapper;
import ru.soune.nocopy.repository.AuthTokenRepository; import ru.soune.nocopy.repository.AuthTokenRepository;
import ru.soune.nocopy.repository.UserRepository; import ru.soune.nocopy.repository.UserRepository;
import ru.soune.nocopy.service.register.AuthService; import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.service.tariff.TariffInfoService;
import ru.soune.nocopy.service.tariff.TariffService;
import ru.soune.nocopy.service.user.UserService; import ru.soune.nocopy.service.user.UserService;
import java.util.Arrays; import java.util.Arrays;
@@ -44,12 +47,14 @@ public class UserController {
private final AuthService authService; private final AuthService authService;
private final TariffService tariffService;
@GetMapping("/all") @GetMapping("/all")
public ResponseEntity<List<UserDTO>> getAllUsers() { public ResponseEntity<List<UserDTO>> getAllUsers() {
List<UserDTO> allUsers = userRepository.findAll().stream() List<UserDTO> allUsers = userRepository.findAll().stream()
.map(u -> new UserDTO(u.getFullName(), u.getCompanyName(), u.getEmail(), u.isActive(), .map(u -> new UserDTO(u.getFullName(), u.getCompanyName(), u.getEmail(), u.isActive(),
u.getPhone(), u.getGenderType(), u.getPhone(), u.getGenderType(),
u.getBirthday(), u.getCreatedAt(), u.getSubscriptionType())) u.getBirthday(), u.getCreatedAt(), u.getSubscriptionType(), tariffService.getAllTariffs(), u.getPersonalTariffInfo()))
.toList(); .toList();
return ResponseEntity.ok(allUsers); return ResponseEntity.ok(allUsers);
@@ -62,11 +67,9 @@ public class UserController {
Optional<AuthToken> tokenOptional = authTokenRepository.findByToken(token); Optional<AuthToken> tokenOptional = authTokenRepository.findByToken(token);
AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); if (tokenOptional.isPresent()) {
if (authToken != null) {
User user = userRepository.findByEmail(email); User user = userRepository.findByEmail(email);
//TODO add mapper
if (user != null) { if (user != null) {
UserDTO userDTO = userMapper.toDTO(user); UserDTO userDTO = userMapper.toDTO(user);
userDTO.setEmail(email); userDTO.setEmail(email);
@@ -76,6 +79,14 @@ public class UserController {
userDTO.setCompany(user.getCompany().getCompanyName()); userDTO.setCompany(user.getCompany().getCompanyName());
} }
if (user.canManageCompanySettings() || user.canLogin() && user.getCompany() == null) {
userDTO.setTariffs(tariffService.getAllTariffs());
TariffInfo personalTariffInfo = user.getPersonalTariffInfo();
userDTO.setTariffInfo(personalTariffInfo);
}
userDTO.setPhone(user.getPhone()); userDTO.setPhone(user.getPhone());
userDTO.setGenderType(user.getGenderType()); userDTO.setGenderType(user.getGenderType());
userDTO.setBirthday(user.getBirthday()); userDTO.setBirthday(user.getBirthday());
@@ -85,7 +96,8 @@ public class UserController {
return ResponseEntity.ok(userDTO); return ResponseEntity.ok(userDTO);
} }
} else {
return ResponseEntity.notFound().build();
} }
return ResponseEntity.notFound().build(); return ResponseEntity.notFound().build();
@@ -4,11 +4,14 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import ru.soune.nocopy.dto.tarriff.TariffDTO;
import ru.soune.nocopy.entity.tarif.TariffInfo;
import ru.soune.nocopy.entity.user.GenderType; import ru.soune.nocopy.entity.user.GenderType;
import ru.soune.nocopy.entity.user.SubscriptionType; import ru.soune.nocopy.entity.user.SubscriptionType;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@@ -24,4 +27,6 @@ public class UserDTO {
private LocalDate birthday; private LocalDate birthday;
private LocalDateTime createdAt; private LocalDateTime createdAt;
private SubscriptionType subscriptionType; private SubscriptionType subscriptionType;
private List<TariffDTO> tariffs;
private TariffInfo tariffInfo;
} }
@@ -1,7 +1,7 @@
package ru.soune.nocopy.entity.user; package ru.soune.nocopy.entity.user;
public class Permission { public class Permission {
public static final long LOGIN_BIT = 1L << 0; public static final long LOGIN_BIT = 1L;
public static final long COMPANY_SETTINGS_BIT = 1L << 1; public static final long COMPANY_SETTINGS_BIT = 1L << 1;
public static final long DEFAULT_USER_PERMISSIONS = LOGIN_BIT; public static final long DEFAULT_USER_PERMISSIONS = LOGIN_BIT;
public static final long COMPANY_ADMIN_PERMISSIONS = public static final long COMPANY_ADMIN_PERMISSIONS =
@@ -70,8 +70,6 @@ public class AuthService {
user.setPhone(registerRequest.getPhone()); user.setPhone(registerRequest.getPhone());
} }
user.grantPermission(Permission.LOGIN_BIT);
User savedUser = userRepository.save(user); User savedUser = userRepository.save(user);
AuthToken authToken = genereateAuthToken(savedUser); AuthToken authToken = genereateAuthToken(savedUser);
@@ -160,7 +158,8 @@ public class AuthService {
tariffInfoService.addTariffInfo(companyTariff); tariffInfoService.addTariffInfo(companyTariff);
user.setCompany(company); user.setCompany(company);
user.grantPermission(Permission.COMPANY_SETTINGS_BIT); user.setPersonalTariffInfo(companyTariff);
user.grantPermission(Permission.COMPANY_ADMIN_PERMISSIONS);
} }
private void createIndividualAccount(User user) { private void createIndividualAccount(User user) {
@@ -169,5 +168,6 @@ public class AuthService {
tariffInfoService.addTariffInfo(personalTariff); tariffInfoService.addTariffInfo(personalTariff);
user.setPersonalTariffInfo(personalTariff); user.setPersonalTariffInfo(personalTariff);
user.grantPermission(Permission.DEFAULT_USER_PERMISSIONS);
} }
} }