230310 : 피드백 받고

어제 업그레이드

내가 작성한 게시물/댓글에 대한 수정 및 삭제 버튼만 표시


1. 어제의 논리에 문제가 있었습니다.

우체국에서는 문제가 없었습니다.

문제는 댓글과 댓글입니다.

<div>
    <a id="update-button" href="#" onclick="updatePost('${title}','${content}','${image}','${id}')" class="tag-cloud-link" style="font-size: 13px; color:black; cursor: pointer; display:none;">수정하기</a>
    <a id="delete-button" onclick="deletePost()" class="tag-cloud-link" style="font-size: 13px; color:black; cursor: pointer; display:none;">삭제하기</a>
</div>
if (writer === nickname) {
  $('#update-button').show();
  $('#delete-button').show();
}

그런 논리인데 댓글과 큰댓글이 for 문을 통하는 게 그리웠어요.

모든 if 문을 살펴본 후 for 문 전체를 살펴보는 동안 닉네임과 작성자가 적어도 하나 이상 일치하면 나타납니다.

근데 또 뜨는건 첫댓글/최다댓글뿐..?

그럼에도 불구하고! 문제가 있는 논리였습니다.

// 로그인 한 사용자의 경우 nickname비교
function getLoggedInUserNickname(callback){
  sendAuthorizedRequest("http://43.200.238.79:8080/users/profiles", "GET", function (response) {
      var nickname = response.nickname;
      callback(nickname);
  });
  }

sendAuthorizedRequest 함수는 비동기식입니다.

sendAuthorizedRequest가 먼저 완료된 다음 적대적인 ajax 함수가 호출되어 제대로 작동하지 않았습니다.

sendAuthorizedRequest 함수를 콜백 변수로 호출한 후

function petboast_detail() {
    const urlParams = new URLSearchParams(window.location.search);
    const id = urlParams.get('id');

    $.ajax({
      url: 'http://url/posts/' + id,
      type: 'GET',
      data: {},
      contentType: "application/json;",
      success: function (response) {

Ajax 내에서 다시 호출할 수 있도록 작성했습니다.

getLoggedInUserNickname(function(nickname) {
  if (writer === nickname) {
    $('#update-button').show();
    $('#delete-button').show();
  }});

그 후 아래와 같은 문제가 발생했습니다.

2. 관리자 로그인 시

로그인한 사용자의 역할이 관리자인 경우

다루지 않은 것입니다.

위의 코드에서

getLoggedInUserNickname 함수 아래

function IsAdmin(callback){
  sendAuthorizedRequest("http://url/users/profiles", "GET", function (response) {
    var isRoleAdmin = response.role === "ROLE_ADMIN";
    callback(isRoleAdmin); // isRoleAdmin 값을 콜백 함수의 인자로 전달
})
}

관리자인지 확인하는 기능을 작성하십시오.

IsAdmin(function(isRoleAdmin) {
  if (isRoleAdmin === true) {
    $('#update-button').show();
    $('#delete-button').show();
  }
});

넣어

https://www.youtube.com/watch?v=tQX5LCtV2GU

그리고 배포된 웹사이트와 함께 녹화된 새로운 비디오.