Self-hosted multi-platform broadcast newsroom for activist collectives: publishing pipeline with group approval and DST-proof scheduling, TweetDeck-style column wall with hostile-content-safe rendering, live control room with Auto Director, bridged chat governance with polls and quorum, distributed sandboxed transcode workers, encrypted content-addressed archive, monthly analytics. MIT licensed. See README.md and docs/.
90 lines
3.6 KiB
PL/PgSQL
90 lines
3.6 KiB
PL/PgSQL
-- 002: RBAC seed — 37 permissions across 10 roles
|
|
-- publication.delete is a legacy seed (including Publisher). Deprecated for moderation;
|
|
-- future hide/delete routes must use dedicated moderation permissions from 011.
|
|
BEGIN;
|
|
|
|
INSERT INTO role_permissions (role, permission)
|
|
SELECT 'Owner', p FROM unnest(ARRAY[
|
|
'workspace.view','workspace.settings','workspace.members.manage',
|
|
'connection.view','connection.manage','credential.manage',
|
|
'draft.view','draft.create','draft.edit','approval.request','approval.grant',
|
|
'publication.publish','publication.schedule','publication.delete',
|
|
'media.view','media.manage','inbox.view','inbox.reply','stream.view',
|
|
'analytics.view','audit.view',
|
|
'virtualchannel.view','virtualchannel.create','virtualchannel.edit',
|
|
'director.view','director.take','director.override_auto','director.change_layout','director.lock_program',
|
|
'streamsource.manage','streamoutput.manage',
|
|
'livestream.view','livestream.manage',
|
|
'livechat.view','livechat.send','livechat.moderate'
|
|
]) AS p
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
INSERT INTO role_permissions (role, permission)
|
|
SELECT 'Admin', p FROM unnest(ARRAY[
|
|
'workspace.view','workspace.settings','workspace.members.manage',
|
|
'connection.view','connection.manage','credential.manage',
|
|
'draft.view','draft.create','draft.edit','approval.request','approval.grant',
|
|
'publication.publish','publication.schedule','publication.delete',
|
|
'media.view','media.manage','inbox.view','inbox.reply','stream.view',
|
|
'analytics.view','audit.view',
|
|
'virtualchannel.view','director.view','livestream.view','livechat.view'
|
|
]) AS p
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
INSERT INTO role_permissions (role, permission)
|
|
SELECT 'Publisher', p FROM unnest(ARRAY[
|
|
'workspace.view','connection.view','draft.view','draft.create','draft.edit',
|
|
'approval.request','publication.publish','publication.schedule','publication.delete',
|
|
'media.view','media.manage','inbox.view','inbox.reply','stream.view','analytics.view'
|
|
]) AS p
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
INSERT INTO role_permissions (role, permission)
|
|
SELECT 'Editor', p FROM unnest(ARRAY[
|
|
'workspace.view','connection.view','draft.view','draft.create','draft.edit',
|
|
'media.view','media.manage','inbox.view','inbox.reply','stream.view'
|
|
]) AS p
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
INSERT INTO role_permissions (role, permission)
|
|
SELECT 'Approver', p FROM unnest(ARRAY[
|
|
'workspace.view','draft.view','approval.grant','analytics.view','audit.view'
|
|
]) AS p
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
INSERT INTO role_permissions (role, permission)
|
|
SELECT 'Analyst', p FROM unnest(ARRAY[
|
|
'workspace.view','analytics.view','stream.view','audit.view'
|
|
]) AS p
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
INSERT INTO role_permissions (role, permission)
|
|
SELECT 'Moderator', p FROM unnest(ARRAY[
|
|
'workspace.view','inbox.view','inbox.reply',
|
|
'livechat.view','livechat.send','livechat.moderate'
|
|
]) AS p
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
INSERT INTO role_permissions (role, permission)
|
|
SELECT 'VideoPublisher', p FROM unnest(ARRAY[
|
|
'workspace.view','draft.view','draft.create','draft.edit',
|
|
'publication.publish','publication.schedule','media.view','media.manage'
|
|
]) AS p
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
INSERT INTO role_permissions (role, permission)
|
|
SELECT 'StreamOperator', p FROM unnest(ARRAY[
|
|
'workspace.view','livestream.view','livestream.manage','stream.view'
|
|
]) AS p
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
INSERT INTO role_permissions (role, permission)
|
|
SELECT 'BroadcastOperator', p FROM unnest(ARRAY[
|
|
'workspace.view','virtualchannel.view',
|
|
'director.view','director.take','director.override_auto','director.change_layout','director.lock_program',
|
|
'streamsource.manage','livestream.view',
|
|
'livechat.view','livechat.send','livechat.moderate'
|
|
]) AS p
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
COMMIT;
|