ks.dgoon.lee log

dboard: 기본 모델 생성


2023/11/01 22:20:29 #django #dev #dboard
Attachments:

게시판, 게시물, 사용자, 댓글 - 이건 매우 뻔하다고 볼 수 있다.

사용자들의 권한관리를 어떻게 할까 잠깐 생각해봤다. 레벨이나 등급 기반으로 할까도 생각했는데 유연성이 떨어질 것 같아서, 사용자에게 usertag 를 여러개 달아주고 그에 맞춰 권한이 부여되도록 해볼까 한다. 해보고 아니다 싶으면 부수고 다시 만들면 되니까 일단 후다닥 해본다.

예를 들어 사용자 A_USER 가 있고 게시판 B_BOARD, C_BOARD 가 있다고 할 때에,

B_BOARD.read_permission_tags = [B_READ, B_WRITE]
B_BOARD.write_permission_tags = [B_WRITE]
C_BOARD.read_permission_tags = [C_READ, C_WRITE]
C_BOARD.write_permission_tags = [C_WRITE]

이런 식으로 기본 설정이 만들어진다.

A_USER.user_tags 안에 B_READ, B_WRITE, C_READ, C_WRITE 등이 들어가게 되면 해당 게시판에 권한을 가지게 되는 것. 어쩌다 보면 READ 권한 없이 WRITE 만 가능하게 된다거나 할 수도 있다. 그리고, 특정 usertag 를 가지고 권한을 넣고 빼는 것도 가능하다. 예를 들면, 2023_12_25_LOGIN 같은 태그를 2023/12/25 에 로그인한 유저들에게 부여하는 이벤트를 하고, 특정 게시판의 R/W 권한을 2023_12_25_LOGIN태그에 준다거나...

... 라고 열심히 썼지만 결국 오라클이나 AWS의 Attribute based access control 에 비하면 뭐 아무것도 아니긴 하다.



이제 만들어볼 것:

  1. 첫 화면에는 게시판 목록이 보인다. 게시판 목록은 superuser 가 어드민에서 관리.
  2. 사용자들은 네이버 로그인(혹은 구글로그인?)을 통해서 가입할 수 있다. 이메일/패스워드는 특별한 관리계정들만...
  3. 사용자들은 가입하면 'normal_user' usertag 를 자동으로 발급받는다. 모든 게시판은 기본적으로 'normal_user' 태그에 read/write 허용.
  4. 각 게시판에 들어가면 글 목록이 보인다. 거기서 글쓰기, 지우기, 고치기, 댓글달기 등을 할 수 있다.
  5. 게시판에 글쓰기는 블로그 만들때 썼던 summernote 를 붙여본다.
  6. CDN 은 digital ocean 에 space 하나 더 만들어서 연결.
  7. dev db 는 sqlite3, production db 는 며칠전 설치한 postgresql 사용.
  8. 도메인은 잠시 고민...


잠깐 더 생각해볼 것:

  • 저렇게 하면 모든 게시판의 Post 가 하나의 테이블에 들어가게 된다. 괜찮나?

댓글 1개

2023/11/01 23:01:09 dgoon
근데 안괜찮으면 어떠한가. 일단 해보자.
⤷ 댓글을 작성해 주세요. 비밀번호는 나중에 댓글을 수정하거나 삭제할 때 필요합니다.