2017-11-14 12 views
1

Graphcool에 템플릿 graphcool/templates/auth/email-password를 사용하고 있으며 사용자 역할을 관리하는 기능을 추가하고 싶습니다.Graphcool을 사용하여 사용자 역할 관리

type User @model { 
    id: ID! @isUnique 
    createdAt: DateTime! 
    updatedAt: DateTime! 
    email: String! @isUnique 
    password: String! 
    role: UserRole! 
} 

enum UserRole { 
    EDITOR, 
    MODERATOR, 
    ADMIN 
} 

이미 쿼리의 역할을 받아 로컬 저장소에 저장하지만, 사람이 우리가 추가하는 경우는 (프론트 엔드의 UI에 영향을 미치는 변경 할 수있을 것입니다 해요 :

내 정의 스키마입니다 사용 권한, 우리는 서버 측에서 걱정할 필요가 없습니다). 그것을 관리하는 가장 좋은 방법은 무엇입니까?

답변

1

Graphcool 프레임 워크를 사용하고 있습니까?

graphcool.yml에서 권한을 설정해야하는 경우. 나는 다음을 포함합니다 :

graphcool.yml

- operation: User.create 
    authenticated: true 
    query: permissions/User.graphql:adminRole 
- operation: User.read 
    authenticated: true 
    query: permissions/User.graphql:adminRole 
- operation: User.update 
    authenticated: true 
    query: permissions/User.graphql:adminRole 
- operation: User.delete 
    authenticated: true 
    query: permissions/User.graphql:adminRole 

- operation: User.read 
    authenticated: true 
    query: permissions/User.graphql:user 
    fields: 
    - id 
    - name 
    - role 
    - createdAt 
    - updatedAt 
    - email 
    - company 
- operation: User.update 
    authenticated: true 
    query: permissions/User.graphql:user 
    fields: 
    - name 
    - company 

User.graphql

query user($node_id: ID, $user_id: ID!) { 
    SomeUserExists(filter: {AND: [{id: $user_id}, {id: $node_id}]}) 
} 

query adminRole($user_id: ID!) { 
    SomeUserExists(filter: {id: $user_id, role: ADMIN}) 
} 

에게 사용자는 자신의 이름과 회사를 업데이트 할 수 있습니다이 방법을. 그런 다음 ADMIN 사용자는 모든 사람이 읽고 편집 할 수 있습니다. ADMIN 사용자 만 새 사용자를 만들거나 업데이트 할 수 있습니다.

그러면 새로운 사용자를 어떻게 만듭니 까? 내가 여기 이메일 비밀번호 인증에 대한 Graphcool 템플릿에서 FAAS 코드를 사용합니다 :

https://github.com/graphcool/templates/tree/master/auth/email-password

signup.ts 파일이 새 사용자가 가입하실 수있는 방법을 다음 관리자가 당신을 위해 새로운 사용자가 생성됩니다. 가입 기능에서 UserRole을 원하는 것으로 기본 설정할 수 있습니다.

https://github.com/graphcool/templates/blob/master/auth/email-password/src/signup.ts