xmpp.chapril.org-conversejs/src/plugins/register/index.js

54 lines
1.8 KiB
JavaScript

/**
* @module converse-register
* @description
* This is a Converse.js plugin which add support for in-band registration
* as specified in XEP-0077.
* @copyright 2022, the Converse.js contributors
* @license Mozilla Public License (MPLv2)
*/
import './panel.js';
import { __ } from 'i18n';
import { _converse, api, converse } from '@converse/headless/core';
import { setActiveForm } from './utils.js';
// Strophe methods for building stanzas
const { Strophe } = converse.env;
// Add Strophe Namespaces
Strophe.addNamespace('REGISTER', 'jabber:iq:register');
// Add Strophe Statuses
const i = Object.keys(Strophe.Status).reduce((max, k) => Math.max(max, Strophe.Status[k]), 0);
Strophe.Status.REGIFAIL = i + 1;
Strophe.Status.REGISTERED = i + 2;
Strophe.Status.CONFLICT = i + 3;
Strophe.Status.NOTACCEPTABLE = i + 5;
converse.plugins.add('converse-register', {
dependencies: ['converse-controlbox'],
enabled () {
return true;
},
initialize () {
const { router } = _converse;
_converse.CONNECTION_STATUS[Strophe.Status.REGIFAIL] = 'REGIFAIL';
_converse.CONNECTION_STATUS[Strophe.Status.REGISTERED] = 'REGISTERED';
_converse.CONNECTION_STATUS[Strophe.Status.CONFLICT] = 'CONFLICT';
_converse.CONNECTION_STATUS[Strophe.Status.NOTACCEPTABLE] = 'NOTACCEPTABLE';
api.settings.extend({
'allow_registration': true,
'domain_placeholder': __(' e.g. conversejs.org'), // Placeholder text shown in the domain input on the registration form
'providers_link': 'https://compliance.conversations.im/', // Link to XMPP providers shown on registration page
'registration_domain': ''
});
router.route('converse/login', () => setActiveForm('login'));
router.route('converse/register', () => setActiveForm('register'));
}
});