annotate src/plugins/plugin_misc_account.py @ 1726:2ebe66a96d05

plugin misc_account: auto add some contacts at profile creation
author souliane <souliane@mailoo.org>
date Mon, 07 Dec 2015 20:35:21 +0100
parents c1be6363bfab
children 68e498b3367e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/python
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
3
730
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
4 # SAT plugin for account creation (experimental)
1396
069ad98b360d 2015 copyright dates update
Goffi <goffi@goffi.org>
parents: 1234
diff changeset
5 # Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015 Jérôme Poisson (goffi@goffi.org)
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
6
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 594
diff changeset
7 # This program is free software: you can redistribute it and/or modify
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 594
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 594
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 594
diff changeset
10 # (at your option) any later version.
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
11
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 594
diff changeset
12 # This program is distributed in the hope that it will be useful,
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 594
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 594
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 594
diff changeset
15 # GNU Affero General Public License for more details.
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
16
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 594
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 594
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
19
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
20 from sat.core.i18n import _, D_
993
301b342c697a core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents: 987
diff changeset
21 from sat.core.log import getLogger
301b342c697a core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents: 987
diff changeset
22 log = getLogger(__name__)
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
23 from sat.core import exceptions
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
24 from sat.tools import xml_tools
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
25 from sat.memory.memory import Sessions
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
26 from sat.memory.crypto import PasswordHasher
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
27 from sat.core.constants import Const as C
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
28
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
29 from twisted.internet import reactor, defer, protocol
1726
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
30 from twisted.words.protocols.jabber import jid
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
31 from twisted.python.procutils import which
644
53de6954e94e plugin misc_account: fix for sending a failure message
souliane <souliane@mailoo.org>
parents: 641
diff changeset
32 from twisted.python.failure import Failure
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
33 from twisted.mail.smtp import sendmail
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
34 from os.path import join, dirname
571
1cb24325485c plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents: 569
diff changeset
35 from email.mime.text import MIMEText
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
36
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
37 import random
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
38
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
39
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
40 PLUGIN_INFO = {
594
e629371a28d3 Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
41 "name": "Account Plugin",
e629371a28d3 Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
42 "import_name": "MISC-ACCOUNT",
e629371a28d3 Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
43 "type": "MISC",
e629371a28d3 Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
44 "protocols": [],
e629371a28d3 Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
45 "dependencies": [],
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
46 "recommendations": ['GROUPBLOG'],
594
e629371a28d3 Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
47 "main": "MiscAccount",
e629371a28d3 Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
48 "handler": "no",
e629371a28d3 Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
49 "description": _(u"""SàT account creation""")
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
50 }
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
51
730
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
52 CONFIG_SECTION = "plugin account"
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
53
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
54 # You need do adapt the following consts to your server
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
55 # all theses values (key=option name, value=default) can (and should) be overriden in sat.conf
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
56 # in section CONFIG_SECTION
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
57
730
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
58 default_conf = {"email_from": "NOREPLY@example.net",
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
59 "email_server": "localhost",
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
60 "admin_email": "admin@example.net",
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
61 "new_account_server": "localhost",
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
62 "new_account_domain": "example.net",
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
63 "prosody_path": None, # prosody path (where prosodyctl will be executed from), or None to automaticaly find it
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
64 "prosodyctl": "prosodyctl",
1726
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
65 "reserved_list": ['libervia'], # profiles which can't be used
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
66 "auto_add_contacts": ['salut-a-toi@libervia.org'],
730
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
67 }
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
68
594
e629371a28d3 Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
69
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
70 class PasswordsMatchingError(Exception):
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
71 pass
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
72
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
73
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
74 class ProsodyRegisterProtocol(protocol.ProcessProtocol):
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
75 """ Try to register an account with prosody """
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
76
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
77 def __init__(self, password=None, deferred=None):
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
78 """
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
79 @param password: new user password
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
80 @param deferred
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
81 """
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
82 self.password = password
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
83 self.deferred = deferred
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
84 self.data = ''
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
85
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
86 def connectionMade(self):
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
87 if self.password is None:
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
88 return
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
89 self.transport.write("%s\n%s" % ((self.password.encode('utf-8'),) * 2))
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
90 self.transport.closeStdin()
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
91
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
92 def outReceived(self, data):
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
93 self.data += data
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
94
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
95 def errReceived(self, data):
571
1cb24325485c plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents: 569
diff changeset
96 self.data += data
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
97
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
98 def processEnded(self, reason):
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
99 if (reason.value.exitCode == 0):
993
301b342c697a core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents: 987
diff changeset
100 log.info(_('Prosody command succeed'))
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
101 self.deferred.callback(None)
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
102 else:
993
301b342c697a core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents: 987
diff changeset
103 log.error(_(u"Can't complete Prosody command (error code: %(code)d): %(message)s") % {'code': reason.value.exitCode, 'message': self.data})
751
1def5b7edf9f core, bridge: better GenericException handling
Goffi <goffi@goffi.org>
parents: 733
diff changeset
104 self.deferred.errback(Failure(exceptions.InternalError))
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
105
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
106 @classmethod
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
107 def prosodyctl(cls, plugin, command, password=None, profile=None):
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
108 """Create a new ProsodyRegisterProtocol and execute the given prosodyctl command.
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
109
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
110 @param plugin: instance of MiscAccount
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
111 @param command: the command to execute: "adduser", "passwd" or "deluser"
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
112 @param password: the user new password (leave to None for "deluser" command)
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
113 @param profile: the user profile
1031
e90125d07072 plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents: 993
diff changeset
114 @return: a Deferred instance
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
115 """
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
116 d = defer.Deferred()
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
117 prosody_reg = ProsodyRegisterProtocol(password, d)
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
118 prosody_exe = join(plugin._prosody_path, plugin.getConfig('prosodyctl'))
934
34dd9287dfe5 plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents: 895
diff changeset
119 # TODO delete account which are not on the same host
954
5925c9ebfcd2 plugin account: reverted patch abd3a75d629c
Goffi <goffi@goffi.org>
parents: 948
diff changeset
120 reactor.spawnProcess(prosody_reg, prosody_exe, [prosody_exe, command, "%s@%s" % (profile, plugin.getConfig('new_account_domain'))], path=plugin._prosody_path)
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
121 return d
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
122
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
123
588
beaf6bec2fcd Remove every old-style class.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 587
diff changeset
124 class MiscAccount(object):
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
125 """Account plugin: create a SàT + Prosody account, used by Libervia"""
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
126 #XXX: This plugin is a Q&D one used for the demo. Something more generic (and not
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
127 # only focused on Prosody) is planed
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
128
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
129 def __init__(self, host):
993
301b342c697a core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents: 987
diff changeset
130 log.info(_(u"Plugin Account initialization"))
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
131 self.host = host
594
e629371a28d3 Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
132 host.bridge.addMethod("registerSatAccount", ".plugin", in_sign='sss', out_sign='', method=self._registerAccount, async=True)
987
3a96920c07b7 core, frontends: unify the roster management UIs in sat/stdui/ui_contact_list.py
souliane <souliane@mailoo.org>
parents: 954
diff changeset
133 host.bridge.addMethod("getNewAccountDomain", ".plugin", in_sign='', out_sign='s', method=self.getNewAccountDomain, async=False)
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
134 host.bridge.addMethod("getAccountDialogUI", ".plugin", in_sign='s', out_sign='s', method=self._getAccountDialogUI, async=False)
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
135 host.bridge.addMethod("asyncConnectWithXMPPCredentials", ".plugin", in_sign='ss', out_sign='b', method=self.asyncConnectWithXMPPCredentials, async=True)
730
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
136 self._prosody_path = self.getConfig('prosody_path')
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
137 if self._prosody_path is None:
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
138 paths = which(self.getConfig('prosodyctl'))
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
139 if not paths:
1409
3265a2639182 massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions
souliane <souliane@mailoo.org>
parents: 1396
diff changeset
140 log.error(_(u"Can't find %s") % (self.getConfig('prosodyctl'),))
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
141 else:
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
142 self._prosody_path = dirname(paths[0])
1409
3265a2639182 massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions
souliane <souliane@mailoo.org>
parents: 1396
diff changeset
143 log.info(_(u'Prosody path found: %s') % (self._prosody_path,))
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
144
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
145 self._sessions = Sessions()
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
146
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
147 self.__account_cb_id = host.registerCallback(self._accountDialogCb, with_data=True)
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
148 self.__change_password_id = host.registerCallback(self.__changePasswordCb, with_data=True)
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
149
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
150 def deleteBlogCallback(posts, comments):
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
151 return lambda data, profile: self.__deleteBlogPostsCb(posts, comments, data, profile)
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
152
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
153 self.__delete_posts_id = host.registerCallback(deleteBlogCallback(True, False), with_data=True)
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
154 self.__delete_comments_id = host.registerCallback(deleteBlogCallback(False, True), with_data=True)
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
155 self.__delete_posts_comments_id = host.registerCallback(deleteBlogCallback(True, True), with_data=True)
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
156
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
157 self.__delete_account_id = host.registerCallback(self.__deleteAccountCb, with_data=True)
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
158
730
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
159 def getConfig(self, name):
1234
9c17bd37e6e5 core: better management of default value in getConfig
Goffi <goffi@goffi.org>
parents: 1212
diff changeset
160 return self.host.memory.getConfig(CONFIG_SECTION, name, default_conf[name])
730
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
161
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
162 def generatePassword(self):
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
163 """Generate a password with random characters.
1696
9a7a27c44611 plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents: 1691
diff changeset
164
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
165 @return unicode
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
166 """
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
167 random.seed()
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
168 #charset = [chr(i) for i in range(0x21,0x7F)] #XXX: this charset seems to have some issues with openfire
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
169 charset = [chr(i) for i in range(0x30,0x3A) + range(0x41,0x5B) + range (0x61,0x7B)]
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
170 return ''.join([random.choice(charset) for i in range(15)])
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
171
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
172 def _registerAccount(self, email, password, profile):
1726
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
173 d = self.registerAccount(email, password, None, profile)
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
174 d.addCallback(lambda dummy: self.autoAddContacts(password, profile))
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
175 return d
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
176
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
177 def registerAccount(self, email, password, jid_s, profile):
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
178 """Register a new profile and its associated XMPP account.
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
179
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
180 @param email (unicode): where to send to confirmation email to
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
181 @param password (unicode): password chosen by the user
1696
9a7a27c44611 plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents: 1691
diff changeset
182 while be used for profile *and* XMPP account
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
183 @param jid_s (unicode): JID to re-use or to register:
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
184 - non empty value: bind this JID to the new sat profile
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
185 - None or "": register a new JID on the local XMPP server
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
186 @param profile
1696
9a7a27c44611 plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents: 1691
diff changeset
187 @return Deferred
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
188 """
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
189 if not password or not profile:
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
190 raise exceptions.DataError
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
191
730
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
192 if profile.lower() in self.getConfig('reserved_list'):
751
1def5b7edf9f core, bridge: better GenericException handling
Goffi <goffi@goffi.org>
parents: 733
diff changeset
193 return defer.fail(Failure(exceptions.ConflictError))
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
194
1031
e90125d07072 plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents: 993
diff changeset
195 d = self.host.memory.asyncCreateProfile(profile, password)
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
196 d.addCallback(lambda dummy: self.profileRegistered(email, password, jid_s, profile))
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
197 return d
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
198
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
199 def profileRegistered(self, email, password, jid_s, profile):
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
200 """Create the XMPP account, set the profile connection parameters and send the confirmation email.
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
201
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
202 @param email (unicode): where to send to confirmation email to
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
203 @param password (unicode): password chosen by the user
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
204 @param jid_s (unicode): JID to re-use or to register:
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
205 - non empty value: bind this JID to the new sat profile
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
206 - None or empty: register a new JID on the local XMPP server
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
207 @param profile
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
208 @return: Deferred
1031
e90125d07072 plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents: 993
diff changeset
209 """
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
210 # XXX: we use "prosodyctl adduser" because "register" doesn't check conflict and just change the password if the account already exists
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
211 if jid_s:
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
212 d = defer.succeed(None)
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
213 else:
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
214 d = ProsodyRegisterProtocol.prosodyctl(self, 'adduser', password, profile)
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
215 jid_s = "%s@%s" % (profile, self.getConfig('new_account_domain'))
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
216 if email:
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
217 d.addCallback(lambda dummy: self.sendEmails(email, jid_s, password, profile))
1080
f25ec9fd7cc4 plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents: 1044
diff changeset
218
f25ec9fd7cc4 plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents: 1044
diff changeset
219 def setParams(dummy):
1091
2d035aaea13b plugin misc_account: delete the profile session after the registration is done
souliane <souliane@mailoo.org>
parents: 1089
diff changeset
220 self.host.memory.setParam("JabberID", jid_s, "Connection", profile_key=profile)
2d035aaea13b plugin misc_account: delete the profile session after the registration is done
souliane <souliane@mailoo.org>
parents: 1089
diff changeset
221 d = self.host.memory.setParam("Password", password, "Connection", profile_key=profile)
1696
9a7a27c44611 plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents: 1691
diff changeset
222 return d
1080
f25ec9fd7cc4 plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents: 1044
diff changeset
223
f25ec9fd7cc4 plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents: 1044
diff changeset
224 def removeProfile(failure):
f25ec9fd7cc4 plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents: 1044
diff changeset
225 self.host.memory.asyncDeleteProfile(profile)
f25ec9fd7cc4 plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents: 1044
diff changeset
226 return failure
f25ec9fd7cc4 plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents: 1044
diff changeset
227
1696
9a7a27c44611 plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents: 1691
diff changeset
228 d.addCallback(lambda dummy: self.host.memory.startSession(password, profile))
1080
f25ec9fd7cc4 plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents: 1044
diff changeset
229 d.addCallback(setParams)
1696
9a7a27c44611 plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents: 1691
diff changeset
230 d.addCallback(lambda dummy: self.host.memory.stopSession(profile))
1080
f25ec9fd7cc4 plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents: 1044
diff changeset
231 d.addErrback(removeProfile)
733
fe05afc3f0df reverted last commit
Goffi <goffi@goffi.org>
parents: 732
diff changeset
232 return d
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
233
1726
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
234 def autoAddContacts(self, password, profile):
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
235 """Auto-add some roster contacts after the profile creation.
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
236
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
237 @param password (unicode): XMPP account password
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
238 """
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
239 contacts = self.getConfig('auto_add_contacts')
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
240 if not contacts:
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
241 return
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
242
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
243 def addContact(was_connected, contacts):
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
244 for contact in contacts:
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
245 d = self.host.addContact(contact, profile)
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
246 if not was_connected:
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
247 d.addCallback(lambda dummy: self.host.disconnect(profile))
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
248
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
249 try:
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
250 contacts_jid = [jid.JID(contact) for contact in contacts]
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
251 except (RuntimeError, jid.InvalidFormat, AttributeError):
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
252 log.error("Invalid JIDs list: %s" % ", ".join(contacts))
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
253 else:
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
254 d = self.host.asyncConnect(profile, password, max_retries=0)
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
255 d.addCallback(addContact, contacts_jid)
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
256
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
257 def sendEmails(self, email, jid_s, password, profile):
1433
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
258 # time to send the email
571
1cb24325485c plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents: 569
diff changeset
259
730
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
260 _email_host = self.getConfig('email_server')
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
261 _email_from = self.getConfig("email_from")
1433
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
262 domain = self.getConfig('new_account_domain')
571
1cb24325485c plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents: 569
diff changeset
263
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
264
571
1cb24325485c plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents: 569
diff changeset
265 def email_ok(ignore):
1433
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
266 log.debug(u"Account creation email sent to %s" % email)
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
267
571
1cb24325485c plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents: 569
diff changeset
268 def email_ko(ignore):
1433
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
269 # TODO: return error code to user
1409
3265a2639182 massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions
souliane <souliane@mailoo.org>
parents: 1396
diff changeset
270 log.error(u"Failed to send email to %s" % email)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
271
1433
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
272 body = (_(u"""Welcome to Libervia, the web interface of Salut à Toi.
571
1cb24325485c plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents: 569
diff changeset
273
1433
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
274 Your account on %(domain)s has been successfully created. This is a demonstration version to show you the current status of the project. It is still under development, it misses some features and it's not stable enough to be used for any serious purpose. Please keep it in mind!
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
275
1040
76ad41b708e1 plugin misc_account: do not send the password with the confirmation email for account creation
souliane <souliane@mailoo.org>
parents: 1031
diff changeset
276 Here is your connection information:
1433
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
277
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
278 Login on libervia.org: %(profile)s
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
279 Jabber ID (JID): %(jid_s)s
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
280
1433
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
281 Your password has been chosen by yourself. If you haven't read our security notice regarding the connection to https://libervia.org, please do it now:
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
282
1433
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
283 http://salut-a-toi.org/faq.html#certificate
870
e030460e065e plugin misc account: updated the welcome email
Goffi <goffi@goffi.org>
parents: 811
diff changeset
284
1433
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
285 In the beginning, you have nobody to talk to. To find some contacts, use the users' directory:
1707
94c450972346 primitivus and plugins: renamed a few menus:
souliane <souliane@mailoo.org>
parents: 1696
diff changeset
286 - make yourself visible in "Service / Directory subscription".
94c450972346 primitivus and plugins: renamed a few menus:
souliane <souliane@mailoo.org>
parents: 1696
diff changeset
287 - search for people with "Contacts" / Search directory".
571
1cb24325485c plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents: 569
diff changeset
288
1433
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
289 Any feedback welcome. Thank you!
571
1cb24325485c plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents: 569
diff changeset
290
1433
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
291 Salut à Toi association
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
292 http://www.salut-a-toi.org
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
293 """) % {'profile': profile, 'jid_s': jid_s, 'domain': domain}).encode('utf-8')
571
1cb24325485c plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents: 569
diff changeset
294 msg = MIMEText(body, 'plain', 'UTF-8')
1433
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
295 msg['Subject'] = _(u'Libervia account created')
571
1cb24325485c plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents: 569
diff changeset
296 msg['From'] = _email_from
1cb24325485c plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents: 569
diff changeset
297 msg['To'] = email
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
298
730
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
299 d_user = sendmail(_email_host, _email_from, email, msg.as_string())
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
300 d_user.addCallbacks(email_ok, email_ko)
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
301
1433
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
302 # email to the administrator
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
303 body = (u"""New account created: %(profile)s [%(email)s]""" % {'profile': profile, 'email': email}).encode('utf-8')
571
1cb24325485c plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents: 569
diff changeset
304 msg = MIMEText(body, 'plain', 'UTF-8')
1433
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
305 msg['Subject'] = _('New Libervia account created')
571
1cb24325485c plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents: 569
diff changeset
306 msg['From'] = _email_from
730
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
307 msg['To'] = self.getConfig('admin_email')
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
308
730
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
309 d_admin = sendmail(_email_host, _email_from, self.getConfig('admin_email'), msg.as_string())
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
310 d_admin.addCallbacks(email_ok, email_ko)
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
311 return defer.DeferredList([d_user, d_admin])
672
712e3782af12 plugin misc_account: added method getNewAccountDomain
souliane <souliane@mailoo.org>
parents: 644
diff changeset
312
987
3a96920c07b7 core, frontends: unify the roster management UIs in sat/stdui/ui_contact_list.py
souliane <souliane@mailoo.org>
parents: 954
diff changeset
313 def getNewAccountDomain(self):
672
712e3782af12 plugin misc_account: added method getNewAccountDomain
souliane <souliane@mailoo.org>
parents: 644
diff changeset
314 """@return: the domain that will be set to new account"""
730
32bbabe809da plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents: 672
diff changeset
315 return self.getConfig('new_account_domain')
672
712e3782af12 plugin misc_account: added method getNewAccountDomain
souliane <souliane@mailoo.org>
parents: 644
diff changeset
316
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
317 def _getAccountDialogUI(self, profile):
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
318 """Get the main dialog to manage your account
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
319 @param menu_data
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
320 @param profile: %(doc_profile)s
1031
e90125d07072 plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents: 993
diff changeset
321 @return: XML of the dialog
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
322 """
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
323 form_ui = xml_tools.XMLUI("form", "tabs", title=D_("Manage your account"), submit_id=self.__account_cb_id)
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
324 tab_container = form_ui.current_container
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
325
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
326 tab_container.addTab("update", D_("Change your password"), container=xml_tools.PairsContainer)
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
327 form_ui.addLabel(D_("Current profile password"))
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
328 form_ui.addPassword("current_passwd", value="")
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
329 form_ui.addLabel(D_("New password"))
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
330 form_ui.addPassword("new_passwd1", value="")
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
331 form_ui.addLabel(D_("New password (again)"))
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
332 form_ui.addPassword("new_passwd2", value="")
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
333
1713
0d972af37ff5 plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents: 1707
diff changeset
334 # FIXME: uncomment and fix these features
0d972af37ff5 plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents: 1707
diff changeset
335 """
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
336 if 'GROUPBLOG' in self.host.plugins:
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
337 tab_container.addTab("delete_posts", D_("Delete your posts"), container=xml_tools.PairsContainer)
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
338 form_ui.addLabel(D_("Current profile password"))
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
339 form_ui.addPassword("delete_posts_passwd", value="")
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
340 form_ui.addLabel(D_("Delete all your posts and their comments"))
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
341 form_ui.addBool("delete_posts_checkbox", "false")
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
342 form_ui.addLabel(D_("Delete all your comments on other's posts"))
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
343 form_ui.addBool("delete_comments_checkbox", "false")
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
344
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
345 tab_container.addTab("delete", D_("Delete your account"), container=xml_tools.PairsContainer)
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
346 form_ui.addLabel(D_("Current profile password"))
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
347 form_ui.addPassword("delete_passwd", value="")
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
348 form_ui.addLabel(D_("Delete your account"))
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
349 form_ui.addBool("delete_checkbox", "false")
1713
0d972af37ff5 plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents: 1707
diff changeset
350 """
0d972af37ff5 plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents: 1707
diff changeset
351
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
352 return form_ui.toXml()
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
353
1031
e90125d07072 plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents: 993
diff changeset
354 @defer.inlineCallbacks
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
355 def _accountDialogCb(self, data, profile):
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
356 """Called when the user submits the main account dialog
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
357 @param data
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
358 @param profile
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
359 """
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
360 sat_cipher = yield self.host.memory.asyncGetParamA(C.PROFILE_PASS_PATH[1], C.PROFILE_PASS_PATH[0], profile_key=profile)
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
361
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
362 @defer.inlineCallbacks
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
363 def verify(attempt):
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
364 auth = yield PasswordHasher.verify(attempt, sat_cipher)
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
365 defer.returnValue(auth)
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
366
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
367 def error_ui(message=None):
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
368 if not message:
1691
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
369 message = D_("The provided profile password doesn't match.")
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
370 error_ui = xml_tools.XMLUI("popup", title=D_("Attempt failure"))
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
371 error_ui.addText(message)
1031
e90125d07072 plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents: 993
diff changeset
372 return {'xmlui': error_ui.toXml()}
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
373
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
374 # check for account deletion
1713
0d972af37ff5 plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents: 1707
diff changeset
375 # FIXME: uncomment and fix these features
0d972af37ff5 plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents: 1707
diff changeset
376 """
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
377 delete_passwd = data[xml_tools.SAT_FORM_PREFIX + 'delete_passwd']
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
378 delete_checkbox = data[xml_tools.SAT_FORM_PREFIX + 'delete_checkbox']
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
379 if delete_checkbox == 'true':
1691
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
380 verified = yield verify(delete_passwd)
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
381 assert isinstance(verified, bool)
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
382 if verified:
1031
e90125d07072 plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents: 993
diff changeset
383 defer.returnValue(self.__deleteAccount(profile))
e90125d07072 plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents: 993
diff changeset
384 defer.returnValue(error_ui())
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
385
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
386 # check for blog posts deletion
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
387 if 'GROUPBLOG' in self.host.plugins:
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
388 delete_posts_passwd = data[xml_tools.SAT_FORM_PREFIX + 'delete_posts_passwd']
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
389 delete_posts_checkbox = data[xml_tools.SAT_FORM_PREFIX + 'delete_posts_checkbox']
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
390 delete_comments_checkbox = data[xml_tools.SAT_FORM_PREFIX + 'delete_comments_checkbox']
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
391 posts = delete_posts_checkbox == 'true'
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
392 comments = delete_comments_checkbox == 'true'
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
393 if posts or comments:
1691
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
394 verified = yield verify(delete_posts_passwd)
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
395 assert isinstance(verified, bool)
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
396 if verified:
1031
e90125d07072 plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents: 993
diff changeset
397 defer.returnValue(self.__deleteBlogPosts(posts, comments, profile))
e90125d07072 plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents: 993
diff changeset
398 defer.returnValue(error_ui())
1713
0d972af37ff5 plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents: 1707
diff changeset
399 """
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
400
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
401 # check for password modification
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
402 current_passwd = data[xml_tools.SAT_FORM_PREFIX + 'current_passwd']
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
403 new_passwd1 = data[xml_tools.SAT_FORM_PREFIX + 'new_passwd1']
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
404 new_passwd2 = data[xml_tools.SAT_FORM_PREFIX + 'new_passwd2']
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
405 if new_passwd1 or new_passwd2:
1691
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
406 verified = yield verify(current_passwd)
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
407 assert isinstance(verified, bool)
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
408 if verified:
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
409 if new_passwd1 == new_passwd2:
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
410 data = yield self.__changePassword(new_passwd1, profile=profile)
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
411 defer.returnValue(data)
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
412 else:
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
413 defer.returnValue(error_ui(D_("The values entered for the new password are not equal.")))
1031
e90125d07072 plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents: 993
diff changeset
414 defer.returnValue(error_ui())
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
415
1031
e90125d07072 plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents: 993
diff changeset
416 defer.returnValue({})
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
417
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
418 def __changePassword(self, password, profile):
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
419 """Ask for a confirmation before changing the XMPP account and SàT profile passwords.
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
420
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
421 @param password (str): the new password
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
422 @param profile (str): %(doc_profile)s
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
423 """
1212
628e320eab1f memory: Sessions.newSession can be called with a forced session ID
souliane <souliane@mailoo.org>
parents: 1091
diff changeset
424 session_id, dummy = self._sessions.newSession({'new_password': password}, profile=profile)
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
425 form_ui = xml_tools.XMLUI("form", title=D_("Change your password?"), submit_id=self.__change_password_id, session_id=session_id)
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
426 form_ui.addText(D_("Note for advanced users: this will actually change both your SàT profile password AND your XMPP account password."))
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
427 form_ui.addText(D_("Continue with changing the password?"))
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
428 return {'xmlui': form_ui.toXml()}
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
429
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
430 def __changePasswordCb(self, data, profile):
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
431 """Actually change the user XMPP account and SàT profile password
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
432 @param data (dict)
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
433 @profile (str): %(doc_profile)s
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
434 """
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
435 password = self._sessions.profileGet(data['session_id'], profile)['new_password']
1044
85c110c0be86 plugins misc_account, misc_register_account: manually delete the sessions when not needed anymore
souliane <souliane@mailoo.org>
parents: 1041
diff changeset
436 del self._sessions[data['session_id']]
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
437
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
438 def passwordChanged(result):
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
439 d = self.host.memory.setParam(C.PROFILE_PASS_PATH[1], password, C.PROFILE_PASS_PATH[0], profile_key=profile)
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
440 d.addCallback(lambda dummy: self.host.memory.setParam("Password", password, "Connection", profile_key=profile))
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
441 confirm_ui = xml_tools.XMLUI("popup", title=D_("Confirmation"))
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
442 confirm_ui.addText(D_("Your password has been changed."))
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
443 return defer.succeed({'xmlui': confirm_ui.toXml()})
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
444
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
445 def errback(failure):
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
446 error_ui = xml_tools.XMLUI("popup", title=D_("Error"))
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
447 error_ui.addText(D_("Your password could not be changed: %s") % failure.getErrorMessage())
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
448 return defer.succeed({'xmlui': error_ui.toXml()})
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
449
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
450 d = ProsodyRegisterProtocol.prosodyctl(self, 'passwd', password, profile=profile)
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
451 d.addCallbacks(passwordChanged, errback)
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
452 return d
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
453
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
454 def __deleteAccount(self, profile):
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
455 """Ask for a confirmation before deleting the XMPP account and SàT profile
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
456 @param profile
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
457 """
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
458 form_ui = xml_tools.XMLUI("form", title=D_("Delete your account?"), submit_id=self.__delete_account_id)
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
459 form_ui.addText(D_("If you confirm this dialog, you will be disconnected and then your XMPP account AND your SàT profile will both be DELETED."))
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
460 target = D_('contact list, messages history, blog posts and comments' if 'GROUPBLOG' in self.host.plugins else D_('contact list and messages history'))
987
3a96920c07b7 core, frontends: unify the roster management UIs in sat/stdui/ui_contact_list.py
souliane <souliane@mailoo.org>
parents: 954
diff changeset
461 form_ui.addText(D_("All your data stored on %(server)s, including your %(target)s will be erased.") % {'server': self.getNewAccountDomain(), 'target': target})
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
462 form_ui.addText(D_("There is no other confirmation dialog, this is the very last one! Are you sure?"))
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
463 return {'xmlui': form_ui.toXml()}
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
464
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
465 def __deleteAccountCb(self, data, profile):
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
466 """Actually delete the XMPP account and SàT profile
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
467 @param data
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
468 @param profile
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
469 """
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
470 def userDeleted(result):
934
34dd9287dfe5 plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents: 895
diff changeset
471 client = self.host.profiles[profile]
34dd9287dfe5 plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents: 895
diff changeset
472
34dd9287dfe5 plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents: 895
diff changeset
473 for jid_ in client.roster._jids: # empty roster
34dd9287dfe5 plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents: 895
diff changeset
474 client.presence.unsubscribe(jid_)
34dd9287dfe5 plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents: 895
diff changeset
475
34dd9287dfe5 plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents: 895
diff changeset
476 for jid_ in self.host.memory.getWaitingSub(profile): # delete waiting subscriptions
34dd9287dfe5 plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents: 895
diff changeset
477 self.host.memory.delWaitingSub(jid_)
34dd9287dfe5 plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents: 895
diff changeset
478
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
479 delete_profile = lambda: self.host.memory.asyncDeleteProfile(profile, force=True)
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
480 if 'GROUPBLOG' in self.host.plugins:
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
481 d = self.host.plugins['GROUPBLOG'].deleteAllGroupBlogsAndComments(profile_key=profile)
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
482 d.addCallback(lambda dummy: delete_profile())
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
483 else:
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
484 delete_profile()
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
485
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
486 return defer.succeed({})
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
487
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
488 def errback(failure):
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
489 error_ui = xml_tools.XMLUI("popup", title=D_("Error"))
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
490 error_ui.addText(D_("Your XMPP account could not be deleted: %s") % failure.getErrorMessage())
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
491 return defer.succeed({'xmlui': error_ui.toXml()})
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
492
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
493 d = ProsodyRegisterProtocol.prosodyctl(self, 'deluser', profile=profile)
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
494 d.addCallbacks(userDeleted, errback)
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
495 return d
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
496
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
497 def __deleteBlogPosts(self, posts, comments, profile):
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
498 """Ask for a confirmation before deleting the blog posts
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
499 @param posts: delete all posts of the user (and their comments)
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
500 @param comments: delete all the comments of the user on other's posts
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
501 @param data
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
502 @param profile
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
503 """
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
504 if posts:
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
505 if comments: # delete everything
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
506 form_ui = xml_tools.XMLUI("form", title=D_("Delete all your (micro-)blog posts and comments?"), submit_id=self.__delete_posts_comments_id)
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
507 form_ui.addText(D_("If you confirm this dialog, all the (micro-)blog data you submitted will be erased."))
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
508 form_ui.addText(D_("These are the public and private posts and comments you sent to any group."))
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
509 form_ui.addText(D_("There is no other confirmation dialog, this is the very last one! Are you sure?"))
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
510 else: # delete only the posts
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
511 form_ui = xml_tools.XMLUI("form", title=D_("Delete all your (micro-)blog posts?"), submit_id=self.__delete_posts_id)
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
512 form_ui.addText(D_("If you confirm this dialog, all the public and private posts you sent to any group will be erased."))
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
513 form_ui.addText(D_("There is no other confirmation dialog, this is the very last one! Are you sure?"))
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
514 elif comments: # delete only the comments
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
515 form_ui = xml_tools.XMLUI("form", title=D_("Delete all your (micro-)blog comments?"), submit_id=self.__delete_comments_id)
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
516 form_ui.addText(D_("If you confirm this dialog, all the public and private comments you made on other people's posts will be erased."))
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
517 form_ui.addText(D_("There is no other confirmation dialog, this is the very last one! Are you sure?"))
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
518
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
519 return {'xmlui': form_ui.toXml()}
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
520
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
521 def __deleteBlogPostsCb(self, posts, comments, data, profile):
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
522 """Actually delete the XMPP account and SàT profile
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
523 @param posts: delete all posts of the user (and their comments)
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
524 @param comments: delete all the comments of the user on other's posts
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
525 @param profile
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
526 """
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
527 if posts:
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
528 if comments:
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
529 target = D_('blog posts and comments')
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
530 d = self.host.plugins['GROUPBLOG'].deleteAllGroupBlogsAndComments(profile_key=profile)
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
531 else:
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
532 target = D_('blog posts')
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
533 d = self.host.plugins['GROUPBLOG'].deleteAllGroupBlogs(profile_key=profile)
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
534 elif comments:
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
535 target = D_('comments')
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
536 d = self.host.plugins['GROUPBLOG'].deleteAllGroupBlogsComments(profile_key=profile)
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
537
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
538 def deleted(result):
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
539 ui = xml_tools.XMLUI("popup", title=D_("Deletion confirmation"))
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
540 # TODO: change the message when delete/retract notifications are done with XEP-0060
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
541 ui.addText(D_("Your %(target)s have been deleted.") % {'target': target})
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
542 ui.addText(D_("Known issue of the demo version: you need to refresh the page to make the deleted posts actually disappear."))
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
543 return defer.succeed({'xmlui': ui.toXml()})
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
544
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
545 def errback(failure):
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
546 error_ui = xml_tools.XMLUI("popup", title=D_("Error"))
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
547 error_ui.addText(D_("Your %(target)s could not be deleted: %(message)s") % {'target': target, 'message': failure.getErrorMessage()})
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
548 return defer.succeed({'xmlui': error_ui.toXml()})
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
549
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
550 d.addCallbacks(deleted, errback)
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
551 return d
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
552
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
553 def asyncConnectWithXMPPCredentials(self, jid_s, password):
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
554 """Create and connect a new SàT profile using the given XMPP credentials.
1696
9a7a27c44611 plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents: 1691
diff changeset
555
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
556 Re-use given JID and XMPP password for the profile name and profile password.
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
557 @param jid_s (unicode): JID
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
558 @param password (unicode): XMPP password
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
559 @return Deferred(bool)
1696
9a7a27c44611 plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents: 1691
diff changeset
560 @raise exceptions.PasswordError, exceptions.ConflictError
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
561 """
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
562 try: # be sure that the profile doesn't exist yet
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
563 self.host.memory.getProfileName(jid_s)
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
564 except exceptions.ProfileUnknownError:
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
565 pass
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
566 else:
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
567 raise exceptions.ConflictError
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
568
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
569 d = self.registerAccount(None, password, jid_s, jid_s)
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
570 d.addCallback(lambda dummy: self.host.memory.getProfileName(jid_s)) # checks if the profile has been successfuly created
1725
c1be6363bfab core, plugin misc_account: set XMPP connection max retries to 0 when checking if an external account exists
souliane <souliane@mailoo.org>
parents: 1713
diff changeset
571 d.addCallback(self.host.asyncConnect, password, 0)
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
572
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
573 def removeProfile(failure): # profile has been successfully created but the XMPP credentials are wrong!
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
574 log.debug("Removing previously auto-created profile: %s" % failure.getErrorMessage())
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
575 self.host.memory.asyncDeleteProfile(jid_s)
1696
9a7a27c44611 plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents: 1691
diff changeset
576 raise failure
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
577
1726
2ebe66a96d05 plugin misc_account: auto add some contacts at profile creation
souliane <souliane@mailoo.org>
parents: 1725
diff changeset
578 d.addCallback(self.autoAddContacts(password, jid_s))
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
579 d.addErrback(removeProfile)
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
580 return d