반응형
Scoping
Scoping 은 권한부여와 함께 사용하는 것을 고려해볼만 하다. "이 사용자가 이걸 볼 수 있어?" 라고 체크하는 대신에 scoping 은 아이템 리스트를 현재 사용자와 context 를 적합한 하위 집합으로 필터링 한다. 결과 하위집합은 정상적으로 권한부여가 되고, 각 아이템은 권한부여 검사를 통과해야 한다.
비슷한 기능으로는 Pundit scopes와 Cancan’의 .accessible_by
.를 참고하자.
scope: option
필드는 스코핑을 가능하게 하거나(또는 불가능하게 하기 위해) scope: 옵션을 받는다.
field :products, [Types::Product], scope: true
# Or
field :all_products, [Types::Product], scope: false
list 와 connection 필드에서는, scope: true
가 기본이다. 다른 모든 필드에서는 scope: false
가 기본 설정이다. 이는 scope:
옵션을 통해서 오버라이드 가능하다.
.scope_items(items, ctx) method
타입 클래스는 .scope_items(items, ctx)
를 구현할 수 있다. 이 메서드는 필드가 scope: true
를 가지고 있을 때 호출된다.
field :products, [Types::Product] # `scope: true` 를 기본으로 가지고 있다
위는 다음을 호출한다.
class Types::Product < Types::BaseObject
def self.scope_items(items, context)
# 아이템을 여기서 필터한다
end
end
이 메서드는 현재 context 에 맞는 적당한 아이템을 가진 새로운 리스트를 리턴해야만 한다.
* 해당 글은 번역기 돌리다가 크롬 번역기 말도 안되는 해석에 지친 본인이 나중에 참고할 의도로 대충대충 발로 해석한 것이니 참고용으로만 사용하시길 바랍니다.
* 출처: http://graphql-ruby.org/authorization/scoping.html
반응형
'배움의 즐거움 > 프로그래밍' 카테고리의 다른 글
(32) Graphql-ruby - Mutation의 모든 것 (0) | 2019.01.01 |
---|---|
(31) Graphql-ruby - 필드(fields) 의 모든 것 (0) | 2019.01.01 |
(29) Graphql-ruby - Pundit Integration (0) | 2019.01.01 |
(28) Graphql-ruby - Authorization 의 모든 것 (0) | 2019.01.01 |
(27) Graphql-ruby - Non-Null 타입 (0) | 2019.01.01 |