접근 권한 처리 및 권한 설정 개선:
- 미로그인 사용자 접근 시 로그인 페이지 리다이렉트 처리 - Webhook 관리 접근 권한 `ROLE_API_KEY_REQUEST`로 변경 - 오류 페이지 스타일 수정: `white-space: pre-line` 추가
This commit is contained in:
+10
-1
@@ -7,6 +7,7 @@ import java.util.Map;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import com.eactive.apim.portal.common.util.SecurityUtil;
|
||||||
import com.eactive.apim.portal.config.PortalProperties;
|
import com.eactive.apim.portal.config.PortalProperties;
|
||||||
import com.eactive.apim.portal.file.exception.InvalidFileException;
|
import com.eactive.apim.portal.file.exception.InvalidFileException;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -54,7 +55,15 @@ public class PortalGlobalExceptionHandler {
|
|||||||
|
|
||||||
@ExceptionHandler(value = AccessDeniedException.class)
|
@ExceptionHandler(value = AccessDeniedException.class)
|
||||||
public ModelAndView handleAccessDeniedException(HttpServletRequest request, AccessDeniedException ex) {
|
public ModelAndView handleAccessDeniedException(HttpServletRequest request, AccessDeniedException ex) {
|
||||||
return new ModelAndView("redirect:/login");
|
// 미로그인 사용자는 로그인 페이지로 유도, 로그인 상태에서의 권한 부족은 오류 안내 페이지로 표시한다.
|
||||||
|
if (!SecurityUtil.isAuthenticated()) {
|
||||||
|
return new ModelAndView("redirect:/login");
|
||||||
|
}
|
||||||
|
log.warn("접근 권한 없음: loginId={}, uri={}", SecurityUtil.getCurrentLoginId(), request.getRequestURI());
|
||||||
|
ModelAndView modelAndView = new ModelAndView("error");
|
||||||
|
modelAndView.addObject("errorTitle", "페이지 접근 권한이 없습니다.");
|
||||||
|
modelAndView.addObject("errorDescription", "해당 페이지를 이용할 수 있는 권한이 없는 계정입니다.\n권한이 필요한 경우 관리자에게 문의해 주세요.");
|
||||||
|
return modelAndView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExceptionHandler(value = PortalRedirectException.class)
|
@ExceptionHandler(value = PortalRedirectException.class)
|
||||||
|
|||||||
@@ -75,6 +75,7 @@
|
|||||||
color: #212529;
|
color: #212529;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
|
white-space: pre-line;
|
||||||
}
|
}
|
||||||
|
|
||||||
.error-buttons {
|
.error-buttons {
|
||||||
|
|||||||
@@ -93,7 +93,7 @@
|
|||||||
</li>
|
</li>
|
||||||
<li sec:authorize="hasRole('ROLE_APP')">
|
<li sec:authorize="hasRole('ROLE_APP')">
|
||||||
<a th:href="@{/myapikey}"><i class="fas fa-key"></i>인증 키 관리</a>
|
<a th:href="@{/myapikey}"><i class="fas fa-key"></i>인증 키 관리</a>
|
||||||
<a th:href="@{/webhook}"><i class="fas fa-bell"></i>Webhook 관리</a>
|
<a th:href="@{/webhook}" sec:authorize="hasRole('ROLE_API_KEY_REQUEST')"><i class="fas fa-bell"></i>Webhook 관리</a>
|
||||||
<a th:href="@{/statistics/api}"><i class="fas fa-chart-bar"></i>이용 통계</a>
|
<a th:href="@{/statistics/api}"><i class="fas fa-chart-bar"></i>이용 통계</a>
|
||||||
</li>
|
</li>
|
||||||
<li><a th:href="@{/mypage}"><i class="fas fa-user-circle"></i>내 정보 관리</a></li>
|
<li><a th:href="@{/mypage}"><i class="fas fa-user-circle"></i>내 정보 관리</a></li>
|
||||||
@@ -250,7 +250,7 @@
|
|||||||
<ul class="drawer-submenu">
|
<ul class="drawer-submenu">
|
||||||
<li sec:authorize="hasRole('ROLE_USER_MANAGER')"><a th:href="@{/users}">이용자 관리</a></li>
|
<li sec:authorize="hasRole('ROLE_USER_MANAGER')"><a th:href="@{/users}">이용자 관리</a></li>
|
||||||
<li sec:authorize="hasRole('ROLE_APP')"><a th:href="@{/myapikey}">인증 키 관리</a></li>
|
<li sec:authorize="hasRole('ROLE_APP')"><a th:href="@{/myapikey}">인증 키 관리</a></li>
|
||||||
<li sec:authorize="hasRole('ROLE_APP')"><a th:href="@{/webhook}">Webhook 관리</a></li>
|
<li sec:authorize="hasRole('ROLE_API_KEY_REQUEST')"><a th:href="@{/webhook}">Webhook 관리</a></li>
|
||||||
<li sec:authorize="hasRole('ROLE_APP')"><a th:href="@{/statistics/api}">이용 통계</a></li>
|
<li sec:authorize="hasRole('ROLE_APP')"><a th:href="@{/statistics/api}">이용 통계</a></li>
|
||||||
<li><a th:href="@{/mypage}">내 정보 관리</a></li>
|
<li><a th:href="@{/mypage}">내 정보 관리</a></li>
|
||||||
<li><a th:href="@{/change_password}">비밀번호 변경</a></li>
|
<li><a th:href="@{/change_password}">비밀번호 변경</a></li>
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
<a th:href="@{/webhook}"
|
<a th:href="@{/webhook}"
|
||||||
th:classappend="${activeMenu == 'webhook'} ? 'service-nav__item--active' : ''"
|
th:classappend="${activeMenu == 'webhook'} ? 'service-nav__item--active' : ''"
|
||||||
class="service-nav__item"
|
class="service-nav__item"
|
||||||
sec:authorize="hasRole('ROLE_APP')">Webhook 관리</a>
|
sec:authorize="hasRole('ROLE_API_KEY_REQUEST')">Webhook 관리</a>
|
||||||
|
|
||||||
<a th:href="@{/statistics/api}"
|
<a th:href="@{/statistics/api}"
|
||||||
th:classappend="${activeMenu == 'statistics'} ? 'service-nav__item--active' : ''"
|
th:classappend="${activeMenu == 'statistics'} ? 'service-nav__item--active' : ''"
|
||||||
|
|||||||
Reference in New Issue
Block a user