mirror of
https://github.com/moparisthebest/xeps
synced 2025-02-16 07:10:15 -05:00
Easy Onboarding: creating invitations
This commit is contained in:
parent
62ba903912
commit
ef914fbc75
@ -83,12 +83,15 @@
|
|||||||
</p>
|
</p>
|
||||||
</section1>
|
</section1>
|
||||||
<section1 topic='Discovery' anchor='discover'>
|
<section1 topic='Discovery' anchor='discover'>
|
||||||
|
<p>Romeo can query his server for the availability of "User Invitation" and
|
||||||
|
"Account Creation" commands:</p>
|
||||||
<example caption="Discover available ad-hoc commands"><![CDATA[
|
<example caption="Discover available ad-hoc commands"><![CDATA[
|
||||||
<iq type='get' from='romeo@example.com' to='example.com' id='disco'>
|
<iq type='get' from='romeo@example.com' to='example.com' id='disco'>
|
||||||
<query xmlns='http://jabber.org/protocol/disco#items'
|
<query xmlns='http://jabber.org/protocol/disco#items'
|
||||||
node='http://jabber.org/protocol/commands'/>
|
node='http://jabber.org/protocol/commands'/>
|
||||||
</iq>
|
</iq>
|
||||||
]]></example>
|
]]></example>
|
||||||
|
<p>TODO: use appropriate node namespace.</p>
|
||||||
<example caption="Discovery result for available ad-hoc commands"><![CDATA[
|
<example caption="Discovery result for available ad-hoc commands"><![CDATA[
|
||||||
<iq type='result' to='romeo@example.com' from='example.com' id='disco'>
|
<iq type='result' to='romeo@example.com' from='example.com' id='disco'>
|
||||||
<query xmlns='http://jabber.org/protocol/disco#items'
|
<query xmlns='http://jabber.org/protocol/disco#items'
|
||||||
@ -102,12 +105,17 @@
|
|||||||
</query>
|
</query>
|
||||||
</iq>
|
</iq>
|
||||||
]]></example>
|
]]></example>
|
||||||
|
<p>When performing the account creation, Juliet's client needs to ensure
|
||||||
|
that the server supports the extended IBR protocol with a <preauth>
|
||||||
|
token: TODO</p>
|
||||||
</section1>
|
</section1>
|
||||||
<section1 topic='Glossary' anchor='glossary'>
|
<section1 topic='Glossary' anchor='glossary'>
|
||||||
<p>OPTIONAL.</p>
|
<p>OPTIONAL.</p>
|
||||||
</section1>
|
</section1>
|
||||||
<section1 topic='Use Cases' anchor='usecases'>
|
<section1 topic='Use Cases' anchor='usecases'>
|
||||||
<section2 topic='User Invitation' anchor='invitation'>
|
<section2 topic='Creating a User Invitation' anchor='create-invitation'>
|
||||||
|
<p>A user can execute the 'invite' command to obtain a new invitation link
|
||||||
|
with a unique invitation token.</p>
|
||||||
<example caption="Exceute user invitation command"><![CDATA[
|
<example caption="Exceute user invitation command"><![CDATA[
|
||||||
<iq type='set' from='romeo@example.com' to='example.com' id='exec1'>
|
<iq type='set' from='romeo@example.com' to='example.com' id='exec1'>
|
||||||
<command xmlns='http://jabber.org/protocol/commands'
|
<command xmlns='http://jabber.org/protocol/commands'
|
||||||
@ -136,22 +144,35 @@
|
|||||||
</command>
|
</command>
|
||||||
</iq>
|
</iq>
|
||||||
]]></example>
|
]]></example>
|
||||||
</section2>
|
<p>The token should be unique, sufficiently
|
||||||
|
long and generated by a strong random number generator.</p>
|
||||||
<p>A server MUST provide the <strong>uri</strong> field which contains an
|
<p>A server MUST provide the <strong>uri</strong> field which contains an
|
||||||
XMPP URI of the following format:</p>
|
XMPP URI of the following format:</p>
|
||||||
<code>xmpp:inviter@example.com?roster;preauth=TOKEN;ibr=true</code>
|
<code>xmpp:inviter@example.com?roster;preauth=TOKEN;ibr=true</code>
|
||||||
<p>The <strong>ibr</strong> query component in the XMPP URI indicates that
|
<p>The <strong>ibr</strong> query component in the XMPP URI indicates that
|
||||||
the invitee is allowed to create an account on the Romeo's server.
|
the invitee is allowed to create an account on Romeo's server, using the
|
||||||
|
'preauth' token.
|
||||||
If the server does not support or allow in-band registration for invited
|
If the server does not support or allow in-band registration for invited
|
||||||
users, the server MUST omit the <strong>ibr</strong> query component.</p>
|
users, the server MUST omit the <strong>ibr</strong> query component.</p>
|
||||||
<p>Additionally, the server SHOULD provide the <strong>landing-url</strong>
|
<p>Additionally, the server SHOULD provide the <strong>landing-url</strong>
|
||||||
field which contains an HTTPS URL of a web-based landing page as described
|
field which contains an HTTPS URL of a web-based landing page as described
|
||||||
in &xep0379; § 3.3. The URL format may differ from the example shown here
|
in &xep0379; § 3.3. The URL format may differ from the example shown here
|
||||||
depending on where the landing page is hosted.</p>
|
depending on where the landing page is hosted.</p>
|
||||||
|
<p>If the server omits the <strong>landing-page</strong> field, Romeo's
|
||||||
|
client SHOULD generate an appropriate landing page URL hosted by the
|
||||||
|
client developer or a trusted third party.</p>
|
||||||
<p>A server MAY provide a field which provides the expiration date of the
|
<p>A server MAY provide a field which provides the expiration date of the
|
||||||
generated token. The expiration date MUST conform to the DateTime profile
|
generated token. The expiration date MUST conform to the DateTime profile
|
||||||
specified in &xep0082;. If the field is not provided, the token does not
|
specified in &xep0082;. If the field is not provided, the token does not
|
||||||
expire.</p>
|
expire.</p>
|
||||||
|
<p>Romeo's client should provide adequate means to export the
|
||||||
|
<strong>landing-page</strong> URL, possibly accompanied with a short
|
||||||
|
description and the <strong>expire</strong> information, so that Romeo can
|
||||||
|
share it with Juliet by other means than XMPP, like e-mail or a QR code.</p>
|
||||||
|
</section2>
|
||||||
|
<section2 topic='Redeeming a User Invitation' anchor='redeem-invitation'>
|
||||||
|
<p></p>
|
||||||
|
</section2>
|
||||||
<section2 topic='Account Creation' anchor='account-creation'>
|
<section2 topic='Account Creation' anchor='account-creation'>
|
||||||
<example caption="Exceute account creation command"><![CDATA[
|
<example caption="Exceute account creation command"><![CDATA[
|
||||||
<iq type='set' from='romeo@example.com' to='example.com' id='exec1'>
|
<iq type='set' from='romeo@example.com' to='example.com' id='exec1'>
|
||||||
|
Loading…
Reference in New Issue
Block a user