Compare commits
No commits in common. "master" and "a40e21abfaef62f49ac37e041a921574cf1f0138" have entirely different histories.
master
...
a40e21abfa
|
|
@ -35,4 +35,3 @@ out/
|
||||||
|
|
||||||
### VS Code ###
|
### VS Code ###
|
||||||
.vscode/
|
.vscode/
|
||||||
.vs/
|
|
||||||
|
|
|
||||||
12
build.gradle
12
build.gradle
|
|
@ -6,7 +6,7 @@ plugins {
|
||||||
|
|
||||||
group = 'com.dbnt'
|
group = 'com.dbnt'
|
||||||
version = '0.0.1-SNAPSHOT'
|
version = '0.0.1-SNAPSHOT'
|
||||||
sourceCompatibility = '1.8'
|
sourceCompatibility = '11'
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
compileOnly {
|
compileOnly {
|
||||||
|
|
@ -26,15 +26,21 @@ dependencies {
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
|
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
|
||||||
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4'
|
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
|
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
|
||||||
implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:2.5.3'
|
implementation group: 'nz.net.ultraq.thymeleaf', name: 'thymeleaf-layout-dialect', version: '2.5.3'
|
||||||
|
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-security'
|
implementation 'org.springframework.boot:spring-boot-starter-security'
|
||||||
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
|
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
|
||||||
// implementation 'io.jsonwebtoken:jjwt:0.9.1'
|
// implementation 'io.jsonwebtoken:jjwt:0.9.1'
|
||||||
|
|
||||||
implementation 'org.mariadb.jdbc:mariadb-java-client:2.7.4'
|
implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.7.4'
|
||||||
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
|
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
|
||||||
|
|
||||||
implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.4'
|
implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.4'
|
||||||
|
|
||||||
|
testImplementation 'org.springframework.boot:spring-boot-starter-test:2.5.6'
|
||||||
|
testImplementation 'org.springframework.security:spring-security-test:5.5.1'
|
||||||
|
|
||||||
|
test {
|
||||||
|
useJUnitPlatform()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -274,11 +274,7 @@ public class BoardService {
|
||||||
private String calculationSize(double fileSize){
|
private String calculationSize(double fileSize){
|
||||||
String[] units = {"bytes", "KB", "MB", "GB", "TB", "PB"};
|
String[] units = {"bytes", "KB", "MB", "GB", "TB", "PB"};
|
||||||
double unitSelector = Math.floor(Math.log(fileSize)/Math.log(1024));
|
double unitSelector = Math.floor(Math.log(fileSize)/Math.log(1024));
|
||||||
if(fileSize>0){
|
|
||||||
return Math.round((fileSize/Math.pow(1024, unitSelector))*100)/100d+" "+units[(int)unitSelector];
|
return Math.round((fileSize/Math.pow(1024, unitSelector))*100)/100d+" "+units[(int)unitSelector];
|
||||||
}else{
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<BoardLog> selectBoardLogList(BoardLog boardLog) {
|
public List<BoardLog> selectBoardLogList(BoardLog boardLog) {
|
||||||
|
|
|
||||||
|
|
@ -14,12 +14,12 @@ spring.thymeleaf.cache=false
|
||||||
|
|
||||||
#mariaDB & log4jdbc
|
#mariaDB & log4jdbc
|
||||||
spring.datasource.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
spring.datasource.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
||||||
spring.datasource.url=ENC(yjSB3S7x1Gq0ir51/Fb3j1IX6b5uS6BfuPh1Wq1rRcrTCOBfldjTV39VSbRqGk+Z1/HGkGQK9JPFyjHEqu3P8nBbqLbu6GIgrbe2gmx2O9e0Ut3Sb4lG/ox144z6YQ9rpQMImi8xJ/JyNF9qlD6jkg==)
|
spring.datasource.url=ENC(aqLYKJgbP9cnsnvdR27iHExQ6dhwLVin81SAYNE31Rzfl5HC2PsFSxF5xPTfQypC5jk0TEDpBGIDCTPq6W43KZ+g8wrsw4k3PcwxrAhFVNjLInxh4+Xv4BjcqCiIRfMIx/OnjQK1kwVF9/OZauLFdQ==)
|
||||||
spring.datasource.username=ENC(9GbdvLyouOcP1EPo+5FO/A==)
|
spring.datasource.username=ENC(A7iDWZCu8csd0mm0UjqQKA==)
|
||||||
spring.datasource.password=ENC(k09thSYoBJ2rLkhORLahdJBiVd58slqN)
|
spring.datasource.password=ENC(u4iVHinHq1HOrewYzuMUdlqbpagxmR0/)
|
||||||
#spring.datasource.url=jdbc:log4jdbc:mariadb://118.219.150.34:50504/kcgFileManager?characterEncoding=UTF-8&serverTimezone=UTC
|
#spring.datasource.url=jdbc:log4jdbc:mariadb://localhost:3306/kcgFileManager?characterEncoding=UTF-8&serverTimezone=UTC
|
||||||
#spring.datasource.username=root
|
#spring.datasource.username=root
|
||||||
#spring.datasource.password=dbnt0928!
|
#spring.datasource.password=kcg211228
|
||||||
|
|
||||||
#jpa
|
#jpa
|
||||||
spring.jpa.show-sql=true
|
spring.jpa.show-sql=true
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,19 @@
|
||||||
|
/*로그인 폼*/
|
||||||
|
.form-signin{
|
||||||
|
width: 100%;
|
||||||
|
max-width: 330px;
|
||||||
|
padding: 15px;
|
||||||
|
margin: auto;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 200;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
.centerDiv{
|
.centerDiv{
|
||||||
max-height: fit-content;
|
max-height: fit-content;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*스크롤기능 있지만 안보이게*/
|
|
||||||
body::-webkit-scrollbar {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*사이드바 카테고리 트리*/
|
/*사이드바 카테고리 트리*/
|
||||||
.btn-toggle:hover, .btn-toggle:focus {
|
.btn-toggle:hover, .btn-toggle:focus {
|
||||||
color: rgba(0, 0, 0, .85);
|
color: rgba(0, 0, 0, .85);
|
||||||
|
|
@ -43,12 +49,3 @@ body::-webkit-scrollbar {
|
||||||
transform: translate(-50%, -50%);
|
transform: translate(-50%, -50%);
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
#list-group-line{
|
|
||||||
padding-bottom: 52vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*@media (max-width:1199px)*/
|
|
||||||
/* .sidebar {*/
|
|
||||||
/* left: -300px;*/
|
|
||||||
/* }*/
|
|
||||||
|
|
|
||||||
|
|
@ -1,45 +0,0 @@
|
||||||
/*로그인 폼*/
|
|
||||||
.form-signin{
|
|
||||||
width: 100%;
|
|
||||||
max-width: 330px;
|
|
||||||
padding: 15px;
|
|
||||||
margin: auto;
|
|
||||||
position: absolute;
|
|
||||||
z-index: 200;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
border-radius: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
header{
|
|
||||||
z-index:300;
|
|
||||||
background-color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
body{
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*스크롤기능 있지만 안보이게*/
|
|
||||||
body::-webkit-scrollbar {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#logo{
|
|
||||||
z-index:300;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer{
|
|
||||||
z-index:200;
|
|
||||||
}
|
|
||||||
|
|
||||||
#img02{
|
|
||||||
transition: all 1s ease-out;
|
|
||||||
z-index:100;
|
|
||||||
}
|
|
||||||
|
|
||||||
#img02:hover{
|
|
||||||
transform: scale(1.1, 1.1);
|
|
||||||
transition: all 1s ease-out;
|
|
||||||
}
|
|
||||||
|
|
@ -4,7 +4,6 @@ $(function(){
|
||||||
language: "ko"
|
language: "ko"
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '.userInfoTr', function (){
|
$(document).on('click', '.userInfoTr', function (){
|
||||||
$(".userInfoCheckBox").prop('checked', false);
|
$(".userInfoCheckBox").prop('checked', false);
|
||||||
const target = $(this).find(".userInfoCheckBox")[0];
|
const target = $(this).find(".userInfoCheckBox")[0];
|
||||||
|
|
@ -189,7 +188,6 @@ function getUserInfo(userSeq){
|
||||||
dataType:"html",
|
dataType:"html",
|
||||||
success: function(html){
|
success: function(html){
|
||||||
$("#userContent").empty().append(html)
|
$("#userContent").empty().append(html)
|
||||||
$("#userInfoModal").modal('show')
|
|
||||||
},
|
},
|
||||||
error:function(){
|
error:function(){
|
||||||
|
|
||||||
|
|
@ -206,7 +204,6 @@ function getCategoryRole(userSeq){
|
||||||
dataType:"html",
|
dataType:"html",
|
||||||
success: function(html){
|
success: function(html){
|
||||||
$("#userContent").empty().append(html)
|
$("#userContent").empty().append(html)
|
||||||
$("#userInfoModal").modal('show')
|
|
||||||
},
|
},
|
||||||
error:function(){
|
error:function(){
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
<div class="col-12 card">
|
<div class="col-12 card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="row justify-content-start">
|
<div class="row justify-content-start">
|
||||||
<div class="col-xl-4">
|
<div class="col-4">
|
||||||
<h5 class="mx-2"><i class="bi bi-square-fill"></i><span> 저장공간</span></h5>
|
<h5 class="mx-2"><i class="bi bi-square-fill"></i><span> 저장공간</span></h5>
|
||||||
<th:block th:each="diskInfo:${diskInfoList}">
|
<th:block th:each="diskInfo:${diskInfoList}">
|
||||||
<div class="row justify-content-center py-3 m-2 border rounded">
|
<div class="row justify-content-center py-3 m-2 border rounded">
|
||||||
|
|
@ -47,7 +47,7 @@
|
||||||
</div>
|
</div>
|
||||||
</th:block>
|
</th:block>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xl-8">
|
<div class="col-8">
|
||||||
<h5 class="mx-2"><i class="bi bi-square-fill"></i><span> 전체 이력</span></h5>
|
<h5 class="mx-2"><i class="bi bi-square-fill"></i><span> 전체 이력</span></h5>
|
||||||
<div class="row p-3 mx-2 border rounded">
|
<div class="row p-3 mx-2 border rounded">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
<div class="col-12 card text-center">
|
<div class="col-12 card text-center">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="row justify-content-start">
|
<div class="row justify-content-start">
|
||||||
<div class="col-12">
|
<div class="col-7">
|
||||||
<form method="get" th:action="@{/admin/userMgt}">
|
<form method="get" th:action="@{/admin/userMgt}">
|
||||||
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
|
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
|
||||||
<div class="row justify-content-between">
|
<div class="row justify-content-between">
|
||||||
|
|
@ -138,7 +138,22 @@
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<input type="button" class="btn btn-success" value="사용자 생성" data-bs-toggle="modal" data-bs-target="#userInsertModal">
|
<input type="button" class="btn btn-success" value="사용자 생성" data-bs-toggle="modal" data-bs-target="#userInfoModal">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-5">
|
||||||
|
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
||||||
|
<li class="nav-item" role="presentation">
|
||||||
|
<button class="nav-link active" id="infoTab" data-bs-toggle="tab" type="button" role="tab">개인정보</button>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item" role="presentation">
|
||||||
|
<button class="nav-link" id="categoryTab" data-bs-toggle="tab" type="button" role="tab">권한</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div class="tab-content border border-top-0" id="userContent">
|
||||||
|
<div class="py-5">
|
||||||
|
<h3>왼쪽 목록에서 선택해주세요.</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -148,17 +163,17 @@
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div class="modal fade" id="userInsertModal" tabindex="-1" aria-labelledby="userInsertModalLabel" aria-hidden="true">
|
<div class="modal fade" id="userInfoModal" tabindex="-1" aria-labelledby="userInfoModalLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog">
|
<div class="modal-dialog">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title" id="userInsertModalLabel">사용자 생성</h5>
|
<h5 class="modal-title" id="userInfoModalLabel">사용자 생성</h5>
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<form id="userInfoInsert" action="#" th:action="@{/admin/insertUserInfo}" method="post">
|
<form id="userInfoInsert" action="#" th:action="@{/admin/insertUserInfo}" method="post">
|
||||||
<div class="mb-3 row">
|
<div class="mb-3 row">
|
||||||
<label for="userId" class="col-sm-4 col-form-label text-center">아이디</label>
|
<label for="userId" class="col-sm-4 col-form-label">아이디</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input type="text" class="form-control" id="userId" name="userId" autocomplete="off">
|
<input type="text" class="form-control" id="userId" name="userId" autocomplete="off">
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -167,28 +182,28 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3 row">
|
<div class="mb-3 row">
|
||||||
<label for="password" class="col-sm-4 col-form-label text-center">비밀번호</label>
|
<label for="password" class="col-sm-4 col-form-label">비밀번호</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input type="password" class="form-control" id="password" name="password">
|
<input type="password" class="form-control" id="password" name="password">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-auto form-text mx-auto">
|
<div class="col-sm-auto form-text mx-auto">
|
||||||
8~16자 사이의 알파벳, 숫자, 특수문자 조합을 입력해주세요.
|
8~16자 사이의 알파벳, 숫자 조합을 입력해주세요.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3 row">
|
<div class="mb-3 row">
|
||||||
<label for="passwordConfirm" class="col-sm-4 col-form-label text-center">비밀번호 확인</label>
|
<label for="passwordConfirm" class="col-sm-4 col-form-label">비밀번호 확인</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input type="password" class="form-control" id="passwordConfirm">
|
<input type="password" class="form-control" id="passwordConfirm">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3 row">
|
<div class="mb-3 row">
|
||||||
<label for="name" class="col-sm-4 col-form-label text-center">이름</label>
|
<label for="name" class="col-sm-4 col-form-label">이름</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input type="text" class="form-control" id="name" name="name" autocomplete="off">
|
<input type="text" class="form-control" id="name" name="name" autocomplete="off">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3 row">
|
<div class="mb-3 row">
|
||||||
<label for="department" class="col-sm-4 col-form-label text-center">부서</label>
|
<label for="department" class="col-sm-4 col-form-label">부서</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<select class="form-select" id="department" name="department">
|
<select class="form-select" id="department" name="department">
|
||||||
<th:block th:each="commonCode:${session.departmentList}">
|
<th:block th:each="commonCode:${session.departmentList}">
|
||||||
|
|
@ -198,7 +213,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3 row">
|
<div class="mb-3 row">
|
||||||
<label for="position" class="col-sm-4 col-form-label text-center">직급</label>
|
<label for="position" class="col-sm-4 col-form-label">직급</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<select class="form-select" id="position" name="position">
|
<select class="form-select" id="position" name="position">
|
||||||
<th:block th:each="commonCode:${session.positionList}">
|
<th:block th:each="commonCode:${session.positionList}">
|
||||||
|
|
@ -224,31 +239,5 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="modal fade" id="userInfoModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-lg">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title" id="staticBackdropLabel">사용자 정보 수정</h5>
|
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
|
||||||
<li class="nav-item" role="presentation">
|
|
||||||
<button class="nav-link active" id="infoTab" data-bs-toggle="tab" type="button" role="tab">개인정보</button>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item" role="presentation">
|
|
||||||
<button class="nav-link" id="categoryTab" data-bs-toggle="tab" type="button" role="tab">권한</button>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<div class="tab-content border border-top-0" id="userContent">
|
|
||||||
<div class="py-5">
|
|
||||||
<h3>목록에서 선택해주세요.</h3>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</html>
|
</html>
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
<div class="col-12 card">
|
<div class="col-12 card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="row justify-content-start">
|
<div class="row justify-content-start">
|
||||||
<div class="col-xl-7">
|
<div class="col-7">
|
||||||
<!--검색 form-->
|
<!--검색 form-->
|
||||||
<form method="get" th:action="@{/board/contentList}">
|
<form method="get" th:action="@{/board/contentList}">
|
||||||
<input type="hidden" name="categorySeq" id="categorySeq" th:value="${searchParams.categorySeq}">
|
<input type="hidden" name="categorySeq" id="categorySeq" th:value="${searchParams.categorySeq}">
|
||||||
|
|
@ -138,7 +138,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xl-5">
|
<div class="col-5">
|
||||||
<ul class="nav nav-tabs" id="boardTab" role="tablist">
|
<ul class="nav nav-tabs" id="boardTab" role="tablist">
|
||||||
<li class="nav-item" role="presentation">
|
<li class="nav-item" role="presentation">
|
||||||
<button class="nav-link active" id="contentTab" data-bs-toggle="tab" data-bs-target="#contentDiv" type="button" role="tab">내용</button>
|
<button class="nav-link active" id="contentTab" data-bs-toggle="tab" data-bs-target="#contentDiv" type="button" role="tab">내용</button>
|
||||||
|
|
@ -150,12 +150,12 @@
|
||||||
<div class="tab-content border border-top-0" id="boardDiv">
|
<div class="tab-content border border-top-0" id="boardDiv">
|
||||||
<div class="tab-pane fade show active" id="contentDiv" role="tabpanel" aria-labelledby="contentTab">
|
<div class="tab-pane fade show active" id="contentDiv" role="tabpanel" aria-labelledby="contentTab">
|
||||||
<div class="py-5 text-center">
|
<div class="py-5 text-center">
|
||||||
<h3>목록에서 선택해주세요.</h3>
|
<h3>왼쪽 목록에서 선택해주세요.</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane fade" id="logDiv" role="tabpanel" aria-labelledby="logTab">
|
<div class="tab-pane fade" id="logDiv" role="tabpanel" aria-labelledby="logTab">
|
||||||
<div class="py-5 text-center">
|
<div class="py-5 text-center">
|
||||||
<h3>목록에서 선택해주세요.</h3>
|
<h3>왼쪽 목록에서 선택해주세요.</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
<div class="col-12 card">
|
<div class="col-12 card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="row justify-content-start">
|
<div class="row justify-content-start">
|
||||||
<div class="col-l-7">
|
<div class="col-7">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body row">
|
<div class="card-body row">
|
||||||
<div class="col-10">
|
<div class="col-10">
|
||||||
|
|
@ -71,7 +71,7 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-l-5">
|
<div class="col-5">
|
||||||
<ul class="nav nav-tabs" id="boardTab" role="tablist">
|
<ul class="nav nav-tabs" id="boardTab" role="tablist">
|
||||||
<li class="nav-item" role="presentation">
|
<li class="nav-item" role="presentation">
|
||||||
<button class="nav-link active" id="contentTab" data-bs-toggle="tab" data-bs-target="#contentDiv" type="button" role="tab">내용</button>
|
<button class="nav-link active" id="contentTab" data-bs-toggle="tab" data-bs-target="#contentDiv" type="button" role="tab">내용</button>
|
||||||
|
|
|
||||||
|
|
@ -90,12 +90,12 @@
|
||||||
<div class="tab-content border border-top-0" id="boardDiv">
|
<div class="tab-content border border-top-0" id="boardDiv">
|
||||||
<div class="tab-pane fade show active" id="contentDiv" role="tabpanel" aria-labelledby="contentTab">
|
<div class="tab-pane fade show active" id="contentDiv" role="tabpanel" aria-labelledby="contentTab">
|
||||||
<div class="py-5 text-center">
|
<div class="py-5 text-center">
|
||||||
<h3>목록에서 선택해주세요.</h3>
|
<h3>왼쪽 목록에서 선택해주세요.</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane fade" id="logDiv" role="tabpanel" aria-labelledby="logTab">
|
<div class="tab-pane fade" id="logDiv" role="tabpanel" aria-labelledby="logTab">
|
||||||
<div class="py-5 text-center">
|
<div class="py-5 text-center">
|
||||||
<h3>목록에서 선택해주세요.</h3>
|
<h3>왼쪽 목록에서 선택해주세요.</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5">
|
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5">
|
||||||
<header th:fragment="headerFragment" class="d-flex flex-wrap justify-content-center py-1 px-3 border-bottom">
|
<header th:fragment="headerFragment" class="d-flex flex-wrap justify-content-center py-1 px-3 border-bottom">
|
||||||
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
|
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
|
||||||
<img id="logo" th:src="@{/img/logo.png}" alt="logo" title="logo">
|
<img th:src="@{/img/logo.png}" alt="logo" title="logo">
|
||||||
<!--<span class="fs-4">해양경찰청 파일관리 시스템</span>-->
|
<!--<span class="fs-4">해양경찰청 파일관리 시스템</span>-->
|
||||||
</a>
|
</a>
|
||||||
<ul class="nav nav-pills" sec:authorize="isAuthenticated()">
|
<ul class="nav nav-pills" sec:authorize="isAuthenticated()">
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<html lang="ko"
|
<html lang="ko"
|
||||||
xmlns:th="http://www.thymeleaf.org"
|
xmlns:th="http://www.thymeleaf.org"
|
||||||
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5" xmlns="http://www.w3.org/1999/html">
|
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5" xmlns="http://www.w3.org/1999/html">
|
||||||
<div id="list-group-line" class="mx-3 pt-3" th:fragment="leftMenuFragment">
|
<div class="mx-3 pt-3" th:fragment="leftMenuFragment">
|
||||||
<div sec:authorize="hasRole('ROLE_ADMIN')">
|
<div sec:authorize="hasRole('ROLE_ADMIN')">
|
||||||
<div class="list-group py-2">
|
<div class="list-group py-2">
|
||||||
<!--<a href="/admin/categoryMgt" class="list-group-item list-group-item-action">게시판 분류 관리</a>-->
|
<!--<a href="/admin/categoryMgt" class="list-group-item list-group-item-action">게시판 분류 관리</a>-->
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
<div class="tab-content border border-top-0" id="userContent">
|
<div class="tab-content border border-top-0" id="userContent">
|
||||||
<div class="py-5">
|
<div class="py-5">
|
||||||
<h3>목록에서 선택해주세요.</h3>
|
<h3>왼쪽 목록에서 선택해주세요.</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -51,10 +51,10 @@
|
||||||
<header th:replace="fragments/header :: headerFragment"></header>
|
<header th:replace="fragments/header :: headerFragment"></header>
|
||||||
<div class="h-100" sec:authorize="isAnonymous()" layout:fragment="content"></div>
|
<div class="h-100" sec:authorize="isAnonymous()" layout:fragment="content"></div>
|
||||||
<div sec:authorize="isAuthenticated()" class="row mx-0">
|
<div sec:authorize="isAuthenticated()" class="row mx-0">
|
||||||
<div class="sidebar col-2 d-lg-block d-none centerDiv border-end">
|
<div class="col-2 centerDiv border-end">
|
||||||
<div th:replace="fragments/leftMenu :: leftMenuFragment"></div>
|
<div th:replace="fragments/leftMenu :: leftMenuFragment"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-lg-10 centerDiv">
|
<div class="col-10 centerDiv">
|
||||||
<div layout:fragment="content"></div>
|
<div layout:fragment="content"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -2,29 +2,29 @@
|
||||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org"
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org"
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||||
layout:decorate="~{layout/layout}">
|
layout:decorate="~{layout/layout}">
|
||||||
<th:block layout:fragment="css">
|
<div layout:fragment="content" class="h-100">
|
||||||
<link rel="stylesheet" th:href="@{/css/login/login.css}">
|
<div id="carouselExampleFade" class="carousel slide carousel-fade" data-bs-ride="carousel" style="z-index: 100">
|
||||||
</th:block>
|
<div class="carousel-inner">
|
||||||
<div layout:fragment="content"><img id="img02" th:src="@{/img/img02.jpg}" class="w-100 h-100" alt="배경2">
|
<div class="carousel-item active">
|
||||||
<!-- <div id="carouselExampleFade" class="carousel slide carousel-fade" data-bs-ride="carousel" style="z-index: 100">-->
|
<img th:src="@{/img/img01.jpg}" class="w-100" alt="배경1">
|
||||||
<!-- <div class="carousel-inner">-->
|
</div>
|
||||||
<!-- <div class="carousel-item active">-->
|
<div class="carousel-item">
|
||||||
<!-- <img th:src="@{/img/img01.jpg}" class="w-100" alt="배경1">-->
|
<img th:src="@{/img/img02.jpg}" class="w-100" alt="배경2">
|
||||||
<!-- </div>-->
|
</div>
|
||||||
<!-- <div class="carousel-item">-->
|
<!--<div class="carousel-item">
|
||||||
<!-- <img th:src="@{/img/img02.jpg}" class="w-100" alt="배경2">-->
|
<img th:src="@{/img/img03.jpg}"class="d-block w-100" alt="...">
|
||||||
<!-- </div>-->
|
</div>-->
|
||||||
<!-- </div>-->
|
</div>
|
||||||
<!-- <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="prev">-->
|
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="prev">
|
||||||
<!-- <span class="carousel-control-prev-icon" aria-hidden="true"></span>-->
|
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
||||||
<!-- <span class="visually-hidden">Previous</span>-->
|
<span class="visually-hidden">Previous</span>
|
||||||
<!-- </button>-->
|
</button>
|
||||||
<!-- <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="next">-->
|
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="next">
|
||||||
<!-- <span class="carousel-control-next-icon" aria-hidden="true"></span>-->
|
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
||||||
<!-- <span class="visually-hidden">Next</span>-->
|
<span class="visually-hidden">Next</span>
|
||||||
<!-- </button>-->
|
</button>
|
||||||
<!-- </div>-->
|
</div>
|
||||||
<div id="form-signin" class="form-signin text-center bg-white">
|
<div class="form-signin text-center mt-5 rounded bg-white">
|
||||||
<!-- Security config의 loginPage("url")와 action url과 동일하게 작성-->
|
<!-- Security config의 loginPage("url")와 action url과 동일하게 작성-->
|
||||||
<form action="/user/login" method="post">
|
<form action="/user/login" method="post">
|
||||||
<!-- Spring Security가 적용되면 POST 방식으로 보내는 모든 데이터는 csrf 토큰 값이 필요 -->
|
<!-- Spring Security가 적용되면 POST 방식으로 보내는 모든 데이터는 csrf 토큰 값이 필요 -->
|
||||||
|
|
@ -35,7 +35,7 @@
|
||||||
<!-- 파라미터명을 변경하고 싶을 경우 config class formlogin()에서 .usernameParameter("") 명시 -->
|
<!-- 파라미터명을 변경하고 싶을 경우 config class formlogin()에서 .usernameParameter("") 명시 -->
|
||||||
|
|
||||||
<!--<img class="mb-4" th:src="@{/img/}" alt="" width="72" height="57">-->
|
<!--<img class="mb-4" th:src="@{/img/}" alt="" width="72" height="57">-->
|
||||||
<h1 class="h3 fw-normal mt-2">로그인</h1>
|
<h1 class="h3 mb-3 fw-normal">로그인</h1>
|
||||||
<div class="form-floating py-2">
|
<div class="form-floating py-2">
|
||||||
<input type="text" class="form-control" id="username" name="username" placeholder="아이디">
|
<input type="text" class="form-control" id="username" name="username" placeholder="아이디">
|
||||||
<label for="username">아이디</label>
|
<label for="username">아이디</label>
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
<div class="col-12 card">
|
<div class="col-12 card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="row justify-content-start">
|
<div class="row justify-content-start">
|
||||||
<div class="col-xl-7">
|
<div class="col-7">
|
||||||
<!--검색 form-->
|
<!--검색 form-->
|
||||||
<form method="get" th:action="@{/info/modifyRequestList}">
|
<form method="get" th:action="@{/info/modifyRequestList}">
|
||||||
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
|
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
|
||||||
|
|
@ -149,9 +149,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xl-5">
|
<div class="col-5">
|
||||||
<div class="card" id="requestDetailDiv">
|
<div class="card" id="requestDetailDiv">
|
||||||
<h3 class="p-5">목록에서 선택해주세요.</h3>
|
<h3 class="p-5">왼쪽 목록에서 선택해주세요.</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue