사용자가 전체 이름을 변경하지 못하도록 방지

확인해 보았는데요. API를 통해 필드를 숨기는 것은 가능하지만, 해당 사용자가 승인되었는지 아닌지를 확인할 수 있는 신뢰할 만한 데이터를 찾을 수 없습니다(설정 페이지 컨텍스트에서) :thinking:

현재까지 작성해 둔 코드는 다음과 같습니다.
죄송한 마음이 들지 않아야 할지 모르겠네요. 여기가 좀 해킹적인(hacky) 방식인 것 같습니다. :smile:

js
<script type="text/discourse-plugin" version="0.8">

const { setting } = require("discourse/lib/computed");

api.modifyClass("controller:preferences/account", {
  pluginId: "hide-name-in-preferences",

  get canEditName() {
    const enables_name = setting("enable_names");

    if (enables_name && this.isCurrentUser && !this.model.staff) {
      if (this.model.name) {
        // 입력 필드만 숨김 (이름은 표시됨)
        this.model.can_edit_name = false;
      } else {
        // 전체 섹션을 숨김
        return false;
      }
    }

    return enables_name;
  },
});
    
</script>
1개의 좋아요