Wed, 03 Aug 2022 02:47:55 +0200
Merge with MattJ
250 | 1 | local verse = require "verse"; |
2 | ||
235
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 | local xmlns_register = "jabber:iq:register"; |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 | |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 | function verse.plugins.register(stream) |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 | local function handle_features(features_stanza) |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 | if features_stanza:get_child("register", "http://jabber.org/features/iq-register") then |
343
0d8fb22404c3
plugins.register: Support submitting email when registering an account
Matthew Wild <mwild1@gmail.com>
parents:
342
diff
changeset
|
8 | local request = verse.iq({ to = stream.host_, type = "set" }) |
235
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 | :tag("query", { xmlns = xmlns_register }) |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 | :tag("username"):text(stream.username):up() |
343
0d8fb22404c3
plugins.register: Support submitting email when registering an account
Matthew Wild <mwild1@gmail.com>
parents:
342
diff
changeset
|
11 | :tag("password"):text(stream.password):up(); |
0d8fb22404c3
plugins.register: Support submitting email when registering an account
Matthew Wild <mwild1@gmail.com>
parents:
342
diff
changeset
|
12 | if stream.register_email then |
0d8fb22404c3
plugins.register: Support submitting email when registering an account
Matthew Wild <mwild1@gmail.com>
parents:
342
diff
changeset
|
13 | request:tag("email"):text(stream.register_email):up(); |
0d8fb22404c3
plugins.register: Support submitting email when registering an account
Matthew Wild <mwild1@gmail.com>
parents:
342
diff
changeset
|
14 | end |
0d8fb22404c3
plugins.register: Support submitting email when registering an account
Matthew Wild <mwild1@gmail.com>
parents:
342
diff
changeset
|
15 | stream:send_iq(request, function (result) |
235
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 | if result.attr.type == "result" then |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 | stream:event("registration-success"); |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 | else |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 | local type, condition, text = result:get_error(); |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 | stream:debug("Registration failed: %s", condition); |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 | stream:event("registration-failure", { type = type, condition = condition, text = text }); |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 | end |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 | end); |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 | else |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 | stream:debug("In-band registration not offered by server"); |
342
7aed4bc4949c
plugins.register: Fix event name (failure vs. failed)
Matthew Wild <mwild1@gmail.com>
parents:
250
diff
changeset
|
26 | stream:event("registration-failure", { condition = "service-unavailable" }); |
235
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 | end |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 | stream:unhook("stream-features", handle_features); |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 | return true; |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 | end |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 | stream:hook("stream-features", handle_features, 310); |
3c93d6119477
plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 | end |