이제 파일들을 정리좀 했으니 다시 기능 구현을 해보자. 게시판에 들어갔는데 누가 작성했는지랑 수정, 삭제 이런거를 하려면 로그인이 되어있어야 하지? 그래서 로그인과 로그아웃을 만들어볼거야.
private boolean isLogined() {
return loginedMember != null;
}
private void doLogin() {
if (isLogined()) {
System.out.println("이미 로그인중");
return;
}
System.out.println("==로그인==");
System.out.print("로그인 아이디 : ");
String loginId = sc.nextLine().trim();
System.out.print("비밀번호 : ");
String password = sc.nextLine().trim();
// 얘 내 회원인가??? -> 사용자가 방금 입력한 로그인 아이디와 일치하는 회원이 나한테 있나?
Member member = getMemberByLoginId(loginId);
if (member == null) {
System.out.println("일치하는 회원이 없어");
return;
}
// 있어. // 내가 알고있는 이 사람의 비번이 지금 얘가 입력한거랑 같아?
if (member.getPassword().equals(password) == false) {
System.out.println("비번이 틀렸어");
return;
}
// 로그인 성공
loginedMember = member; // 로그인 상태 저장
System.out.printf("%s님 로그인 성공!\n", loginedMember.getName());
}
private void doLogout() {
if (!isLogined()) {
System.out.println("이미 로그아웃중");
return;
}
loginedMember = null;
System.out.println("로그아웃 되었습니다");
}
bool 타입인 로그인 판별하는 메서드를 하나 만들자.loginedMember()가 null이면 비어있는거니까 로그인 해도 되고, null이 아니면? 뭔가가 들어있는거니까 로그인이 안되겠지?
그런다음에 doLogin() 메서드를 만들건데, 먼저 isLogined()메서드를 수행해서 로그인중인지 아닌지를 판별해.
그리고 로그인을 할 수 있으면 loginId를 사용자로 부터 받아 password도 받아!
이제 또 판별을 해야돼..getMemberByLoginId 함수를 실행해서 내가 입력한 Id값이랑 회원가입한 Id값이랑같은지 비교를 또 해보는거야.
Id가 뭐 성공했대! 그러면 password도 member에 들어있는 값이랑 비교를 또 해 그래서 getPassword랑 password랑 false가 나오면 다시 하고 같으면 이제 로그인 성공이야!
그런 다음 로그인 상태를 loginedMember변수에 저장 하는거지
private Member getMemberByLoginId(String loginId) {
for (Member member : members) {
if (member.getLoginId().equals(loginId)) {
return member;
}
}
return null;
}
이제 세부적으로 들어가서 글을 작성, 수정, 삭제 할때 로그인이 되어있는 상태에서만 할 수 있도록 구현 해 볼거야.
아까 우리가 isLogined라는 함수를 사용해서 로그인이 되어있는지 안되어있는지 확인 했잖아? 이 함수를 Controller클래스에 옮길거야.
왜냐하면 Article 부분에서도 로그인이 되어있는지 안되어있는지 판별을 해야하니까 Article이랑 Member 컨트롤러의 상위 클래스인 Controller클래스에 저장하면 얘가 다 뿌려 주도록 설계를 해보았어.
switch (actionMethodName) {
case "write":
if (isLogined() == false) {
System.out.println("로그인 필요");
return;
}
doWrite();
break;
그래서 이렇게 doWrite 메서드 수행하기전에 먼저 로그인이 되어있는지 판별 후 진행하는거야!!