diff --git a/src/main/java/ru/soune/nocopy/controller/UserController.java b/src/main/java/ru/soune/nocopy/controller/UserController.java index 173ee84..8029073 100644 --- a/src/main/java/ru/soune/nocopy/controller/UserController.java +++ b/src/main/java/ru/soune/nocopy/controller/UserController.java @@ -11,6 +11,7 @@ import ru.soune.nocopy.dto.register.RegAnswer; import ru.soune.nocopy.dto.register.RegRequest; import ru.soune.nocopy.dto.user.UserDTO; 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.User; 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.UserRepository; 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 java.util.Arrays; @@ -44,12 +47,14 @@ public class UserController { private final AuthService authService; + private final TariffService tariffService; + @GetMapping("/all") public ResponseEntity> getAllUsers() { List allUsers = userRepository.findAll().stream() .map(u -> new UserDTO(u.getFullName(), u.getCompanyName(), u.getEmail(), u.isActive(), u.getPhone(), u.getGenderType(), - u.getBirthday(), u.getCreatedAt(), u.getSubscriptionType())) + u.getBirthday(), u.getCreatedAt(), u.getSubscriptionType(), tariffService.getAllTariffs(), u.getPersonalTariffInfo())) .toList(); return ResponseEntity.ok(allUsers); @@ -62,11 +67,9 @@ public class UserController { Optional tokenOptional = authTokenRepository.findByToken(token); - AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); - - if (authToken != null) { + if (tokenOptional.isPresent()) { User user = userRepository.findByEmail(email); - //TODO add mapper + if (user != null) { UserDTO userDTO = userMapper.toDTO(user); userDTO.setEmail(email); @@ -76,6 +79,14 @@ public class UserController { 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.setGenderType(user.getGenderType()); userDTO.setBirthday(user.getBirthday()); @@ -85,7 +96,8 @@ public class UserController { return ResponseEntity.ok(userDTO); } - + } else { + return ResponseEntity.notFound().build(); } return ResponseEntity.notFound().build(); diff --git a/src/main/java/ru/soune/nocopy/dto/user/UserDTO.java b/src/main/java/ru/soune/nocopy/dto/user/UserDTO.java index 45f9cbe..3bbeb8e 100644 --- a/src/main/java/ru/soune/nocopy/dto/user/UserDTO.java +++ b/src/main/java/ru/soune/nocopy/dto/user/UserDTO.java @@ -4,11 +4,14 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; 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.SubscriptionType; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.List; @Data @AllArgsConstructor @@ -24,4 +27,6 @@ public class UserDTO { private LocalDate birthday; private LocalDateTime createdAt; private SubscriptionType subscriptionType; + private List tariffs; + private TariffInfo tariffInfo; } diff --git a/src/main/java/ru/soune/nocopy/entity/user/Permission.java b/src/main/java/ru/soune/nocopy/entity/user/Permission.java index b6ed9b8..11c2c11 100644 --- a/src/main/java/ru/soune/nocopy/entity/user/Permission.java +++ b/src/main/java/ru/soune/nocopy/entity/user/Permission.java @@ -1,7 +1,7 @@ package ru.soune.nocopy.entity.user; 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 DEFAULT_USER_PERMISSIONS = LOGIN_BIT; public static final long COMPANY_ADMIN_PERMISSIONS = diff --git a/src/main/java/ru/soune/nocopy/service/register/AuthService.java b/src/main/java/ru/soune/nocopy/service/register/AuthService.java index ab64e8c..6f38f56 100644 --- a/src/main/java/ru/soune/nocopy/service/register/AuthService.java +++ b/src/main/java/ru/soune/nocopy/service/register/AuthService.java @@ -70,8 +70,6 @@ public class AuthService { user.setPhone(registerRequest.getPhone()); } - user.grantPermission(Permission.LOGIN_BIT); - User savedUser = userRepository.save(user); AuthToken authToken = genereateAuthToken(savedUser); @@ -160,7 +158,8 @@ public class AuthService { tariffInfoService.addTariffInfo(companyTariff); user.setCompany(company); - user.grantPermission(Permission.COMPANY_SETTINGS_BIT); + user.setPersonalTariffInfo(companyTariff); + user.grantPermission(Permission.COMPANY_ADMIN_PERMISSIONS); } private void createIndividualAccount(User user) { @@ -169,5 +168,6 @@ public class AuthService { tariffInfoService.addTariffInfo(personalTariff); user.setPersonalTariffInfo(personalTariff); + user.grantPermission(Permission.DEFAULT_USER_PERMISSIONS); } }