Попытка создать HOC с функцией карри, но также должна принимать реквизиты данных GraphQL (реагировать, apollo, GraphQL, перекомпоновывать)
Я использую React, перекомпоновать и apollo GraphQL
Я пытаюсь создать авторизацию пользовательского интерфейса (также будет присутствовать бэкэнд-аутентификация), чтобы позволить пользователям с определенной ролью заходить на страницы, на которые заходили только они. Я ухожу из статьи, которая мне показалась полезной.
В статье он использует статический реквизит. Мне нужно передать реквизиты из запроса данных, который я составляю вместе с моим компонентом авторизации в файле index.js.
В настоящее время мой код выглядит следующим образом:
import React from 'react'
import { Redirect } from 'react-router-dom'
const Authorization = ({ props }) => allowAccess => MyComponent => {
const { viewer: { role } } = props.data
return (
( allowAccess.include(role) ) ? <MyComponent /> : <Redirect to="/" />
)
}
export default Authorization
В другом файле я создал переменные, которые содержат роли, которым разрешен доступ к страницам, так же, как и в статье, упомянутой выше:
export const admin = ['owner', 'admin']
export const user = ['owner', 'admin', 'user']
Затем я импортирую этот файл и мой Auth в файл, который я определяю мои маршруты. Я делаю то же самое, что и автор в этой статье, и определяю роли, которые будут переносить компонент маршрута, основываясь на том, кому разрешено просматривать страницу:
const Admin = Authorization(admin)
const User = Authorization(user)
Я думаю, что это происходит, когда я пытаюсь найти подпорку graphql в массиве ролей пользователей, которые я передаю, а не в Авторизации.