📅2024. 01. 31 38일차
@Autowired
private MemberService memberService;
@RequestMapping("/usr/member/doLogin")
@ResponseBody
public ResultData<Member> doLogin(String loginId, String loginPw) {
if (Ut.isNullOrEmpty(loginId)) {
return ResultData.from("F-1", "아이디를 입력해주세요");
}
if (Ut.isNullOrEmpty(loginPw)) {
return ResultData.from("F-2", "비밀번호를 입력해주세요");
}
Member member = memberService.getMemberByLoginId(loginId);
if (member == null) {
return ResultData.from("F-3", Ut.f("%s(은)는 존재하지 않는 아이디입니다", loginId));
}
if (member.getLoginPw().equals(loginPw) == false) {
return ResultData.from("F-4", Ut.f("비밀번호가 일치하지 않습니다"));
}
httpSession.setAttribute("loginedMemberId", member.getId());
return ResultData.from("S-1", Ut.f("%s님 환영합니다", member.getNickname()));
}
@Autowired
private MemberService memberService;
@RequestMapping("/usr/member/doLogin")
@ResponseBody
public ResultData<Member> doLogin(HttpSession httpSession, String loginId, String loginPw) {
boolean isLogined = false;
if (httpSession.getAttribute("loginedMemberId") != null) {
isLogined = true;
}
if (isLogined) {
return ResultData.from("F-A", "이미 로그인 상태입니다");
}
if (Ut.isNullOrEmpty(loginId)) {
return ResultData.from("F-1", "아이디를 입력해주세요");
}
if (Ut.isNullOrEmpty(loginPw)) {
return ResultData.from("F-2", "비밀번호를 입력해주세요");
}
Member member = memberService.getMemberByLoginId(loginId);
if (member == null) {
return ResultData.from("F-3", Ut.f("%s(은)는 존재하지 않는 아이디입니다", loginId));
}
if (member.getLoginPw().equals(loginPw) == false) {
return ResultData.from("F-4", Ut.f("비밀번호가 일치하지 않습니다"));
}
httpSession.setAttribute("loginedMemberId", member.getId());
return ResultData.from("S-1", Ut.f("%s님 환영합니다", member.getNickname()));
}
@RequestMapping("/usr/member/doLogout")
@ResponseBody
public ResultData doLogout(HttpSession httpSession) {
boolean isLogined = false;
if (httpSession.getAttribute("loginedMemberId") != null) {
isLogined = true;
}
if (isLogined == false) {
return ResultData.from("F-A", "이미 로그아웃 상태입니다");
}
httpSession.removeAttribute("loginedMemberId");
return ResultData.from("S-1", Ut.f("로그아웃 되었습니다"));
}
수정, 삭제가 자신의 게시글이 아닌데도 수정, 삭제된다. 이건 큰 문제점 어떻게 해결할까?? 우린 로그인 정보를 sesstion에 담았고 게시글 작성할 때 memberId를 저장했다. 그럼 sesstion에서 loginId 가져오고 게시글 작성 시 저장했던 memberId와 비교해서 맞으면 수정, 삭제 가능하게 하고, 틀리면 return하면 될 듯???
권한 체크를 어디 시점에서 할까?? 글이 존재하지 않습니다. 앞에??? 아님 뒤에?? 애초에 게시글이 존재하지 않으면 물어볼 필요도 없지 않을까?? 비교대상이 없기 때문에 그럼 게시글 존재 여부 뒤에 붙여야겠다.
@RequestMapping("/usr/article/doModify")
@ResponseBody
public ResultData<Integer> doModify(HttpSession httpSession, int id, String title, String body) {
boolean isLogined = false;
int loginedMemberId = 0;
if (httpSession.getAttribute("loginedMemberId") != null) {
isLogined = true;
loginedMemberId = (int) httpSession.getAttribute("loginedMemberId");
}
if (isLogined == false) {
return ResultData.from("F-A", "로그인 후 이용해주세요");
}
Article article = articleService.getArticle(id);
if (article == null) {
return ResultData.from("F-1", Ut.f("%d번 글은 존재하지 않습니다", id), id);
}
if (article.getMemberId() != loginedMemberId) {
return ResultData.from("F-2", Ut.f("%d번 글에 대한 권한이 없습니다", id), id);
}
articleService.modifyArticle(id, title, body);
return ResultData.from("S-1", Ut.f("%d번 글을 수정했습니다", id), id);
}
@RequestMapping("/usr/article/doDelete")
@ResponseBody
public ResultData<Integer> doDelete(HttpSession httpSession, int id) {
boolean isLogined = false;
int loginedMemberId = 0;
if (httpSession.getAttribute("loginedMemberId") != null) {
isLogined = true;
loginedMemberId = (int) httpSession.getAttribute("loginedMemberId");
}
if (isLogined == false) {
return ResultData.from("F-A", "로그인 후 이용해주세요");
}
Article article = articleService.getArticle(id);
if (article == null) {
return ResultData.from("F-1", Ut.f("%d번 글은 존재하지 않습니다", id), id);
}
if (article.getMemberId() != loginedMemberId) {
return ResultData.from("F-2", Ut.f("%d번 글에 대한 권한이 없습니다", id), id);
}
articleService.deleteArticle(id);
return ResultData.from("S-1", Ut.f("%d번 글이 삭제 되었습니다", id), id);
}
}