fix menus

This commit is contained in:
dirgantarasiahaan
2023-05-29 22:00:14 +07:00
parent 431ad60bdb
commit 8a7448210e
5 changed files with 133 additions and 8 deletions

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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();
}
}