123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- class PermissionSwitchToLabelDescription < ActiveRecord::Migration[7.0]
- def change
- # return if it's a new setup
- return if !Setting.exists?(name: 'system_init_done')
- migrate_database
- change_wording
- end
- private
- def migrate_database
- rename_column :permissions, :note, :description
- add_column :permissions, :label, :string, limit: 255
- Permission.reset_column_information
- end
- def change_wording
- new_permission_wording.each_with_index do |(permission_name, new_values), index|
- change_single_permission_wording(permission_name, new_values, index)
- end
- end
- def change_single_permission_wording(permission_name, new_values, index)
- permission = Permission.find_by! name: permission_name
- permission.label = new_values[:label]
- permission.description = new_values[:description]
- permission.preferences.delete :translations
- permission.preferences[:prio] = 1_000 + (index * 10)
- permission.save!
- end
- def new_permission_wording
- {
- 'admin' => { label: 'Admin interface', description: 'Configure your system.' },
- 'admin.user' => { label: 'Users', description: 'Manage all users of your system.' },
- 'admin.group' => { label: 'Groups', description: 'Manage groups of your system.' },
- 'admin.role' => { label: 'Roles', description: 'Manage roles of your system.' },
- 'admin.organization' => { label: 'Organizations', description: 'Manage all organizations of your system.' },
- 'admin.overview' => { label: 'Overviews', description: 'Manage ticket overviews of your system.' },
- 'admin.text_module' => { label: 'Text modules', description: 'Manage text modules of your system.' },
- 'admin.macro' => { label: 'Macros', description: 'Manage ticket macros of your system.' },
- 'admin.template' => { label: 'Templates', description: 'Manage ticket templates of your system.' },
- 'admin.tag' => { label: 'Tags', description: 'Manage ticket tags of your system.' },
- 'admin.calendar' => { label: 'Calendars', description: 'Manage calendars of your system.' },
- 'admin.sla' => { label: 'SLAs', description: 'Manage Service Level Agreements of your system.' },
- 'admin.trigger' => { label: 'Trigger', description: 'Manage triggers of your system.' },
- 'admin.public_links' => { label: 'Public Links', description: 'Manage public links of your system.' },
- 'admin.webhook' => { label: 'Webhook', description: 'Manage webhooks of your system.' },
- 'admin.scheduler' => { label: 'Scheduler', description: 'Manage schedulers of your system.' },
- 'admin.report_profile' => { label: 'Report Profiles', description: 'Manage report profiles of your system.' },
- 'admin.time_accounting' => { label: 'Time Accounting', description: 'Manage time accounting settings of your system.' },
- 'admin.knowledge_base' => { label: 'Knowledge Base', description: 'Create and set up Knowledge Base.' },
- 'admin.channel_web' => { label: 'Web', description: 'Manage web channel of your system.' },
- 'admin.channel_formular' => { label: 'Form', description: 'Manage form channel of your system.' },
- 'admin.channel_email' => { label: 'Email', description: 'Manage email channel of your system.' },
- 'admin.channel_sms' => { label: 'SMS', description: 'Manage SMS channel of your system.' },
- 'admin.channel_chat' => { label: 'Chat', description: 'Manage chat channel of your system.' },
- 'admin.channel_google' => { label: 'Google', description: 'Manage Google mail channel of your system.' },
- 'admin.channel_microsoft365' => { label: 'Microsoft 365', description: 'Manage Microsoft 365 mail channel of your system.' },
- 'admin.channel_twitter' => { label: 'Twitter', description: 'Manage Twitter channel of your system.' },
- 'admin.channel_facebook' => { label: 'Facebook', description: 'Manage Facebook channel of your system.' },
- 'admin.channel_telegram' => { label: 'Telegram', description: 'Manage Telegram channel of your system.' },
- 'admin.channel_whatsapp' => { label: 'WhatsApp', description: 'Manage WhatsApp channel of your system.' },
- 'admin.branding' => { label: 'Branding', description: 'Manage branding settings of your system.' },
- 'admin.setting_system' => { label: 'System', description: 'Manage core system settings.' },
- 'admin.security' => { label: 'Security', description: 'Manage security settings of your system.' },
- 'admin.ticket' => { label: 'Ticket', description: 'Manage ticket settings of your system.' },
- 'admin.integration' => { label: 'Integrations', description: 'Manage integrations of your system.' },
- 'admin.api' => { label: 'API', description: 'Manage API of your system.' },
- 'admin.object' => { label: 'Objects', description: 'Manage object attributes of your system.' },
- 'admin.ticket_state' => { label: 'Ticket States', description: 'Manage ticket states of your system.' },
- 'admin.ticket_priority' => { label: 'Ticket Priorities', description: 'Manage ticket priorities of your system.' },
- 'admin.core_workflow' => { label: 'Core Workflows', description: 'Manage core workflows of your system.' },
- 'admin.translation' => { label: 'Translations', description: 'Manage translations of your system.' },
- 'admin.data_privacy' => { label: 'Data Privacy', description: 'Delete existing data of your system.' },
- 'admin.maintenance' => { label: 'Maintenance', description: 'Manage maintenance mode of your system.' },
- 'admin.monitoring' => { label: 'Monitoring', description: 'Manage monitoring of your system.' },
- 'admin.package' => { label: 'Packages', description: 'Manage packages of your system.' },
- 'admin.session' => { label: 'Sessions', description: 'Manage active user sessions of your system.' },
- 'admin.system_report' => { label: 'System Report', description: 'Manage system report of your system.' },
- 'chat' => { label: 'Chat', description: 'Access to the chat interface.' },
- 'chat.agent' => { label: 'Agent chat', description: 'Access the agent chat features.' },
- 'cti' => { label: 'Phone', description: 'Access to the phone interface.' },
- 'cti.agent' => { label: 'Agent phone', description: 'Access the agent phone features.' },
- 'knowledge_base' => { label: 'Knowledge Base', description: 'Access to the knowledge base interface.' },
- 'knowledge_base.editor' => { label: 'Knowledge Base Editor', description: 'Access the knowledge base editor features.' },
- 'knowledge_base.reader' => { label: 'Knowledge Base Reader', description: 'Access the knowledge base reader features.' },
- 'report' => { label: 'Report', description: 'Access to the report interface.' },
- 'ticket' => { label: 'Ticket', description: 'Access to the ticket interface.' },
- 'ticket.agent' => { label: 'Agent tickets', description: 'Access the tickets as agent based on group access.' },
- 'ticket.customer' => { label: 'Customer tickets', description: 'Access tickets as customer.' },
- 'user_preferences' => { label: 'Profile settings', description: 'Manage personal settings.' },
- 'user_preferences.appearance' => { label: 'Appearance', description: 'Manage personal appearance settings.' },
- 'user_preferences.language' => { label: 'Language', description: 'Manage personal language settings.' },
- 'user_preferences.avatar' => { label: 'Avatar', description: 'Manage personal avatar settings.' },
- 'user_preferences.out_of_office' => { label: 'Out of Office', description: 'Manage personal out of office settings.' },
- 'user_preferences.password' => { label: 'Password', description: 'Change personal account password.' },
- 'user_preferences.two_factor_authentication' => { label: 'Two-factor Authentication', description: 'Manage personal two-factor authentication methods.' },
- 'user_preferences.device' => { label: 'Devices', description: 'Manage personal devices and sessions.' },
- 'user_preferences.access_token' => { label: 'Token Access', description: 'Manage personal API tokens.' },
- 'user_preferences.linked_accounts' => { label: 'Linked Accounts', description: 'Manage personal linked accounts.' },
- 'user_preferences.notifications' => { label: 'Notifications', description: 'Manage personal notifications settings.' },
- 'user_preferences.overview_sorting' => { label: 'Overviews', description: 'Manage personal overviews.' },
- 'user_preferences.calendar' => { label: 'Calendar', description: 'Manage personal calendar.' },
- }
- end
- end
|