Tutorial

blog.jdl 파일을 프로젝트 내에 생성한다.
vi blog.jdl

entity Blog {
    name String required minlength(3),
    handle String required minlength(2)
}

entity Entry {
    title String required,
    content TextBlob required,
    date Instant required
}

entity Tag {
    name String required minlength(2)
}

relationship ManyToOne {
    Blog{user(login)} to User,
    Entry{blog(name)} to Blog
}

relationship ManyToMany {
    Entry{tag(name)} to Tag{entry}
}

paginate Entry, Tag with infinite-scroll

스크린샷 2019-10-02 오후 5.06.39.png

jhipster import-jdl blog.jdl 명령어로 추가해준 jdl 파일을 import 해준다.

*MySQL 사용시 스키마에 blog, entry, tag 테이블이 생성되어야지만, 정상적으로 작동한다. 테이블이 생성되지 않았을 경우, 500 Internal Server Error 가 발생한다.(스키마를 지우고 새로 만든 후 프로젝트를 실행시킨다)

스크린샷 2019-10-02 오후 8.49.46.png

샘플 데이터가 자동으로 들어가져있는 모습이다. 샘플 데이터는 src -> main -> resources -> config -> liquibase -> fake-data 에 있는 blog.csv (entry, tag 도 마찬가지)이다.

liquibase -> changelog 폴더를 보면, blog, entry, tag에 관한 changelog들이 생성되었음을 볼 수 있다.

master.xml에 각각 새로 생긴 changelog.xml 파일들이 자동으로 include 되어있으므로, 백엔드를 실행시킬때, 해당 테이블이 반영된다.

스크린샷 2019-10-02 오후 8.53.46.png

기본 예제 데이터들을 삭제하고 싶으면, application-dev.yml 파일에서 liquibase의 context 부분에 있는 faker를 지워주면 된다.

스크린샷 2019-10-02 오후 8.55.32.png

changelog.xml(ex. 20191002080548_added_entity_Blog.xml)의 changeSet의 context부분이 faker 이기 때문에 이걸 받아오지 않으면, <loadData>를 할 수 없으므로, 예제 데이터가 사라진다. 단 DB에 기존에 저장된 값들은 지워주어야한다.

스크린샷 2019-10-02 오후 8.58.41.png

기존 데이터를 지우고, 백 엔드를 재시작하면, 데이터가 지워지고, 테이블만 생성된다.

스크린샷 2019-10-02 오후 9.05.02.png

권한 따라 보이는 화면 다르게 하기

Create a new Blog를 눌러 아래와 같이 두 개의 Blog를 만들어준다.

스크린샷 2019-10-02 오후 9.09.03.png

그 후, entities에서 entries로 들어가 create a enw Entry를 클릭해 임의로 작성한다.(admin's blog 1개, user's blog 1개)

스크린샷 2019-10-02 오후 9.12.19.png

여기서 문제점이 하나 발생한다. admin으로 로그인 한 경우 admin 게시물 만, user로 로그인 한 경우 user 게시물 만 보여야하는데, 지금은 admin, user 의 게시물을 둘 다 볼 수 있다.

src -> main -> java -> com.mycompany.myapp -> web.rest -> BlogResource에서 밑줄 친 블로그의 리스트를 가져오는 부분에서 findAll(모든 블로그를 가져오는 것)을 findByUserIsCurrentUser(현재 유저의 것만)로 바꿔준다.

스크린샷 2019-10-02 오후 9.16.52.png

스크린샷 2019-10-02 오후 9.18.26.png

그 후 재실행하면, admin으로 로그인 한 경우 admin 게시물만, user로 로그인 한 경우 user 게시물만 볼 수 있다.

스크린샷 2019-10-02 오후 9.20.19.png

Blog 뿐만 아니라 Entries도 비슷한 방식으로 고쳐준다.(EntryResource)

스크린샷 2019-10-02 오후 10.01.19.png

스크린샷 2019-10-02 오후 10.03.21.png

findBlogUserLoginOrderByDateDesc는 없는 함수이므로 생성해준다.

스크린샷 2019-10-02 오후 10.04.32.png

그럼 EntryRepository에 자동으로 생성된다.
스크린샷 2019-10-02 오후 10.06.23.png

재 실행시, Entries 도 admin 게시물은 admin, user게시물은 user가 접근할 수 있게 고쳐진다.

스크린샷 2019-10-02 오후 10.07.48.png


(질문)

그러나 여전히 문제점이 남아있다.
주소창을 직접 조작할 경우, 권한이 달라도 접속할 수 있기 때문이다.

스크린샷 2019-10-02 오후 10.09.55.png

스크린샷 2019-10-02 오후 10.10.14.png

user name과 current login user을 매치시켜서 일치하는 정보만 열람할 수 있게 해준다.

스크린샷 2019-10-02 오후 10.13.12.png

스크린샷 2019-10-02 오후 10.14.34.png