mirror of
https://fast.feibisi.com/https://github.com/parcelvoy/platform.git
synced 2025-09-01 12:26:08 +08:00
feat: add new publisher
permission level
This commit is contained in:
parent
badcc467b6
commit
448d4508aa
5 changed files with 25 additions and 13 deletions
|
@ -181,9 +181,13 @@ router.post('/:journeyId/version', async ctx => {
|
|||
ctx.body = await duplicateJourney(ctx.state.journey!, true)
|
||||
})
|
||||
|
||||
router.post('/:journeyId/publish', async ctx => {
|
||||
ctx.body = await publishJourney(ctx.state.journey!)
|
||||
})
|
||||
router.post(
|
||||
'/:journeyId/publish',
|
||||
projectRoleMiddleware('publisher'),
|
||||
async ctx => {
|
||||
ctx.body = await publishJourney(ctx.state.journey!)
|
||||
},
|
||||
)
|
||||
|
||||
router.get('/:journeyId/entrances', async ctx => {
|
||||
const params = extractQueryParams(ctx.query, searchParamsSchema)
|
||||
|
|
|
@ -18,6 +18,7 @@ export type ProjectParams = Omit<Project, ModelParams | 'deleted_at' | 'organiza
|
|||
export const projectRoles = [
|
||||
'support',
|
||||
'editor',
|
||||
'publisher',
|
||||
'admin',
|
||||
] as const
|
||||
|
||||
|
|
|
@ -162,6 +162,7 @@ export type OrganizationUpdateParams = Omit<Organization, 'id' | 'auth' | AuditF
|
|||
export const projectRoles = [
|
||||
'support',
|
||||
'editor',
|
||||
'publisher',
|
||||
'admin',
|
||||
] as const
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ import { Outlet } from 'react-router'
|
|||
import { NavigationTabs } from '../../ui/Tabs'
|
||||
import { useContext, useEffect, useState } from 'react'
|
||||
import { CampaignContext, LocaleContext, LocaleSelection, ProjectContext } from '../../contexts'
|
||||
import { languageName } from '../../utils'
|
||||
import { checkProjectRole, languageName } from '../../utils'
|
||||
import { Campaign, LocaleOption, Template } from '../../types'
|
||||
import api from '../../api'
|
||||
import { CampaignTag } from './Campaigns'
|
||||
|
@ -152,7 +152,11 @@ export default function CampaignDetail() {
|
|||
progress={progress}
|
||||
send_at={send_at}
|
||||
/>}
|
||||
actions={campaign.type !== 'trigger' && action[state]}
|
||||
actions={
|
||||
checkProjectRole('publisher', project.role) && (
|
||||
campaign.type !== 'trigger' && action[state]
|
||||
)
|
||||
}
|
||||
fullscreen={true}>
|
||||
<NavigationTabs tabs={tabs} />
|
||||
<LocaleContext.Provider value={[locale, setLocale]}>
|
||||
|
|
|
@ -30,7 +30,7 @@ import ReactFlow, {
|
|||
useReactFlow,
|
||||
} from 'reactflow'
|
||||
import { JourneyContext, ProjectContext } from '../../contexts'
|
||||
import { createComparator, createUuid } from '../../utils'
|
||||
import { checkProjectRole, createComparator, createUuid } from '../../utils'
|
||||
import * as journeySteps from './steps/index'
|
||||
import clsx from 'clsx'
|
||||
import api from '../../api'
|
||||
|
@ -704,13 +704,15 @@ export default function JourneyEditor() {
|
|||
>
|
||||
{t('edit_details')}
|
||||
</Button>}
|
||||
<Button
|
||||
onClick={publishJourney}
|
||||
isLoading={saving}
|
||||
variant="secondary"
|
||||
>
|
||||
{t('publish')}
|
||||
</Button>
|
||||
{checkProjectRole('publisher', project.role) && (
|
||||
<Button
|
||||
onClick={publishJourney}
|
||||
isLoading={saving}
|
||||
variant="secondary"
|
||||
>
|
||||
{t('publish')}
|
||||
</Button>
|
||||
)}
|
||||
<Button
|
||||
onClick={saveSteps}
|
||||
isLoading={saving}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue