admin: 로그인 후 메인화면 정상 진입 및 관리자 관리 권한 등록 드롭다운 추가
This commit is contained in:
parent
3902af57e3
commit
9370aaa1df
|
|
@ -0,0 +1,26 @@
|
|||
package com.bpgroup.poc.admin.web.common;
|
||||
|
||||
import com.bpgroup.poc.admin.web.common.dropdown.RoleCombo;
|
||||
import com.querydsl.core.types.Projections;
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.bpgroup.poc.admin.domain.role.entity.QRole.role;
|
||||
|
||||
@Repository
|
||||
@RequiredArgsConstructor
|
||||
public class CommonQueryRepository {
|
||||
|
||||
private final JPAQueryFactory queryFactory;
|
||||
|
||||
public List<RoleCombo> findRoles() {
|
||||
return queryFactory.select(Projections.fields(RoleCombo.class,
|
||||
role.id,
|
||||
role.name))
|
||||
.from(role)
|
||||
.fetch();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
package com.bpgroup.poc.admin.web.common;
|
||||
|
||||
import com.bpgroup.poc.admin.web.common.dropdown.RoleCombo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class CommonWebService {
|
||||
|
||||
private final CommonQueryRepository queryRepository;
|
||||
|
||||
public List<RoleCombo> findRoleForCombo() {
|
||||
return queryRepository.findRoles();
|
||||
};
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
package com.bpgroup.poc.admin.web.common.dropdown;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public class RoleCombo {
|
||||
private Long id;
|
||||
private String name;
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.bpgroup.poc.admin.web.common;
|
||||
package com.bpgroup.poc.admin.web.common.reqres;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
|
|
@ -1,15 +1,23 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.management;
|
||||
|
||||
import com.bpgroup.poc.admin.web.common.CommonWebService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
@Controller
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/admin/management")
|
||||
public class AdminManagementController {
|
||||
|
||||
private final CommonWebService commonWebService;
|
||||
|
||||
|
||||
@GetMapping
|
||||
public String adminManagementPage() {
|
||||
public String adminManagementPage(Model model) {
|
||||
model.addAttribute("roles", commonWebService.findRoleForCombo());
|
||||
return "main/admin/management/list";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,11 +18,15 @@ public class AdminManagementQueryRepository {
|
|||
private final JPAQueryFactory queryFactory;
|
||||
|
||||
public List<AdminFind.Response> findAll() {
|
||||
return queryFactory.select(Projections.fields(AdminFind.Response.class,
|
||||
return queryFactory.select(
|
||||
Projections.fields(
|
||||
AdminFind.Response.class,
|
||||
admin.id,
|
||||
admin.loginId,
|
||||
admin.email,
|
||||
admin.name))
|
||||
admin.name
|
||||
)
|
||||
)
|
||||
.from(admin)
|
||||
.fetch();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.management.reqres;
|
||||
|
||||
import com.bpgroup.poc.admin.web.common.CommonResponse;
|
||||
import com.bpgroup.poc.admin.web.common.reqres.CommonResponse;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Builder;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.management.reqres;
|
||||
|
||||
import com.bpgroup.poc.admin.web.common.CommonResponse;
|
||||
import com.bpgroup.poc.admin.web.common.reqres.CommonResponse;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.management.reqres;
|
||||
|
||||
import com.bpgroup.poc.admin.web.common.CommonResponse;
|
||||
import com.bpgroup.poc.admin.web.common.reqres.CommonResponse;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Builder;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.menu.reqres;
|
||||
|
||||
import com.bpgroup.poc.admin.web.common.CommonResponse;
|
||||
import com.bpgroup.poc.admin.web.common.reqres.CommonResponse;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Builder;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.menu.reqres;
|
||||
|
||||
import com.bpgroup.poc.admin.web.common.CommonResponse;
|
||||
import com.bpgroup.poc.admin.web.common.reqres.CommonResponse;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.menu.reqres;
|
||||
|
||||
import com.bpgroup.poc.admin.web.common.CommonResponse;
|
||||
import com.bpgroup.poc.admin.web.common.reqres.CommonResponse;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Builder;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.menu.reqres;
|
||||
|
||||
import com.bpgroup.poc.admin.web.common.CommonResponse;
|
||||
import com.bpgroup.poc.admin.web.common.reqres.CommonResponse;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.menu.reqres;
|
||||
|
||||
import com.bpgroup.poc.admin.web.common.CommonResponse;
|
||||
import com.bpgroup.poc.admin.web.common.reqres.CommonResponse;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Builder;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.menu.reqres;
|
||||
|
||||
import com.bpgroup.poc.admin.web.common.CommonResponse;
|
||||
import com.bpgroup.poc.admin.web.common.reqres.CommonResponse;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Builder;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.role.reqres;
|
||||
|
||||
import com.bpgroup.poc.admin.domain.role.RoleMenuType;
|
||||
import com.bpgroup.poc.admin.web.common.CommonResponse;
|
||||
import com.bpgroup.poc.admin.web.common.reqres.CommonResponse;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import lombok.Builder;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.role.reqres;
|
||||
|
||||
import com.bpgroup.poc.admin.web.common.CommonResponse;
|
||||
import com.bpgroup.poc.admin.web.common.reqres.CommonResponse;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.role.reqres;
|
||||
|
||||
import com.bpgroup.poc.admin.web.common.CommonResponse;
|
||||
import com.bpgroup.poc.admin.web.common.reqres.CommonResponse;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.role.reqres;
|
||||
|
||||
import com.bpgroup.poc.admin.web.common.CommonResponse;
|
||||
import com.bpgroup.poc.admin.web.common.reqres.CommonResponse;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Builder;
|
||||
|
|
|
|||
|
|
@ -1,29 +1,34 @@
|
|||
INSERT INTO `role` (`name`, `description`, `create_date`, `update_date`)
|
||||
VALUES ('SUPER_ADMIN', '최고 관리자', CURDATE(), CURDATE()),
|
||||
('ADMIN', '관리자', CURDATE(), CURDATE()),
|
||||
('CLIENT', '고객', CURDATE(), CURDATE());
|
||||
('CLIENT', '고객', CURDATE(), CURDATE())
|
||||
;
|
||||
|
||||
INSERT INTO `admin` (`login_id`, `password`, `email`, `name`, `role_id`, `create_date`, `update_date`)
|
||||
VALUES ('admin', '$2a$10$g6UOrQ/OS8o5r5CJk7C5juVFaItQ62U3EIn8zLPzkFplM3wVLvKZ2', 'admin@admin.com', '홍길동', 1, CURDATE(), CURDATE());
|
||||
VALUES ('admin', '$2a$10$g6UOrQ/OS8o5r5CJk7C5juVFaItQ62U3EIn8zLPzkFplM3wVLvKZ2', 'admin@admin.com', '홍길동', 1, CURDATE(),
|
||||
CURDATE());
|
||||
|
||||
INSERT INTO `menu_group` (`uri`, `name`, `sort_order`, `create_date`, `update_date`)
|
||||
VALUES ('/admin', '관리자 관리', 2, CURDATE(), CURDATE()),
|
||||
('/settings', '설정', 3, CURDATE(), CURDATE()),
|
||||
('/temp', '임시', 1, CURDATE(), CURDATE());
|
||||
|
||||
INSERT INTO `menu` (`uri`, `name`, `sort_order`, `menu_group_id`, `create_date`, `update_date`)
|
||||
VALUES ('/admin/management', '관리자 관리', 1, 1, CURDATE(), CURDATE()),
|
||||
('/admin/role', '권한 관리', 2, 1, CURDATE(), CURDATE())
|
||||
VALUES ('/main', '메인', 1, CURDATE(), CURDATE()),
|
||||
('/admin', '관리자 관리', 2, CURDATE(), CURDATE()),
|
||||
('/settings', '설정', 3, CURDATE(), CURDATE())
|
||||
;
|
||||
|
||||
INSERT INTO `menu` (`uri`, `name`, `sort_order`, `menu_group_id`, `create_date`, `update_date`)
|
||||
VALUES ('/settings/code', '코드 관리', 1, 2, CURDATE(), CURDATE())
|
||||
VALUES ('/main', '메인화면', 1, 1, CURDATE(), CURDATE()),
|
||||
('/admin/management', '관리자 관리', 2, 2, CURDATE(), CURDATE()),
|
||||
('/admin/role', '권한 관리', 3, 2, CURDATE(), CURDATE())
|
||||
;
|
||||
|
||||
INSERT INTO `menu` (`uri`, `name`, `sort_order`, `menu_group_id`, `create_date`, `update_date`)
|
||||
VALUES ('/settings/code', '코드 관리', 1, 3, CURDATE(), CURDATE())
|
||||
;
|
||||
|
||||
INSERT INTO `role_menu` (`role_id`, `menu_id`, `create_date`, `update_date`)
|
||||
VALUES ('1', '1', CURDATE(), CURDATE()),
|
||||
('1', '2', CURDATE(), CURDATE()),
|
||||
('1', '3', CURDATE(), CURDATE())
|
||||
('1', '3', CURDATE(), CURDATE()),
|
||||
('1', '4', CURDATE(), CURDATE())
|
||||
;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -10,11 +10,16 @@
|
|||
<label for="iptCreatePassword">비밀번호: </label><input type="password" id="iptCreatePassword" name="password">
|
||||
<label for="iptCreateEmail">이메일: </label><input type="text" id="iptCreateEmail" name="email">
|
||||
<label for="iptCreateNAme">이름: </label><input type="text" id="iptCreateNAme" name="name">
|
||||
<button type="button" id="btnCreate" class="btn_confirm" data-bs-dismiss="modal">등록</button>
|
||||
<button type="button" id="btnCheckDuplication" class="btn_confirm" data-bs-dismiss="modal">아이디 중복체크</button>
|
||||
<label for="selCreateRole">권한: </label>
|
||||
<select id="selCreateRole" class="table_select_box">
|
||||
<option value="">선택</option>
|
||||
<option th:each="role : ${roles}" th:value="${role.getId()}" th:text="${role.getName()}"></option>
|
||||
</select>
|
||||
<button type="button" id="btnCreate" class="btn_blue posi_right" data-bs-dismiss="modal">등록</button>
|
||||
<button type="button" id="btnCheckDuplication" class="btn_blue posi_right" data-bs-dismiss="modal">중복체크</button>
|
||||
</div>
|
||||
|
||||
<h4>관리자 조회</h4>
|
||||
<h2>관리자 조회</h2>
|
||||
<div class="tb_wrapper">
|
||||
<label for="selAdmin">관리자: </label>
|
||||
<select id="selAdmin" class="table_select_box">
|
||||
|
|
@ -23,17 +28,23 @@
|
|||
<button type="button" id="btnFindAll" class="btn_confirm" data-bs-dismiss="modal">조회</button>
|
||||
</div>
|
||||
|
||||
<h4>관리자 수정</h4>
|
||||
<h2>관리자 수정</h2>
|
||||
<div class="tb_wrapper">
|
||||
<input type="hidden" id="iptUpdateId" name="id">
|
||||
<label for="iptUpdateLoginId">아이디: </label><input type="text" id="iptUpdateLoginId" name="loginId" readonly>
|
||||
<label for="iptUpdatePassword">비밀번호: </label><input type="password" id="iptUpdatePassword" name="password">
|
||||
<label for="iptUpdateEmail">이메일: </label><input type="text" id="iptUpdateEmail" name="email">
|
||||
<label for="iptUpdateName">이름: </label><input type="text" id="iptUpdateName" name="name">
|
||||
<label for="selUpdateRole">권한: </label>
|
||||
<select id="selUpdateRole" class="table_select_box">
|
||||
<option value="">선택</option>
|
||||
<option th:each="role : ${roles}" th:value="${role.getId()}" th:text="${role.getName()}"></option>
|
||||
</select>
|
||||
|
||||
<button type="button" id="btnUpdate" class="btn_confirm" data-bs-dismiss="modal">수정</button>
|
||||
</div>
|
||||
|
||||
<h4>관리자 삭제</h4>
|
||||
<h2>관리자 삭제</h2>
|
||||
<div class="tb_wrapper">
|
||||
<input type="hidden" id="iptDeleteId" name="id">
|
||||
<label for="iptUpdateLoginId">아이디: </label><input type="text" id="iptDeleteLoginId" name="loginId" readonly>
|
||||
|
|
@ -85,7 +96,8 @@
|
|||
loginId: document.getElementById('iptCreateLoginId').value,
|
||||
password: document.getElementById('iptCreatePassword').value,
|
||||
email: document.getElementById('iptCreateEmail').value,
|
||||
name: document.getElementById('iptCreateEmail').value
|
||||
name: document.getElementById('iptCreateEmail').value,
|
||||
roleId: document.getElementById('selCreateRole').value
|
||||
};
|
||||
const requestUri = /*[[@{/admin/management/create}]]*/ '';
|
||||
|
||||
|
|
@ -133,14 +145,16 @@
|
|||
id: document.getElementById('iptUpdateId').value,
|
||||
password: document.getElementById('iptUpdatePassword').value,
|
||||
email: document.getElementById('iptUpdateEmail').value,
|
||||
name: document.getElementById('iptUpdateName').value
|
||||
name: document.getElementById('iptUpdateName').value,
|
||||
roleId: document.getElementById('selUpdateRole').value
|
||||
};
|
||||
const requestUri = /*[[@{/admin/management/update}]]*/ '';
|
||||
|
||||
Reqhelper.reqPostJson(requestUri, data, () => {
|
||||
PageHelper.showAlertModal({title: '수정 완료', message: '수정이 완료되었습니다.'});
|
||||
}, () => {
|
||||
PageHelper.showErrorModal('수정에 실패했습니다.');
|
||||
// PageHelper.showErrorModal('수정에 실패했습니다.');
|
||||
alert('수정에 실패했습니다.');
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue