Mercurial > libervia-backend
annotate src/plugins/plugin_misc_account.py @ 1727:68e498b3367e
reverted revision 2ebe66a96d05
author | souliane <souliane@mailoo.org> |
---|---|
date | Tue, 08 Dec 2015 16:55:54 +0100 |
parents | 2ebe66a96d05 |
children | 9037161e28f0 |
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 | 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 |
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
30 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
|
31 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
|
32 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
|
33 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
|
34 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
|
35 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
36 import random |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
37 |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
38 |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
39 PLUGIN_INFO = { |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
40 "name": "Account Plugin", |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
41 "import_name": "MISC-ACCOUNT", |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
42 "type": "MISC", |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
43 "protocols": [], |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
44 "dependencies": [], |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
45 "recommendations": ['GROUPBLOG'], |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
46 "main": "MiscAccount", |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
47 "handler": "no", |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
48 "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
|
49 } |
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
50 |
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
|
51 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
|
52 |
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 # 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
|
54 # 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
|
55 # 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
|
56 |
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
|
57 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
|
58 "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
|
59 "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
|
60 "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
|
61 "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
|
62 "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
|
63 "prosodyctl": "prosodyctl", |
1727
68e498b3367e
reverted revision 2ebe66a96d05
souliane <souliane@mailoo.org>
parents:
1726
diff
changeset
|
64 "reserved_list": ['libervia'] # profiles which can't be used |
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
|
65 } |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
66 |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
67 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
68 class PasswordsMatchingError(Exception): |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
69 pass |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
70 |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
71 |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
72 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
|
73 """ Try to register an account with prosody """ |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
74 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
75 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
|
76 """ |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
77 @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
|
78 @param deferred |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
79 """ |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
80 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
|
81 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
|
82 self.data = '' |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
83 |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
84 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
|
85 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
|
86 return |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
87 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
|
88 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
|
89 |
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
90 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
|
91 self.data += data |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
92 |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
93 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
|
94 self.data += data |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
95 |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
96 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
|
97 if (reason.value.exitCode == 0): |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
987
diff
changeset
|
98 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
|
99 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
|
100 else: |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
987
diff
changeset
|
101 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
|
102 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
|
103 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
104 @classmethod |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
105 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
|
106 """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
|
107 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
108 @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
|
109 @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
|
110 @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
|
111 @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
|
112 @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
|
113 """ |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
114 d = defer.Deferred() |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
115 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
|
116 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
|
117 # 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
|
118 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
|
119 return d |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
120 |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
121 |
588
beaf6bec2fcd
Remove every old-style class.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
587
diff
changeset
|
122 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
|
123 """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
|
124 #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
|
125 # 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
|
126 |
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
127 def __init__(self, host): |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
987
diff
changeset
|
128 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
|
129 self.host = host |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
130 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
|
131 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
|
132 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
|
133 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
|
134 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
|
135 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
|
136 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
|
137 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
|
138 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
|
139 else: |
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
140 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
|
141 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
|
142 |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
143 self._sessions = Sessions() |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
144 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
145 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
|
146 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
|
147 |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
148 def deleteBlogCallback(posts, comments): |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
149 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
|
150 |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
151 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
|
152 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
|
153 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
|
154 |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
155 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
|
156 |
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
|
157 def getConfig(self, name): |
1234
9c17bd37e6e5
core: better management of default value in getConfig
Goffi <goffi@goffi.org>
parents:
1212
diff
changeset
|
158 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
|
159 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
160 def generatePassword(self): |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
161 """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
|
162 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
163 @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
|
164 """ |
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
165 random.seed() |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
166 #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
|
167 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
|
168 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
|
169 |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
170 def _registerAccount(self, email, password, profile): |
1727
68e498b3367e
reverted revision 2ebe66a96d05
souliane <souliane@mailoo.org>
parents:
1726
diff
changeset
|
171 return self.registerAccount(email, password, None, profile) |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
172 |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
173 def registerAccount(self, email, password, jid_s, profile): |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
174 """Register a new profile and its associated XMPP account. |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
175 |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
176 @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
|
177 @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
|
178 while be used for profile *and* XMPP account |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
179 @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
|
180 - 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
|
181 - 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
|
182 @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
|
183 @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
|
184 """ |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
185 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
|
186 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
|
187 |
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
|
188 if profile.lower() in self.getConfig('reserved_list'): |
751
1def5b7edf9f
core, bridge: better GenericException handling
Goffi <goffi@goffi.org>
parents:
733
diff
changeset
|
189 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
|
190 |
1031
e90125d07072
plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
191 d = self.host.memory.asyncCreateProfile(profile, password) |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
192 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
|
193 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
|
194 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
195 def profileRegistered(self, email, password, jid_s, profile): |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
196 """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
|
197 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
198 @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
|
199 @param password (unicode): password chosen by the user |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
200 @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
|
201 - 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
|
202 - 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
|
203 @param profile |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
204 @return: Deferred |
1031
e90125d07072
plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
205 """ |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
206 # 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
|
207 if jid_s: |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
208 d = defer.succeed(None) |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
209 else: |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
210 d = ProsodyRegisterProtocol.prosodyctl(self, 'adduser', password, profile) |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
211 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
|
212 if email: |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
213 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
|
214 |
f25ec9fd7cc4
plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents:
1044
diff
changeset
|
215 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
|
216 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
|
217 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
|
218 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
|
219 |
f25ec9fd7cc4
plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents:
1044
diff
changeset
|
220 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
|
221 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
|
222 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
|
223 |
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
|
224 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
|
225 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
|
226 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
|
227 d.addErrback(removeProfile) |
733 | 228 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
|
229 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
230 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
|
231 # 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
|
232 |
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
|
233 _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
|
234 _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
|
235 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
|
236 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
237 |
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
|
238 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
|
239 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
|
240 |
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
|
241 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
|
242 # 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
|
243 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
|
244 |
1433
5d42e2219d7c
plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
245 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
|
246 |
1433
5d42e2219d7c
plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
247 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
|
248 |
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
|
249 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
|
250 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
251 Login on libervia.org: %(profile)s |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
252 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
|
253 |
1433
5d42e2219d7c
plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
254 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
|
255 |
1433
5d42e2219d7c
plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
256 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
|
257 |
1433
5d42e2219d7c
plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
258 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
|
259 - make yourself visible in "Service / Directory subscription". |
94c450972346
primitivus and plugins: renamed a few menus:
souliane <souliane@mailoo.org>
parents:
1696
diff
changeset
|
260 - 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
|
261 |
1433
5d42e2219d7c
plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
262 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
|
263 |
1433
5d42e2219d7c
plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
264 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
|
265 http://www.salut-a-toi.org |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
266 """) % {'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
|
267 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
|
268 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
|
269 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
|
270 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
|
271 |
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
|
272 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
|
273 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
|
274 |
1433
5d42e2219d7c
plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
275 # email to the administrator |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
276 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
|
277 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
|
278 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
|
279 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
|
280 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
|
281 |
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
|
282 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
|
283 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
|
284 return defer.DeferredList([d_user, d_admin]) |
672
712e3782af12
plugin misc_account: added method getNewAccountDomain
souliane <souliane@mailoo.org>
parents:
644
diff
changeset
|
285 |
987
3a96920c07b7
core, frontends: unify the roster management UIs in sat/stdui/ui_contact_list.py
souliane <souliane@mailoo.org>
parents:
954
diff
changeset
|
286 def getNewAccountDomain(self): |
672
712e3782af12
plugin misc_account: added method getNewAccountDomain
souliane <souliane@mailoo.org>
parents:
644
diff
changeset
|
287 """@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
|
288 return self.getConfig('new_account_domain') |
672
712e3782af12
plugin misc_account: added method getNewAccountDomain
souliane <souliane@mailoo.org>
parents:
644
diff
changeset
|
289 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
290 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
|
291 """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
|
292 @param menu_data |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
293 @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
|
294 @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
|
295 """ |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
296 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
|
297 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
|
298 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
299 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
|
300 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
|
301 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
|
302 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
|
303 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
|
304 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
|
305 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
|
306 |
1713
0d972af37ff5
plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents:
1707
diff
changeset
|
307 # FIXME: uncomment and fix these features |
0d972af37ff5
plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents:
1707
diff
changeset
|
308 """ |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
309 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
|
310 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
|
311 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
|
312 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
|
313 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
|
314 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
|
315 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
|
316 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
|
317 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
318 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
|
319 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
|
320 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
|
321 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
|
322 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
|
323 """ |
0d972af37ff5
plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents:
1707
diff
changeset
|
324 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
325 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
|
326 |
1031
e90125d07072
plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
327 @defer.inlineCallbacks |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
328 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
|
329 """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
|
330 @param data |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
331 @param profile |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
332 """ |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
333 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
|
334 |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
335 @defer.inlineCallbacks |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
336 def verify(attempt): |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
337 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
|
338 defer.returnValue(auth) |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
339 |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
340 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
|
341 if not message: |
1691
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
342 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
|
343 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
|
344 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
|
345 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
|
346 |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
347 # check for account deletion |
1713
0d972af37ff5
plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents:
1707
diff
changeset
|
348 # FIXME: uncomment and fix these features |
0d972af37ff5
plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents:
1707
diff
changeset
|
349 """ |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
350 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
|
351 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
|
352 if delete_checkbox == 'true': |
1691
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
353 verified = yield verify(delete_passwd) |
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
354 assert isinstance(verified, bool) |
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
355 if verified: |
1031
e90125d07072
plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
356 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
|
357 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
|
358 |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
359 # 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
|
360 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
|
361 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
|
362 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
|
363 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
|
364 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
|
365 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
|
366 if posts or comments: |
1691
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
367 verified = yield verify(delete_posts_passwd) |
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
368 assert isinstance(verified, bool) |
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
369 if verified: |
1031
e90125d07072
plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
370 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
|
371 defer.returnValue(error_ui()) |
1713
0d972af37ff5
plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents:
1707
diff
changeset
|
372 """ |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
373 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
374 # 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
|
375 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
|
376 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
|
377 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
|
378 if new_passwd1 or new_passwd2: |
1691
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
379 verified = yield verify(current_passwd) |
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
380 assert isinstance(verified, bool) |
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
381 if verified: |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
382 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
|
383 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
|
384 defer.returnValue(data) |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
385 else: |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
386 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
|
387 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
|
388 |
1031
e90125d07072
plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
389 defer.returnValue({}) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
390 |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
391 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
|
392 """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
|
393 |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
394 @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
|
395 @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
|
396 """ |
1212
628e320eab1f
memory: Sessions.newSession can be called with a forced session ID
souliane <souliane@mailoo.org>
parents:
1091
diff
changeset
|
397 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
|
398 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
|
399 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
|
400 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
|
401 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
|
402 |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
403 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
|
404 """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
|
405 @param data (dict) |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
406 @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
|
407 """ |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
408 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
|
409 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
|
410 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
411 def passwordChanged(result): |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
412 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
|
413 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
|
414 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
|
415 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
|
416 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
|
417 |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
418 def errback(failure): |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
419 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
|
420 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
|
421 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
|
422 |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
423 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
|
424 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
|
425 return d |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
426 |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
427 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
|
428 """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
|
429 @param profile |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
430 """ |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
431 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
|
432 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
|
433 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
|
434 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
|
435 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
|
436 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
|
437 |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
438 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
|
439 """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
|
440 @param data |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
441 @param profile |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
442 """ |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
443 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
|
444 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
|
445 |
34dd9287dfe5
plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents:
895
diff
changeset
|
446 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
|
447 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
|
448 |
34dd9287dfe5
plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents:
895
diff
changeset
|
449 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
|
450 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
|
451 |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
452 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
|
453 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
|
454 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
|
455 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
|
456 else: |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
457 delete_profile() |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
458 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
459 return defer.succeed({}) |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
460 |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
461 def errback(failure): |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
462 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
|
463 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
|
464 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
|
465 |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
466 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
|
467 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
|
468 return d |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
469 |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
470 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
|
471 """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
|
472 @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
|
473 @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
|
474 @param data |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
475 @param profile |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
476 """ |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
477 if posts: |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
478 if comments: # delete everything |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
479 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
|
480 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
|
481 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
|
482 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
|
483 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
|
484 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
|
485 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
|
486 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
|
487 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
|
488 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
|
489 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
|
490 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
|
491 |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
492 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
|
493 |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
494 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
|
495 """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
|
496 @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
|
497 @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
|
498 @param profile |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
499 """ |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
500 if posts: |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
501 if comments: |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
502 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
|
503 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
|
504 else: |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
505 target = D_('blog posts') |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
506 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
|
507 elif comments: |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
508 target = D_('comments') |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
509 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
|
510 |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
511 def deleted(result): |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
512 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
|
513 # 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
|
514 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
|
515 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
|
516 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
|
517 |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
518 def errback(failure): |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
519 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
|
520 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
|
521 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
|
522 |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
523 d.addCallbacks(deleted, errback) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
524 return d |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
525 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
526 def asyncConnectWithXMPPCredentials(self, jid_s, password): |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
527 """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
|
528 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
529 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
|
530 @param jid_s (unicode): JID |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
531 @param password (unicode): XMPP password |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
532 @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
|
533 @raise exceptions.PasswordError, exceptions.ConflictError |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
534 """ |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
535 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
|
536 self.host.memory.getProfileName(jid_s) |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
537 except exceptions.ProfileUnknownError: |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
538 pass |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
539 else: |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
540 raise exceptions.ConflictError |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
541 |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
542 d = self.registerAccount(None, password, jid_s, jid_s) |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
543 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
|
544 d.addCallback(self.host.asyncConnect, password, 0) |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
545 |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
546 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
|
547 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
|
548 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
|
549 raise failure |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
550 |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
551 d.addErrback(removeProfile) |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
552 return d |