fix menus
This commit is contained in:
		| @@ -0,0 +1,38 @@ | ||||
| package com.iconplus.smartproc.model.projection; | ||||
|  | ||||
| public interface MenusPermissionView { | ||||
|  | ||||
|     Long getId(); | ||||
|     void setId(Long id); | ||||
|  | ||||
|     String getNama(); | ||||
|     void setNama(String nama); | ||||
|  | ||||
|     Long getParentId(); | ||||
|     void setParentId(Long parentId); | ||||
|  | ||||
|     Long getUrutan(); | ||||
|     void setUrutan(Long urutan); | ||||
|  | ||||
|     String getIcon(); | ||||
|     void setIcon(String icon); | ||||
|  | ||||
|     String getLink(); | ||||
|     void setLink(String link); | ||||
|  | ||||
|     Boolean getCanView(); | ||||
|     void setCanView(Boolean canView); | ||||
|  | ||||
|     Boolean getCanRead(); | ||||
|     void setCanRead(Boolean canRead); | ||||
|  | ||||
|     Boolean getCanCreate(); | ||||
|     void setCanCreate(Boolean canCreate); | ||||
|  | ||||
|     Boolean getCanUpdate(); | ||||
|     void setCanUpdate(Boolean canUpdate); | ||||
|  | ||||
|     Boolean getCanDelete(); | ||||
|     void setCanDelete(Boolean canDelete); | ||||
|  | ||||
| } | ||||
| @@ -6,7 +6,7 @@ import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
|  | ||||
| import java.util.Set; | ||||
| import java.util.List; | ||||
|  | ||||
| @Data | ||||
| @Builder | ||||
| @@ -14,6 +14,7 @@ import java.util.Set; | ||||
| @NoArgsConstructor | ||||
| public class LoginResponse extends BaseResponse { | ||||
|  | ||||
|     private Long userId; | ||||
|     private String accessToken; | ||||
|     private Integer validity; | ||||
|     private String refreshToken; | ||||
| @@ -21,6 +22,6 @@ public class LoginResponse extends BaseResponse { | ||||
|     private String email; | ||||
|     private Long roleId; | ||||
|     private String role; | ||||
|     Set<String> accessMenu; | ||||
|     private List<MenusPermissionResponse> menus; | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,27 @@ | ||||
| package com.iconplus.smartproc.model.response; | ||||
|  | ||||
| import com.iconplus.smartproc.helper.base.BaseResponse; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
|  | ||||
| @Data | ||||
| @Builder | ||||
| @AllArgsConstructor | ||||
| @NoArgsConstructor | ||||
| public class MenusPermissionResponse extends BaseResponse { | ||||
|  | ||||
|     private Long id; | ||||
|     private String nama; | ||||
|     private Long parentId; | ||||
|     private Long urutan; | ||||
|     private String icon; | ||||
|     private String link; | ||||
|     private Boolean canView; | ||||
|     private Boolean canRead; | ||||
|     private Boolean canCreate; | ||||
|     private Boolean canDelete; | ||||
|     private Boolean canUpdate; | ||||
|  | ||||
| } | ||||
| @@ -1,6 +1,7 @@ | ||||
| package com.iconplus.smartproc.repository; | ||||
|  | ||||
| import com.iconplus.smartproc.model.entity.Permission; | ||||
| import com.iconplus.smartproc.model.projection.MenusPermissionView; | ||||
| import com.iconplus.smartproc.model.projection.PermissionView; | ||||
| import org.springframework.data.jpa.repository.JpaRepository; | ||||
| import org.springframework.data.jpa.repository.Query; | ||||
| @@ -28,4 +29,22 @@ public interface PermissionRepository extends JpaRepository<Permission, Long> { | ||||
|     List<PermissionView> getAllPermissionsByRoleId(Long roleId); | ||||
|  | ||||
|     Optional<Permission> findByRoleIdAndMenuIdAndIsDeleteFalse(Long roleId, Long menuId); | ||||
|  | ||||
|     @Query(value = "SELECT m.id as id, " + | ||||
|             "m.nama as nama, " + | ||||
|             "m.parentId as parentId, " + | ||||
|             "m.urutan as urutan, " + | ||||
|             "m.icon as icon, " + | ||||
|             "m.link as link, " + | ||||
|             "p.canView as canView, " + | ||||
|             "p.canRead as canRead, " + | ||||
|             "p.canCreate as canCreate, " + | ||||
|             "p.canUpdate as canUpdate, " + | ||||
|             "p.canDelete as canDelete " + | ||||
|             "FROM Permission p " + | ||||
|             "JOIN Menus m ON m.id = p.menuId " + | ||||
|             "WHERE m.isDelete = false " + | ||||
|             "AND p.isDelete = false " + | ||||
|             "AND p.roleId = :roleId") | ||||
|     List<MenusPermissionView> getListMenusPermission(Long roleId); | ||||
| } | ||||
|   | ||||
| @@ -4,13 +4,18 @@ import com.iconplus.smartproc.configuration.JwtTokenUtil; | ||||
| import com.iconplus.smartproc.exception.BusinessException; | ||||
| import com.iconplus.smartproc.helper.service.BaseService; | ||||
| import com.iconplus.smartproc.model.entity.TokenManagement; | ||||
| import com.iconplus.smartproc.model.projection.MenusPermissionView; | ||||
| import com.iconplus.smartproc.model.request.LoginRequest; | ||||
| import com.iconplus.smartproc.model.response.LoginResponse; | ||||
| import com.iconplus.smartproc.model.response.MenusPermissionResponse; | ||||
| import com.iconplus.smartproc.model.token.TokenContent; | ||||
| import com.iconplus.smartproc.repository.MenusRepository; | ||||
| import com.iconplus.smartproc.repository.PermissionRepository; | ||||
| import com.iconplus.smartproc.repository.UsersRepository; | ||||
| import com.iconplus.smartproc.service.CommonService; | ||||
| import com.iconplus.smartproc.util.Constants; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| import org.apache.commons.lang3.BooleanUtils; | ||||
| import org.apache.commons.lang3.StringUtils; | ||||
| import org.springframework.beans.factory.annotation.Value; | ||||
| import org.springframework.http.HttpStatus; | ||||
| @@ -18,9 +23,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; | ||||
| import org.springframework.stereotype.Service; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
|  | ||||
| import java.util.HashMap; | ||||
| import java.util.HashSet; | ||||
| import java.util.Map; | ||||
| import java.util.*; | ||||
|  | ||||
| @Service | ||||
| @Slf4j | ||||
| @@ -34,14 +37,19 @@ public class LoginService implements BaseService<LoginRequest, LoginResponse> { | ||||
|     private final UsersRepository usersRepository; | ||||
|     private final JwtTokenUtil jwtTokenUtil; | ||||
|     private final CommonService commonService; | ||||
|  | ||||
|     private final MenusRepository menusRepository; | ||||
|     private final PermissionRepository permissionRepository; | ||||
|  | ||||
|     public LoginService(UsersRepository userRepository, | ||||
|                         JwtTokenUtil jwtTokenUtil, | ||||
|                         CommonService commonService) { | ||||
|                         CommonService commonService, | ||||
|                         MenusRepository menusRepository, | ||||
|                         PermissionRepository permissionRepository) { | ||||
|         this.usersRepository = userRepository; | ||||
|         this.jwtTokenUtil = jwtTokenUtil; | ||||
|         this.commonService = commonService; | ||||
|         this.menusRepository = menusRepository; | ||||
|         this.permissionRepository = permissionRepository; | ||||
|  | ||||
|     } | ||||
|  | ||||
| @@ -65,6 +73,35 @@ public class LoginService implements BaseService<LoginRequest, LoginResponse> { | ||||
|                     Constants.ERR_TTL_10004, | ||||
|                     Constants.ERR_MSG_10004); | ||||
|         } | ||||
|         Set<String> accessMenu = new HashSet<>(); | ||||
|         List<MenusPermissionResponse> menusPermissionResponseList = new ArrayList<>(); | ||||
|         var listMenusPermission = permissionRepository.getListMenusPermission(userRoleView.getRoleId()); | ||||
|         for (MenusPermissionView menusPermissionView : listMenusPermission) { | ||||
|             if (BooleanUtils.isTrue(menusPermissionView.getCanView()) || | ||||
|                     BooleanUtils.isTrue(menusPermissionView.getCanCreate()) || | ||||
|                     BooleanUtils.isTrue(menusPermissionView.getCanUpdate()) || | ||||
|                     BooleanUtils.isTrue(menusPermissionView.getCanDelete()) || | ||||
|                     BooleanUtils.isTrue(menusPermissionView.getCanRead())) { | ||||
|                 accessMenu.add(menusPermissionView.getNama()); | ||||
|             } | ||||
|  | ||||
|             MenusPermissionResponse menusPermissionResponse = MenusPermissionResponse.builder() | ||||
|                     .id(menusPermissionView.getId()) | ||||
|                     .nama(menusPermissionView.getNama()) | ||||
|                     .parentId(menusPermissionView.getParentId()) | ||||
|                     .urutan(menusPermissionView.getUrutan()) | ||||
|                     .icon(menusPermissionView.getIcon()) | ||||
|                     .link(menusPermissionView.getLink()) | ||||
|                     .canView(menusPermissionView.getCanView()) | ||||
|                     .canRead(menusPermissionView.getCanRead()) | ||||
|                     .canCreate(menusPermissionView.getCanCreate()) | ||||
|                     .canUpdate(menusPermissionView.getCanUpdate()) | ||||
|                     .canDelete(menusPermissionView.getCanDelete()) | ||||
|                     .build(); | ||||
|  | ||||
|             menusPermissionResponseList.add(menusPermissionResponse); | ||||
|  | ||||
|         } | ||||
|  | ||||
|         var tokenContent = TokenContent.builder() | ||||
|                 .userId(userRoleView.getId()) | ||||
| @@ -78,7 +115,7 @@ public class LoginService implements BaseService<LoginRequest, LoginResponse> { | ||||
|                 .bidang(userRoleView.getBidang()) | ||||
|                 .jabatanId(userRoleView.getJabatanId()) | ||||
|                 .jabatan(userRoleView.getJabatan()) | ||||
|                 .accessMenu(new HashSet<>()) | ||||
|                 .accessMenu(accessMenu) | ||||
|                 .build(); | ||||
|  | ||||
|         Map<String, Object> claims = new HashMap<>(); | ||||
| @@ -104,9 +141,12 @@ public class LoginService implements BaseService<LoginRequest, LoginResponse> { | ||||
|             .accessToken(accessToken) | ||||
|             .validity(accessTokenExp * 60) | ||||
|             .refreshToken(refreshToken) | ||||
|             .userId(userRoleView.getId()) | ||||
|             .username(userRoleView.getUsername()) | ||||
|             .email(userRoleView.getEmail()) | ||||
|             .roleId(userRoleView.getRoleId()) | ||||
|             .role(userRoleView.getRole()) | ||||
|             .menus(menusPermissionResponseList) | ||||
|             .build(); | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user