import { Formio } from "formiojs"; import { RoleSchema } from "../../interfaces"; import { FormSchema } from "../../interfaces/FormSchema"; import { formAccessUser, submissionAccessUser, userForms, userRoles } from "./auth.actions"; import { AUTH } from "./auth.constant"; function transformSubmissionAccess(forms: Record) { return Object.values(forms).reduce( (result, form) => ({ ...result, [form.name]: form.submissionAccess.reduce( (formSubmissionAccess: any, access: any) => ({ ...formSubmissionAccess, [access.type]: access.roles }), {} ) }), {} ); } function transformFormAccess(forms: Record) { return Object.values(forms).reduce( (result, form) => ({ ...result, [form.name]: form.access.reduce( (formAccess: any, access: any) => ({ ...formAccess, [access.type]: access.roles }), {} ) }), {} ); } export async function getAccess(dispatch: any) { const projectUrl = Formio.getProjectUrl(); try { const result: { roles: Record; forms: Record; } = await Formio.makeStaticRequest(`${projectUrl}/access`); const submissionAccess = transformSubmissionAccess(result.forms); const formAccess = transformFormAccess(result.forms); dispatch(submissionAccessUser(AUTH, { submissionAccess })); dispatch(formAccessUser(AUTH, { formAccess })); dispatch(userRoles(AUTH, { roles: result.roles })); dispatch(userForms(AUTH, { forms: result.forms })); } catch (err) {} }