diff --git a/src/main/java/com/mattrixwv/raidbuilder/config/TokenService.java b/src/main/java/com/mattrixwv/raidbuilder/config/TokenService.java index 52dca96..2a2c9a5 100644 --- a/src/main/java/com/mattrixwv/raidbuilder/config/TokenService.java +++ b/src/main/java/com/mattrixwv/raidbuilder/config/TokenService.java @@ -3,6 +3,7 @@ package com.mattrixwv.raidbuilder.config; import java.time.Duration; import java.time.Instant; +import java.util.List; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Value; @@ -12,8 +13,15 @@ import org.springframework.security.oauth2.jwt.JwtClaimsSet; import org.springframework.security.oauth2.jwt.JwtEncoder; import org.springframework.security.oauth2.jwt.JwtEncoderParameters; +import com.fasterxml.jackson.databind.ObjectMapper; import com.mattrixwv.raidbuilder.entity.Account; +import com.mattrixwv.raidbuilder.entity.GamePermission; +import com.mattrixwv.raidbuilder.entity.RaidGroupPermission; +import com.mattrixwv.raidbuilder.entity.RaidGroupRequest; import com.mattrixwv.raidbuilder.service.AccountPermissionService; +import com.mattrixwv.raidbuilder.service.GamePermissionService; +import com.mattrixwv.raidbuilder.service.RaidGroupPermissionService; +import com.mattrixwv.raidbuilder.service.RaidGroupRequestService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -23,8 +31,12 @@ import lombok.extern.slf4j.Slf4j; @Configuration @RequiredArgsConstructor public class TokenService{ + private final ObjectMapper mapper; private final JwtEncoder encoder; private final AccountPermissionService accountPermissionService; + private final GamePermissionService gamePermissionService; + private final RaidGroupPermissionService raidGroupPermissionService; + private final RaidGroupRequestService raidGroupRequestService; //Fields @Value("${jwt.accessTokenDuration}") private Duration accessTokenDuration; @@ -35,6 +47,9 @@ public class TokenService{ String scope = accountPermissionService.getByAccountId(account.getAccountId()).stream().map(GrantedAuthority::getAuthority).collect(Collectors.joining(" ")); + List gamePermissions = gamePermissionService.getByAccountId(account.getAccountId()); + List raidGroupPermissions = raidGroupPermissionService.getByAccountId(account.getAccountId()); + List raidGroupRequests = raidGroupRequestService.getByAccountId(account.getAccountId()); Instant now = Instant.now(); JwtClaimsSet claims = JwtClaimsSet.builder() @@ -44,6 +59,9 @@ public class TokenService{ .subject(account.getUsername()) .claim("scope", scope) .claim("accountId", account.getAccountId().toString()) + .claim("raidGroupPermissions", mapper.valueToTree(raidGroupPermissions).toString()) + .claim("gamePermissions", mapper.valueToTree(gamePermissions).toString()) + .claim("raidGroupRequests", mapper.valueToTree(raidGroupRequests).toString()) //Game Permissions //Raid Group Permissions .build(); diff --git a/src/main/java/com/mattrixwv/raidbuilder/repository/raid_group_request/RaidGroupRequestRepository.java b/src/main/java/com/mattrixwv/raidbuilder/repository/raid_group_request/RaidGroupRequestRepository.java index 7c37729..eb2f0fd 100644 --- a/src/main/java/com/mattrixwv/raidbuilder/repository/raid_group_request/RaidGroupRequestRepository.java +++ b/src/main/java/com/mattrixwv/raidbuilder/repository/raid_group_request/RaidGroupRequestRepository.java @@ -15,7 +15,8 @@ public interface RaidGroupRequestRepository extends RaidGroupRequestCustomReposi public void deleteAllByRaidGroupIdIn(Iterable raidGroupIds); - public List findByRaidGroupId(UUID raidGroupId, PageRequest pageRequest); + public List findAllByAccountId(UUID accountId); + public List findAllByRaidGroupId(UUID raidGroupId, PageRequest pageRequest); public long countByRaidGroupId(UUID raidGroupId); } diff --git a/src/main/java/com/mattrixwv/raidbuilder/service/RaidGroupRequestService.java b/src/main/java/com/mattrixwv/raidbuilder/service/RaidGroupRequestService.java index e530bcc..c50d757 100644 --- a/src/main/java/com/mattrixwv/raidbuilder/service/RaidGroupRequestService.java +++ b/src/main/java/com/mattrixwv/raidbuilder/service/RaidGroupRequestService.java @@ -61,8 +61,12 @@ public class RaidGroupRequestService{ //Read + public List getByAccountId(UUID accountId){ + return rgrRepository.findAllByAccountId(accountId); + } + public List getByRaidGroupId(UUID raidGroupId, int page, int pageSize){ - return rgrRepository.findByRaidGroupId(raidGroupId, PageRequest.of(page, pageSize, Sort.by("createdBy").ascending())); + return rgrRepository.findAllByRaidGroupId(raidGroupId, PageRequest.of(page, pageSize, Sort.by("createdBy").ascending())); } public List getByRaidGroupId(UUID raidGroupId, int page, int pageSize, String searchTerm){