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