2017-04-26 11:28:32 +00:00
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin',
|
|
|
|
note: 'Admin Interface',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.user',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Users']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.group',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Groups']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.role',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Roles']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.organization',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Organizations']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.overview',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Overviews']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.text_module',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Text Modules']
|
|
|
|
},
|
|
|
|
)
|
2018-09-13 10:28:58 +00:00
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.time_accounting',
|
|
|
|
note: 'Manage %s',
|
2018-09-13 10:28:58 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Time Accounting']
|
|
|
|
},
|
|
|
|
)
|
2017-04-26 11:28:32 +00:00
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.macro',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Macros']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.tag',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Tags']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.calendar',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Calendar']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.sla',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['SLA']
|
|
|
|
},
|
|
|
|
)
|
2019-10-29 10:41:12 +00:00
|
|
|
Permission.create_if_not_exists(
|
|
|
|
name: 'admin.trigger',
|
|
|
|
note: 'Manage %s',
|
|
|
|
preferences: {
|
|
|
|
translations: ['Triggers']
|
|
|
|
},
|
|
|
|
)
|
2017-04-26 11:28:32 +00:00
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.scheduler',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Scheduler']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.report_profile',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Report Profiles']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.channel_web',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Channel - Web']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.channel_formular',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Channel - Formular']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.channel_email',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Channel - Email']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.channel_twitter',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Channel - Twitter']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.channel_facebook',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Channel - Facebook']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.channel_telegram',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Channel - Telegram']
|
|
|
|
},
|
|
|
|
)
|
2020-10-28 09:52:30 +00:00
|
|
|
Permission.create_if_not_exists(
|
|
|
|
name: 'admin.channel_google',
|
|
|
|
note: 'Manage %s',
|
|
|
|
preferences: {
|
|
|
|
translations: ['Channel - Google']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
|
|
|
name: 'admin.channel_microsoft365',
|
|
|
|
note: 'Manage %s',
|
|
|
|
preferences: {
|
|
|
|
translations: ['Channel - Microsoft 365']
|
|
|
|
},
|
|
|
|
)
|
2018-10-16 08:45:15 +00:00
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.channel_sms',
|
|
|
|
note: 'Manage %s',
|
2018-10-16 08:45:15 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Channel - SMS']
|
|
|
|
},
|
|
|
|
)
|
2017-04-26 11:28:32 +00:00
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.channel_chat',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Channel - Chat']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.branding',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Branding']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.setting_system',
|
|
|
|
note: 'Manage %s Settings',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['System']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.security',
|
|
|
|
note: 'Manage %s Settings',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Security']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.ticket',
|
|
|
|
note: 'Manage %s Settings',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Ticket']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.package',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Packages']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.integration',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Integrations']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.api',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['API']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.object',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Objects']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.translation',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Translations']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.monitoring',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Monitoring']
|
|
|
|
},
|
|
|
|
)
|
2020-09-08 15:06:23 +00:00
|
|
|
Permission.create_if_not_exists(
|
|
|
|
name: 'admin.data_privacy',
|
|
|
|
note: 'Manage %s',
|
|
|
|
preferences: {
|
|
|
|
translations: ['Data Privacy']
|
|
|
|
},
|
|
|
|
)
|
2017-04-26 11:28:32 +00:00
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.maintenance',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Maintenance']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'admin.session',
|
|
|
|
note: 'Manage %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Sessions']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2020-10-07 12:05:07 +00:00
|
|
|
name: 'user_preferences',
|
|
|
|
note: 'User Preferences',
|
|
|
|
preferences: {},
|
|
|
|
allow_signup: true,
|
2017-04-26 11:28:32 +00:00
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2020-10-07 12:05:07 +00:00
|
|
|
name: 'user_preferences.password',
|
|
|
|
note: 'Change %s',
|
|
|
|
preferences: {
|
2017-04-26 11:28:32 +00:00
|
|
|
translations: ['Password']
|
|
|
|
},
|
2020-10-07 12:05:07 +00:00
|
|
|
allow_signup: true,
|
2017-04-26 11:28:32 +00:00
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2020-10-07 12:05:07 +00:00
|
|
|
name: 'user_preferences.notifications',
|
|
|
|
note: 'Manage %s',
|
|
|
|
preferences: {
|
2017-04-26 11:28:32 +00:00
|
|
|
translations: ['Notifications'],
|
2018-12-19 17:31:51 +00:00
|
|
|
required: ['ticket.agent'],
|
2017-04-26 11:28:32 +00:00
|
|
|
},
|
2020-10-07 12:05:07 +00:00
|
|
|
allow_signup: true,
|
2017-04-26 11:28:32 +00:00
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2020-10-07 12:05:07 +00:00
|
|
|
name: 'user_preferences.access_token',
|
|
|
|
note: 'Manage %s',
|
|
|
|
preferences: {
|
2017-04-26 11:28:32 +00:00
|
|
|
translations: ['Token Access']
|
|
|
|
},
|
2020-10-07 12:05:07 +00:00
|
|
|
allow_signup: true,
|
2017-04-26 11:28:32 +00:00
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2020-10-07 12:05:07 +00:00
|
|
|
name: 'user_preferences.language',
|
|
|
|
note: 'Change %s',
|
|
|
|
preferences: {
|
2017-04-26 11:28:32 +00:00
|
|
|
translations: ['Language']
|
|
|
|
},
|
2020-10-07 12:05:07 +00:00
|
|
|
allow_signup: true,
|
2017-04-26 11:28:32 +00:00
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2020-10-07 12:05:07 +00:00
|
|
|
name: 'user_preferences.linked_accounts',
|
|
|
|
note: 'Manage %s',
|
|
|
|
preferences: {
|
2017-04-26 11:28:32 +00:00
|
|
|
translations: ['Linked Accounts']
|
|
|
|
},
|
2020-10-07 12:05:07 +00:00
|
|
|
allow_signup: true,
|
2017-04-26 11:28:32 +00:00
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2020-10-07 12:05:07 +00:00
|
|
|
name: 'user_preferences.device',
|
|
|
|
note: 'Manage %s',
|
|
|
|
preferences: {
|
2017-04-26 11:28:32 +00:00
|
|
|
translations: ['Devices']
|
|
|
|
},
|
2020-10-07 12:05:07 +00:00
|
|
|
allow_signup: true,
|
2017-04-26 11:28:32 +00:00
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2020-10-07 12:05:07 +00:00
|
|
|
name: 'user_preferences.avatar',
|
|
|
|
note: 'Manage %s',
|
|
|
|
preferences: {
|
2017-04-26 11:28:32 +00:00
|
|
|
translations: ['Avatar']
|
|
|
|
},
|
2020-10-07 12:05:07 +00:00
|
|
|
allow_signup: true,
|
2017-04-26 11:28:32 +00:00
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2020-10-07 12:05:07 +00:00
|
|
|
name: 'user_preferences.calendar',
|
|
|
|
note: 'Access to %s',
|
|
|
|
preferences: {
|
2017-04-26 11:28:32 +00:00
|
|
|
translations: ['Calendars'],
|
2018-12-19 17:31:51 +00:00
|
|
|
required: ['ticket.agent'],
|
2017-04-26 11:28:32 +00:00
|
|
|
},
|
2020-10-07 12:05:07 +00:00
|
|
|
allow_signup: true,
|
2017-04-26 11:28:32 +00:00
|
|
|
)
|
2017-12-07 15:42:39 +00:00
|
|
|
Permission.create_if_not_exists(
|
2020-10-07 12:05:07 +00:00
|
|
|
name: 'user_preferences.out_of_office',
|
|
|
|
note: 'Change %s',
|
|
|
|
preferences: {
|
2017-12-07 15:42:39 +00:00
|
|
|
translations: ['Out of Office'],
|
2018-12-19 17:31:51 +00:00
|
|
|
required: ['ticket.agent'],
|
2017-12-07 15:42:39 +00:00
|
|
|
},
|
2020-10-07 12:05:07 +00:00
|
|
|
allow_signup: true,
|
2017-12-07 15:42:39 +00:00
|
|
|
)
|
2017-04-26 11:28:32 +00:00
|
|
|
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'report',
|
|
|
|
note: 'Report Interface',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'ticket',
|
|
|
|
note: 'Ticket Interface',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
disabled: true
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'ticket.agent',
|
|
|
|
note: 'Access to Agent Tickets based on Group Access',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
plugin: ['groups']
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2020-10-07 12:05:07 +00:00
|
|
|
name: 'ticket.customer',
|
|
|
|
note: 'Access to Customer Tickets based on current_user and organization',
|
|
|
|
preferences: {},
|
|
|
|
allow_signup: true,
|
2017-04-26 11:28:32 +00:00
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'chat',
|
|
|
|
note: 'Access to %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
2020-10-07 07:04:48 +00:00
|
|
|
translations: ['Chat'],
|
|
|
|
disabled: true,
|
2017-04-26 11:28:32 +00:00
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'chat.agent',
|
|
|
|
note: 'Access to %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['Chat'],
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'cti',
|
|
|
|
note: 'CTI',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
disabled: true
|
|
|
|
},
|
|
|
|
)
|
|
|
|
Permission.create_if_not_exists(
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'cti.agent',
|
|
|
|
note: 'Access to %s',
|
2017-04-26 11:28:32 +00:00
|
|
|
preferences: {
|
|
|
|
translations: ['CTI'],
|
|
|
|
},
|
|
|
|
)
|
|
|
|
|
2019-06-04 03:40:48 +00:00
|
|
|
Permission.create_if_not_exists(
|
|
|
|
name: 'admin.knowledge_base',
|
|
|
|
note: 'Create and setup %s',
|
|
|
|
preferences: {
|
|
|
|
translations: ['Knowledge Base']
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
Permission.create_if_not_exists(
|
|
|
|
name: 'knowledge_base',
|
|
|
|
note: 'Manage %s',
|
|
|
|
preferences: {
|
|
|
|
translations: ['Knowledge Base'],
|
|
|
|
disabled: true,
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
Permission.create_if_not_exists(
|
|
|
|
name: 'knowledge_base.editor',
|
|
|
|
note: 'Manage %s',
|
|
|
|
preferences: {
|
|
|
|
translations: ['Knowledge Base Editor']
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
Permission.create_if_not_exists(
|
|
|
|
name: 'knowledge_base.reader',
|
|
|
|
note: 'Manage %s',
|
|
|
|
preferences: {
|
|
|
|
translations: ['Knowledge Base Reader']
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
2017-04-26 11:28:32 +00:00
|
|
|
admin = Role.find_by(name: 'Admin')
|
|
|
|
admin.permission_grant('user_preferences')
|
|
|
|
admin.permission_grant('admin')
|
|
|
|
admin.permission_grant('report')
|
2019-06-04 03:40:48 +00:00
|
|
|
admin.permission_grant('knowledge_base.editor')
|
2017-04-26 11:28:32 +00:00
|
|
|
|
|
|
|
agent = Role.find_by(name: 'Agent')
|
|
|
|
agent.permission_grant('user_preferences')
|
|
|
|
agent.permission_grant('ticket.agent')
|
|
|
|
agent.permission_grant('chat.agent')
|
|
|
|
agent.permission_grant('cti.agent')
|
2019-06-04 03:40:48 +00:00
|
|
|
agent.permission_grant('knowledge_base.reader')
|
2017-04-26 11:28:32 +00:00
|
|
|
|
|
|
|
customer = Role.find_by(name: 'Customer')
|
|
|
|
customer.permission_grant('user_preferences.password')
|
|
|
|
customer.permission_grant('user_preferences.language')
|
|
|
|
customer.permission_grant('user_preferences.linked_accounts')
|
|
|
|
customer.permission_grant('user_preferences.avatar')
|
|
|
|
customer.permission_grant('ticket.customer')
|