"""Roles. Ideally this will become a datastore one day instead of a constants file. """ from pdp import config A360_ACCOUNT_ADMIN = "account_admin" A360_ACCOUNT_EDIT = "account_edit" A360_CONTRACT_ADMIN = "contract_admin" A360_CONTRACT_VIEWER = "contract_viewer" ABACUS_TRANSFER_VIEWER = "transfer_viewer" ABACUS_TRANSFER_CREATOR = "transfer_creator" ABACUS_TRANSFER_OPERATOR = "transfer_operator" AUDIENCE_DEVELOPMENT_ADMIN = "audience_development_admin" AUDIENCE_DEVELOPMENT_ANALYST = "audience_development_analyst" AUDIENCE_DEVELOPMENT_AUDIENCE_MANAGER = "audience_development_audience_manager" AUDIENCE_DEVELOPMENT_CLIENT = "audience_development_client" FANSIFTER_CAN_VIEW_FAN_DATA = "fansifter_can_view_fan_data" FANSIFTER_CAN_CREATE_AD_REPORTS = "fansifter_can_create_ad_reports" FANSIFTER_CAN_SHARE_AD_CAMPAIGN_AUDIENCES = "fansifter_can_share_ad_campaign_audiences" FANSIFTER_CAN_CONNECT_AD_ACCOUNTS = "fansifter_can_connect_ad_accounts" FANSIFTER_CAN_VIEW_EMAIL_CAMPAIGNS = "fansifter_can_view_email_campaigns" FANSIFTER_CAN_CREATE_EMAIL_CAMPAIGNS = "fansifter_can_create_email_campaigns" FANSIFTER_CAN_VIEW_SMS_CAMPAIGNS = "fansifter_can_view_sms_campaigns" FANSIFTER_CAN_CREATE_SMS_CAMPAIGNS = "fansifter_can_create_sms_campaigns" CONTENT_NR_CONTRIBUTION_CAN_VIEW = "content_nr_contribution_can_view" CONTENT_NR_CONTRIBUTION_CAN_CREATE = "content_nr_contribution_can_create" CONTENT_NR_CONTRIBUTION_CAN_MANAGE = "content_nr_contribution_can_manage" CONTENT_NR_CONTRIBUTION_CAN_DELETE = "content_nr_contribution_can_delete" CONTENT_NR_OWNERSHIP_SR_CAN_VIEW = "content_nr_ownership_sr_can_view" CONTENT_NR_OWNERSHIP_SR_CAN_CREATE = "content_nr_ownership_sr_can_create" CONTENT_NR_OWNERSHIP_SR_CAN_MANAGE = "content_nr_ownership_sr_can_manage" CONTENT_NR_OWNERSHIP_SR_CAN_DELETE = "content_nr_ownership_sr_can_delete" CONTENT_MODERATION_TOOL_CAN_MANAGE = "content_moderation_tool_can_manage" CONTENT_CAN_REVIEW_DIGITAL_AUDIO = "content_can_review_digital_audio" SEAT_CAN_ADMINISTER_USERS = "seat_can_administer_users" SONGWHIP_READ = "songwhip_read" CONTENT_CCM_DIGITAL_AUDIO_CAN_BULK_CREATE = "content_ccm_digital_audio_can_bulk_create" AI_CAN_APOLLO_MCP_PILOT = "ai_can_apollo_mcp_pilot" # If you are adding a new role to cerbos # you should also add it here to ensure # you can assign identities the new role ROLES_SUPPORTED = ( ( A360_ACCOUNT_ADMIN, A360_ACCOUNT_EDIT, A360_CONTRACT_ADMIN, A360_CONTRACT_VIEWER, ABACUS_TRANSFER_VIEWER, ABACUS_TRANSFER_CREATOR, ABACUS_TRANSFER_OPERATOR, AUDIENCE_DEVELOPMENT_ADMIN, AUDIENCE_DEVELOPMENT_ANALYST, AUDIENCE_DEVELOPMENT_AUDIENCE_MANAGER, AUDIENCE_DEVELOPMENT_CLIENT, CONTENT_CAN_REVIEW_DIGITAL_AUDIO, CONTENT_MODERATION_TOOL_CAN_MANAGE, CONTENT_NR_CONTRIBUTION_CAN_VIEW, CONTENT_NR_CONTRIBUTION_CAN_CREATE, CONTENT_NR_CONTRIBUTION_CAN_MANAGE, CONTENT_NR_CONTRIBUTION_CAN_DELETE, CONTENT_NR_OWNERSHIP_SR_CAN_VIEW, CONTENT_NR_OWNERSHIP_SR_CAN_CREATE, CONTENT_NR_OWNERSHIP_SR_CAN_MANAGE, CONTENT_NR_OWNERSHIP_SR_CAN_DELETE, FANSIFTER_CAN_VIEW_FAN_DATA, FANSIFTER_CAN_CREATE_AD_REPORTS, FANSIFTER_CAN_SHARE_AD_CAMPAIGN_AUDIENCES, FANSIFTER_CAN_CONNECT_AD_ACCOUNTS, FANSIFTER_CAN_VIEW_EMAIL_CAMPAIGNS, FANSIFTER_CAN_CREATE_EMAIL_CAMPAIGNS, FANSIFTER_CAN_VIEW_SMS_CAMPAIGNS, FANSIFTER_CAN_CREATE_SMS_CAMPAIGNS, SEAT_CAN_ADMINISTER_USERS, SONGWHIP_READ, CONTENT_CCM_DIGITAL_AUDIO_CAN_BULK_CREATE, AI_CAN_APOLLO_MCP_PILOT, ) if config.ENVIRONMENT == "prod" else ( A360_ACCOUNT_ADMIN, A360_ACCOUNT_EDIT, A360_CONTRACT_ADMIN, A360_CONTRACT_VIEWER, ABACUS_TRANSFER_VIEWER, ABACUS_TRANSFER_CREATOR, ABACUS_TRANSFER_OPERATOR, AUDIENCE_DEVELOPMENT_ADMIN, AUDIENCE_DEVELOPMENT_ANALYST, AUDIENCE_DEVELOPMENT_AUDIENCE_MANAGER, AUDIENCE_DEVELOPMENT_CLIENT, CONTENT_CAN_REVIEW_DIGITAL_AUDIO, CONTENT_MODERATION_TOOL_CAN_MANAGE, CONTENT_NR_CONTRIBUTION_CAN_VIEW, CONTENT_NR_CONTRIBUTION_CAN_CREATE, CONTENT_NR_CONTRIBUTION_CAN_MANAGE, CONTENT_NR_CONTRIBUTION_CAN_DELETE, CONTENT_NR_OWNERSHIP_SR_CAN_VIEW, CONTENT_NR_OWNERSHIP_SR_CAN_CREATE, CONTENT_NR_OWNERSHIP_SR_CAN_MANAGE, CONTENT_NR_OWNERSHIP_SR_CAN_DELETE, FANSIFTER_CAN_VIEW_FAN_DATA, FANSIFTER_CAN_CREATE_AD_REPORTS, FANSIFTER_CAN_SHARE_AD_CAMPAIGN_AUDIENCES, FANSIFTER_CAN_CONNECT_AD_ACCOUNTS, FANSIFTER_CAN_VIEW_EMAIL_CAMPAIGNS, FANSIFTER_CAN_CREATE_EMAIL_CAMPAIGNS, FANSIFTER_CAN_VIEW_SMS_CAMPAIGNS, FANSIFTER_CAN_CREATE_SMS_CAMPAIGNS, SEAT_CAN_ADMINISTER_USERS, SONGWHIP_READ, CONTENT_CCM_DIGITAL_AUDIO_CAN_BULK_CREATE, AI_CAN_APOLLO_MCP_PILOT, "mock_CollaboratorsProfile_royalties", "mock_InsightsProfile_analytics", "mock_LabelProfile_accounting", "mock_LabelProfile_administrator", "mock_LabelProfile_catalog", "mock_LabelProfile_marketing", "mock_SettingsProfile", "mock_SongwhipProfile_marketing", "e2e_test_role", ) ) ROLES_PARENT_CHILD_RELATIONSHIPS = { FANSIFTER_CAN_VIEW_FAN_DATA: ( FANSIFTER_CAN_CREATE_AD_REPORTS, FANSIFTER_CAN_SHARE_AD_CAMPAIGN_AUDIENCES, FANSIFTER_CAN_CONNECT_AD_ACCOUNTS, FANSIFTER_CAN_VIEW_EMAIL_CAMPAIGNS, FANSIFTER_CAN_CREATE_EMAIL_CAMPAIGNS, FANSIFTER_CAN_VIEW_SMS_CAMPAIGNS, FANSIFTER_CAN_CREATE_SMS_CAMPAIGNS, ), }