annotate sat/plugins/plugin_misc_account.py @ 2617:81b70eeb710f

quick_frontend(contact list): refactored update: update is now called with appropriate constant value (C.UPDATE_ADD, C.UPDATE_DELETE, C.UPDATE_MODIFY and so on) when a widget change visibility according to current options. Before it was linked to cache only (C.UPDATE_ADD was only called when contact was first added to cache). This make widget handling in frontends more easy. Renamed entityToShow to entityVisible, which seems to correspond better. Started reducing lines lenght to 90 chars as a test. May become the new coding style soon.
author Goffi <goffi@goffi.org>
date Sun, 24 Jun 2018 21:59:29 +0200
parents 26edcf3a30eb
children 56f94936df1e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1934
2daf7b4c6756 use of /usr/bin/env instead of /usr/bin/python in shebang
Goffi <goffi@goffi.org>
parents: 1916
diff changeset
1 #!/usr/bin/env python2
569
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)
2483
0046283a285d dates update
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
5 # Copyright (C) 2009-2018 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
1855
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
28 import ConfigParser
2176
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
29 from twisted.internet import defer
644
53de6954e94e plugin misc_account: fix for sending a failure message
souliane <souliane@mailoo.org>
parents: 641
diff changeset
30 from twisted.python.failure import Failure
2176
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
31 from twisted.words.protocols.jabber import jid
2181
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
32 from sat.tools import email as sat_email
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
33
2176
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
34 # FIXME: this plugin code is old and need a cleaning
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
35 # TODO: account deletion/password change need testing
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
36
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
37
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
38 PLUGIN_INFO = {
2145
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2144
diff changeset
39 C.PI_NAME: "Account Plugin",
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2144
diff changeset
40 C.PI_IMPORT_NAME: "MISC-ACCOUNT",
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2144
diff changeset
41 C.PI_TYPE: "MISC",
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2144
diff changeset
42 C.PI_PROTOCOLS: [],
2176
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
43 C.PI_DEPENDENCIES: ["XEP-0077"],
2145
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2144
diff changeset
44 C.PI_RECOMMENDATIONS: ['GROUPBLOG'],
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2144
diff changeset
45 C.PI_MAIN: "MiscAccount",
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2144
diff changeset
46 C.PI_HANDLER: "no",
33c8c4973743 core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents: 2144
diff changeset
47 C.PI_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
48 }
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
49
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
50 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
51
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 # 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
53 # 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
54 # 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
55
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
56 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
57 "email_server": "localhost",
1855
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
58 "email_sender_domain": "",
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
59 "email_port": 25,
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
60 "email_username": "",
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
61 "email_password": "",
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
62 "email_starttls": "false",
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
63 "email_auth": "false",
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
64 "email_admins_list": [],
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
65 "admin_email": "",
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
66 "new_account_server": "localhost",
2181
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
67 "new_account_domain": "", # use xmpp_domain if not found
1727
68e498b3367e reverted revision 2ebe66a96d05
souliane <souliane@mailoo.org>
parents: 1726
diff changeset
68 "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
69 }
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
70
2181
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
71 WELCOME_MSG = D_(u"""Welcome to Libervia, the web interface of Salut à Toi.
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
72
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
73 Your account on {domain} has been successfully created.
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
74 This is a demonstration version to show you the current status of the project.
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
75 It is still under development, please keep it in mind!
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
76
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
77 Here is your connection information:
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
78
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
79 Login on {domain}: {profile}
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
80 Jabber ID (JID): {jid}
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
81 Your password has been chosen by yourself during registration.
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
82
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
83 In the beginning, you have nobody to talk to. To find some contacts, you may use the users' directory:
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
84 - make yourself visible in "Service / Directory subscription".
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
85 - search for people with "Contacts" / Search directory".
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
86
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
87 Any feedback welcome. Thank you!
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
88
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
89 Salut à Toi association
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
90 https://www.salut-a-toi.org
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
91 """)
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
92
2261
8be4f5769bf7 plugin account: print a warning and use "example.net" as default instead or raising an error when xmpp_domain is not set
Goffi <goffi@goffi.org>
parents: 2181
diff changeset
93 DEFAULT_DOMAIN = u"example.net"
8be4f5769bf7 plugin account: print a warning and use "example.net" as default instead or raising an error when xmpp_domain is not set
Goffi <goffi@goffi.org>
parents: 2181
diff changeset
94
594
e629371a28d3 Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
95
2176
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
96 class MiscAccount(object):
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
97 """Account plugin: create a SàT + XMPP account, used by Libervia"""
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
98 # XXX: This plugin was initialy a Q&D one used for the demo.
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
99 # TODO: cleaning, separate email handling, more configuration/tests, fixes
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
100
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
101
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
102 def __init__(self, host):
993
301b342c697a core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents: 987
diff changeset
103 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
104 self.host = host
594
e629371a28d3 Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 588
diff changeset
105 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
106 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
107 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
108 host.bridge.addMethod("asyncConnectWithXMPPCredentials", ".plugin", in_sign='ss', out_sign='b', method=self.asyncConnectWithXMPPCredentials, async=True)
569
06faf5bffbc0 plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff changeset
109
1892
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
110 self.fixEmailAdmins()
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
111 self._sessions = Sessions()
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
112
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
113 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
114 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
115
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
116 def deleteBlogCallback(posts, comments):
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
117 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
118
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
119 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
120 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
121 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
122
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
123 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
124
1892
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
125
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
126 # FIXME: remove this after some time, when the deprecated parameter is really abandoned
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
127 def fixEmailAdmins(self):
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
128 """Handle deprecated config option "admin_email" to fix the admin emails list"""
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
129 admin_email = self.getConfig('admin_email')
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
130 if not admin_email:
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
131 return
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
132 log.warning(u"admin_email parameter is deprecated, please use email_admins_list instead")
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
133 param_name = "email_admins_list"
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
134 try:
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
135 section = ""
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
136 value = self.host.memory.getConfig(section, param_name, Exception)
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
137 except (ConfigParser.NoOptionError, ConfigParser.NoSectionError):
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
138 section = CONFIG_SECTION
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
139 value = self.host.memory.getConfig(section, param_name, default_conf[param_name])
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
140
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
141 value = set(value)
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
142 value.add(admin_email)
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
143 self.host.memory.config.set(section, param_name, ",".join(value))
8a5b178ff28b plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents: 1856
diff changeset
144
2181
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
145 def getConfig(self, name, section=CONFIG_SECTION):
1855
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
146 if name.startswith("email_"):
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
147 # XXX: email_ parameters were first in [plugin account] section
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
148 # but as it make more sense to have them in common with other plugins,
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
149 # they can now be in [DEFAULT] section
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
150 try:
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
151 value = self.host.memory.getConfig(None, name, Exception)
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
152 except (ConfigParser.NoOptionError, ConfigParser.NoSectionError):
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
153 pass
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
154 else:
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
155 return value
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
156
2181
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
157 if section == CONFIG_SECTION:
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
158 default = default_conf[name]
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
159 else:
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
160 default = None
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
161 return self.host.memory.getConfig(section, name, default)
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
162
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
163 def _registerAccount(self, email, password, profile):
1727
68e498b3367e reverted revision 2ebe66a96d05
souliane <souliane@mailoo.org>
parents: 1726
diff changeset
164 return self.registerAccount(email, password, None, profile)
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
165
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
166 def registerAccount(self, email, password, jid_s, profile):
1907
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
167 """Register a new profile, its associated XMPP account, send the confirmation emails.
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
168
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
169 @param email (unicode): where to send to confirmation email to
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
170 @param password (unicode): password chosen by the user
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
171 while be used for profile *and* XMPP account
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
172 @param jid_s (unicode): JID to re-use or to register:
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
173 - non empty value: bind this JID to the new sat profile
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
174 - None or "": register a new JID on the local XMPP server
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
175 @param profile
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
176 @return Deferred
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
177 """
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
178 d = self.createProfile(password, jid_s, profile)
1916
72837638f076 plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents: 1907
diff changeset
179 d.addCallback(lambda dummy: self.sendEmails(email, profile))
1907
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
180 return d
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
181
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
182 def createProfile(self, password, jid_s, profile):
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
183 """Register a new profile and its associated XMPP account.
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
184
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
185 @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
186 while be used for profile *and* XMPP account
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
187 @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
188 - 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
189 - 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
190 @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
191 @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
192 """
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
193 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
194 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
195
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
196 if profile.lower() in self.getConfig('reserved_list'):
751
1def5b7edf9f core, bridge: better GenericException handling
Goffi <goffi@goffi.org>
parents: 733
diff changeset
197 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
198
2144
1d3f73e065e1 core, jp: component handling + client handling refactoring:
Goffi <goffi@goffi.org>
parents: 2142
diff changeset
199 d = self.host.memory.createProfile(profile, password)
1907
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
200 d.addCallback(lambda dummy: self.profileCreated(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
201 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
202
1907
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
203 def profileCreated(self, password, jid_s, profile):
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
204 """Create the XMPP account and set the profile connection parameters.
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
205
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
206 @param password (unicode): password chosen by the user
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
207 @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
208 - 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
209 - 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
210 @param profile
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
211 @return: Deferred
1031
e90125d07072 plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents: 993
diff changeset
212 """
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
213 if jid_s:
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
214 d = defer.succeed(None)
2176
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
215 jid_ = jid.JID(jid_s)
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
216 else:
2181
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
217 jid_s = profile + u"@" + self.getNewAccountDomain()
2176
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
218 jid_ = jid.JID(jid_s)
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
219 d = self.host.plugins['XEP-0077'].registerNewAccount(jid_, password)
1729
9037161e28f0 plugin misc_account: send email to the admins when a new profile is created for an external XMPP account
souliane <souliane@mailoo.org>
parents: 1727
diff changeset
220
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
221 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
222 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
223 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
224 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
225
f25ec9fd7cc4 plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents: 1044
diff changeset
226 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
227 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
228 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
229
1696
9a7a27c44611 plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents: 1691
diff changeset
230 d.addCallback(lambda dummy: self.host.memory.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
231 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
232 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
233 d.addErrback(removeProfile)
733
fe05afc3f0df reverted last commit
Goffi <goffi@goffi.org>
parents: 732
diff changeset
234 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
235
2181
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
236 def _sendEmailEb(self, failure_, email):
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
237 # TODO: return error code to user
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
238 log.error(_(u"Failed to send account creation confirmation to {email}: {msg}").format(
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
239 email = email,
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
240 msg = failure_))
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
241
1916
72837638f076 plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents: 1907
diff changeset
242 def sendEmails(self, email, profile):
1433
5d42e2219d7c plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents: 1409
diff changeset
243 # 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
244
2181
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
245 domain = self.getNewAccountDomain()
1898
31b8a58cfcf5 plugin misc_account: fixes sending email (twisted.mail.smtp.sendmail doesn't want unicode)
souliane <souliane@mailoo.org>
parents: 1897
diff changeset
246
31b8a58cfcf5 plugin misc_account: fixes sending email (twisted.mail.smtp.sendmail doesn't want unicode)
souliane <souliane@mailoo.org>
parents: 1897
diff changeset
247 # email to the administrators
1855
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
248 admins_emails = self.getConfig('email_admins_list')
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
249 if not admins_emails:
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
250 log.warning(u"No known admin email, we can't send email to administrator(s).\nPlease fill email_admins_list parameter")
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
251 d_admin = defer.fail(exceptions.DataError("no admin email"))
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
252 else:
2181
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
253 subject = _(u'New Libervia account created')
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
254 body = (u"""New account created: {profile} [{email}]""".format(
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
255 profile = profile,
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
256 # there is no email when an existing XMPP account is used
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
257 email = email or u"<no email>"))
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
258 d_admin = sat_email.sendEmail(self.host, admins_emails, subject, body)
1729
9037161e28f0 plugin misc_account: send email to the admins when a new profile is created for an external XMPP account
souliane <souliane@mailoo.org>
parents: 1727
diff changeset
259
2181
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
260 admins_emails_txt = u', '.join([u'<' + addr + u'>' for addr in admins_emails])
1855
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
261 d_admin.addCallbacks(lambda dummy: log.debug(u"Account creation notification sent to admin(s) {}".format(admins_emails_txt)),
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
262 lambda dummy: log.error(u"Failed to send account creation notification to admin {}".format(admins_emails_txt)))
1729
9037161e28f0 plugin misc_account: send email to the admins when a new profile is created for an external XMPP account
souliane <souliane@mailoo.org>
parents: 1727
diff changeset
263 if not email:
2181
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
264 # TODO: if use register with an existing account, an XMPP message should be sent
1729
9037161e28f0 plugin misc_account: send email to the admins when a new profile is created for an external XMPP account
souliane <souliane@mailoo.org>
parents: 1727
diff changeset
265 return d_admin
9037161e28f0 plugin misc_account: send email to the admins when a new profile is created for an external XMPP account
souliane <souliane@mailoo.org>
parents: 1727
diff changeset
266
2181
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
267 jid_s = self.host.memory.getParamA(u"JabberID", u"Connection", profile_key=profile)
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
268 subject = _(u'Your Libervia account has been created')
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
269 body = (_(WELCOME_MSG).format(profile=profile, jid=jid_s, domain=domain))
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
270
1804
33e73c70d78a plugin misc_account: add a FIXME comment
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
271 # XXX: this will not fail when the email address doesn't exist
33e73c70d78a plugin misc_account: add a FIXME comment
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
272 # FIXME: check email reception to validate email given by the user
33e73c70d78a plugin misc_account: add a FIXME comment
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
273 # FIXME: delete the profile if the email could not been sent?
2181
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
274 d_user = sat_email.sendEmail(self.host, [email], subject, body)
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
275 d_user.addCallbacks(lambda dummy: log.debug(u"Account creation confirmation sent to <{}>".format(email)),
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
276 self._sendEmailEb)
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
277 return defer.DeferredList([d_user, d_admin])
672
712e3782af12 plugin misc_account: added method getNewAccountDomain
souliane <souliane@mailoo.org>
parents: 644
diff changeset
278
987
3a96920c07b7 core, frontends: unify the roster management UIs in sat/stdui/ui_contact_list.py
souliane <souliane@mailoo.org>
parents: 954
diff changeset
279 def getNewAccountDomain(self):
2181
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
280 """get the domain that will be set to new account"""
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
281
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
282 domain = self.getConfig('new_account_domain') or self.getConfig('xmpp_domain', None)
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
283 if not domain:
2261
8be4f5769bf7 plugin account: print a warning and use "example.net" as default instead or raising an error when xmpp_domain is not set
Goffi <goffi@goffi.org>
parents: 2181
diff changeset
284 log.warning(_(u'xmpp_domain needs to be set in sat.conf. Using "{default}" meanwhile').format(default=DEFAULT_DOMAIN))
8be4f5769bf7 plugin account: print a warning and use "example.net" as default instead or raising an error when xmpp_domain is not set
Goffi <goffi@goffi.org>
parents: 2181
diff changeset
285 return DEFAULT_DOMAIN
2181
968b0d13bcc7 plugin account, tools: some cleaning account + email and password tools:
Goffi <goffi@goffi.org>
parents: 2177
diff changeset
286 return domain
672
712e3782af12 plugin misc_account: added method getNewAccountDomain
souliane <souliane@mailoo.org>
parents: 644
diff changeset
287
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
288 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
289 """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
290 @param menu_data
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
291 @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
292 @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
293 """
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
294 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
295 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
296
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.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
298 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
299 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
300 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
301 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
302 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
303 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
304
1855
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
305 # FIXME: uncomment and fix these features
1713
0d972af37ff5 plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents: 1707
diff changeset
306 """
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
307 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
308 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
309 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
310 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
311 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
312 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
313 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
314 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
315
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
316 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
317 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
318 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
319 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
320 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
321 """
0d972af37ff5 plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents: 1707
diff changeset
322
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
323 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
324
1031
e90125d07072 plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents: 993
diff changeset
325 @defer.inlineCallbacks
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
326 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
327 """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
328 @param data
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
329 @param profile
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
330 """
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
331 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
332
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
333 @defer.inlineCallbacks
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
334 def verify(attempt):
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
335 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
336 defer.returnValue(auth)
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
337
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
338 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
339 if not message:
1691
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
340 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
341 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
342 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
343 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
344
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
345 # check for account deletion
1855
1c9b2c184663 plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents: 1804
diff changeset
346 # FIXME: uncomment and fix these features
1713
0d972af37ff5 plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents: 1707
diff changeset
347 """
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
348 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
349 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
350 if delete_checkbox == 'true':
1691
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
351 verified = yield verify(delete_passwd)
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
352 assert isinstance(verified, bool)
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
353 if verified:
1031
e90125d07072 plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents: 993
diff changeset
354 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
355 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
356
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
357 # 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
358 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
359 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
360 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
361 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
362 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
363 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
364 if posts or comments:
1691
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
365 verified = yield verify(delete_posts_passwd)
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
366 assert isinstance(verified, bool)
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
367 if verified:
1031
e90125d07072 plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents: 993
diff changeset
368 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
369 defer.returnValue(error_ui())
1713
0d972af37ff5 plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents: 1707
diff changeset
370 """
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
371
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
372 # 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
373 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
374 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
375 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
376 if new_passwd1 or new_passwd2:
1691
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
377 verified = yield verify(current_passwd)
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
378 assert isinstance(verified, bool)
cec204c6360c plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents: 1653
diff changeset
379 if verified:
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
380 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
381 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
382 defer.returnValue(data)
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
383 else:
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
384 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
385 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
386
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({})
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
388
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
389 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
390 """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
391
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
392 @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
393 @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
394 """
1212
628e320eab1f memory: Sessions.newSession can be called with a forced session ID
souliane <souliane@mailoo.org>
parents: 1091
diff changeset
395 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
396 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
397 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
398 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
399 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
400
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
401 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
402 """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
403 @param data (dict)
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
404 @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
405 """
2176
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
406 client = self.host.getClient(profile)
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
407 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
408 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
409
2176
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
410 def passwordChanged(dummy):
1041
9095263011b6 plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents: 1040
diff changeset
411 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
412 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
413 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
414 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
415 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
416
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
417 def errback(failure):
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
418 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
419 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
420 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
421
2176
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
422 d = self.host.plugins['XEP-0077'].changePassword(client, password)
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
423 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
424 return d
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
425
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
426 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
427 """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
428 @param profile
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
429 """
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
430 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
431 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
432 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
433 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
434 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
435 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
436
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
437 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
438 """Actually delete the XMPP account and SàT profile
2176
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
439
895
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 """
2176
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
443 client = self.host.getClient(profile)
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
444 def userDeleted(dummy):
934
34dd9287dfe5 plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents: 895
diff changeset
445
2176
61128d260eef plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents: 2145
diff changeset
446 # FIXME: client should be disconnected at this point, so 2 next loop should be removed (to be confirmed)
934
34dd9287dfe5 plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents: 895
diff changeset
447 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
448 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
449
34dd9287dfe5 plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents: 895
diff changeset
450 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
451 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
452
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
453 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
454 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
455 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
456 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
457 else:
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
458 delete_profile()
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
459
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
460 return defer.succeed({})
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
461
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
462 def errback(failure):
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
463 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
464 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
465 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
466
2177
09cfec4d8d19 plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents: 2176
diff changeset
467 d = self.host.plugins['XEP-0077'].unregister(client, jid.JID(client.jid.host))
895
52ee240acc9c plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents: 870
diff changeset
468 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
469 return d
938
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
470
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
471 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
472 """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
473 @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
474 @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
475 @param data
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
476 @param profile
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
477 """
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
478 if posts:
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
479 if comments: # delete everything
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
480 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
481 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
482 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
483 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
484 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
485 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
486 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
487 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
488 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
489 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
490 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
491 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
492
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
493 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
494
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
495 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
496 """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
497 @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
498 @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
499 @param profile
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
500 """
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
501 if posts:
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
502 if comments:
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
503 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
504 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
505 else:
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
506 target = D_('blog posts')
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
507 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
508 elif comments:
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
509 target = D_('comments')
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
510 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
511
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
512 def deleted(result):
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
513 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
514 # 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
515 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
516 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
517 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
518
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
519 def errback(failure):
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
520 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
521 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
522 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
523
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
524 d.addCallbacks(deleted, errback)
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
525 return d
fc7e0828b18e plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents: 934
diff changeset
526
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
527 def asyncConnectWithXMPPCredentials(self, jid_s, password):
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
528 """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
529
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
530 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
531 @param jid_s (unicode): JID
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
532 @param password (unicode): XMPP password
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
533 @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
534 @raise exceptions.PasswordError, exceptions.ConflictError
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
535 """
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
536 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
537 self.host.memory.getProfileName(jid_s)
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
538 except exceptions.ProfileUnknownError:
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
539 pass
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
540 else:
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
541 raise exceptions.ConflictError
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
542
1907
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
543 d = self.createProfile(password, jid_s, jid_s)
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
544 d.addCallback(lambda dummy: self.host.memory.getProfileName(jid_s)) # checks if the profile has been successfuly created
2142
be96beb7ca14 core, bridge, frontends: renamed asyncConnect to connect, and added options parameters (not used yet)
Goffi <goffi@goffi.org>
parents: 1934
diff changeset
545 d.addCallback(self.host.connect, password, {}, 0)
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
546
1916
72837638f076 plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents: 1907
diff changeset
547
72837638f076 plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents: 1907
diff changeset
548 def connected(result):
72837638f076 plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents: 1907
diff changeset
549 self.sendEmails(None, profile=jid_s)
72837638f076 plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents: 1907
diff changeset
550 return result
72837638f076 plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents: 1907
diff changeset
551
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
552 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
553 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
554 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
555 raise failure
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
556
1907
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
557 # FIXME: we don't catch the case where the JID host is not an XMPP server, and the user
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
558 # has to wait until the DBUS timeout ; as a consequence, emails are sent to the admins
0b748ad46ede plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents: 1901
diff changeset
559 # and the profile is not deleted. When the host exists, removeProfile is well called.
1916
72837638f076 plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents: 1907
diff changeset
560 d.addCallbacks(connected, removeProfile)
1653
200efadcab76 plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents: 1433
diff changeset
561 return d