/* eslint no-multi-spaces: 0 */ /* eslint comma-spacing: 0 */ import { capitalize } from '@rocket.chat/string-helpers'; import { settingsRegistry } from '../../../settings/server'; export function addOAuthService(name: string, values: { [k: string]: string | boolean | undefined } = {}): void { name = name.toLowerCase().replace(/[^a-z0-9_]/g, ''); name = capitalize(name); settingsRegistry.add(`Accounts_OAuth_Custom-${name}`, values.enabled || false, { type: 'boolean', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Enable', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-url`, values.serverURL || '', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'URL', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-token_path`, values.tokenPath || '/oauth/token', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Token_Path', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-token_sent_via`, values.tokenSentVia || 'payload', { type: 'select', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Token_Sent_Via', persistent: true, values: [ { key: 'header', i18nLabel: 'Header' }, { key: 'payload', i18nLabel: 'Payload' }, ], }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-identity_token_sent_via`, values.identityTokenSentVia || 'default', { type: 'select', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Identity_Token_Sent_Via', persistent: true, values: [ { key: 'default', i18nLabel: 'Same_As_Token_Sent_Via' }, { key: 'header', i18nLabel: 'Header' }, { key: 'payload', i18nLabel: 'Payload' }, ], }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-identity_path`, values.identityPath || '/me', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Identity_Path', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-authorize_path`, values.authorizePath || '/oauth/authorize', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Authorize_Path', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-scope`, values.scope || 'openid', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Scope', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-access_token_param`, values.accessTokenParam || 'access_token', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Access_Token_Param', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-id`, values.clientId || '', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_id', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-secret`, values.clientSecret || '', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Secret', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-login_style`, values.loginStyle || 'popup', { type: 'select', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Login_Style', persistent: true, values: [ { key: 'redirect', i18nLabel: 'Redirect' }, { key: 'popup', i18nLabel: 'Popup' }, { key: '', i18nLabel: 'Default' }, ], }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-button_label_text`, values.buttonLabelText || '', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Button_Label_Text', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-button_label_color`, values.buttonLabelColor || '#FFFFFF', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Button_Label_Color', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-button_color`, values.buttonColor || '#1d74f5', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Button_Color', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-key_field`, values.keyField || 'username', { type: 'select', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Key_Field', persistent: true, values: [ { key: 'username', i18nLabel: 'Username' }, { key: 'email', i18nLabel: 'Email' }, ], }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-username_field`, values.usernameField || '', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Username_Field', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-email_field`, values.emailField || '', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Email_Field', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-name_field`, values.nameField || '', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Name_Field', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-avatar_field`, values.avatarField || '', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Avatar_Field', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-roles_claim`, values.rolesClaim || 'roles', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Roles_Claim', enterprise: true, invalidValue: 'roles', modules: ['oauth-enterprise'], }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-groups_claim`, values.groupsClaim || 'groups', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Groups_Claim', enterprise: true, invalidValue: 'groups', modules: ['oauth-enterprise'], }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-channels_admin`, values.channelsAdmin || 'rocket.cat', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Channel_Admin', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-map_channels`, values.mapChannels || false, { type: 'boolean', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Map_Channels', enterprise: true, invalidValue: false, modules: ['oauth-enterprise'], }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-merge_roles`, values.mergeRoles || false, { type: 'boolean', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Merge_Roles', enterprise: true, invalidValue: false, modules: ['oauth-enterprise'], }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-roles_to_sync`, values.rolesToSync || '', { type: 'string', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Roles_To_Sync', i18nDescription: 'Accounts_OAuth_Custom_Roles_To_Sync_Description', enterprise: true, enableQuery: { _id: `Accounts_OAuth_Custom-${name}-merge_roles`, value: true, }, invalidValue: '', modules: ['oauth-enterprise'], }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-merge_users`, values.mergeUsers || false, { type: 'boolean', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Merge_Users', persistent: true, }); settingsRegistry.add(`Accounts_OAuth_Custom-${name}-show_button`, values.showButton || true, { type: 'boolean', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Show_Button_On_Login_Page', persistent: true, }); settingsRegistry.add( `Accounts_OAuth_Custom-${name}-groups_channel_map`, values.channelsMap || '{\n\t"rocket-admin": "admin",\n\t"tech-support": "support"\n}', { type: 'code', multiline: true, code: 'application/json', group: 'OAuth', section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Channel_Map', persistent: true, }, ); }