summaryrefslogtreecommitdiff
path: root/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/LoginController.js
Unidiff
Diffstat (limited to 'frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/LoginController.js') (more/less context) (ignore whitespace changes)
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/LoginController.js259
1 files changed, 259 insertions, 0 deletions
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/LoginController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/LoginController.js
new file mode 100644
index 0000000..d88af41
--- a/dev/null
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/LoginController.js
@@ -0,0 +1,259 @@
1/*
2
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz's Javascript Crypto Library.
6Javascript Crypto Library provides web developers with an extensive
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please
11refer to http://www.clipperz.com
12
13* Javascript Crypto Library is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version.
17
18* Javascript Crypto Library is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details.
22
23* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see
25 <http://www.gnu.org/licenses/>.
26
27*/
28
29Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
30
31Clipperz.PM.UI.Web.Controllers.LoginController = function(args) {
32 this._args = args || {};
33
34 this._loginPage = null;
35
36 this._newUserWizardController = null;
37 this._newUserCreationComponent = null;
38
39 return this;
40}
41
42MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.LoginController.prototype, {
43
44 'toString': function() {
45 return "Clipperz.PM.UI.Web.Controllers.LoginController";
46 },
47
48 'args': function () {
49 return this._args;
50 },
51
52 //-----------------------------------------------------------------------------
53
54 'loginPage': function() {
55 if (this._loginPage == null) {
56 this._loginPage = new Clipperz.PM.UI.Web.Components.LoginPage();
57
58 MochiKit.Signal.connect(this._loginPage, 'createNewAccountClick', this, 'handleCreateNewAccountClick')
59 }
60
61 return this._loginPage;
62 },
63
64 //-----------------------------------------------------------------------------
65
66 'run': function(args) {
67 varslot;
68 varloginPage;
69 varloginForm;
70
71 slot = args.slot;
72
73 loginForm =new Clipperz.PM.UI.Web.Components.LoginForm({'autocomplete': this.args()['autocomplete']});
74
75 slot.setContent(this.loginPage());
76 this.loginPage().slotNamed('loginForm').setContent(loginForm);
77
78 MochiKit.Signal.connect(loginForm, 'doLogin', MochiKit.Base.method(this, 'doLogin', loginForm));
79 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'doLogin', MochiKit.Base.method(this, 'doLogin', loginForm));
80 },
81
82 //-----------------------------------------------------------------------------
83
84 'doLogin': function(aLoginForm, anEvent) {
85 var deferredResult;
86 varparameters;
87 // varshouldUseOTP;
88 var loginProgress;
89 varuser;
90 var getPassphraseDelegate;
91
92 parameters = anEvent;
93 // shouldUseOTP = (typeof(parameters.passphrase) == 'undefined');
94
95 getPassphraseDelegate = MochiKit.Base.partial(MochiKit.Async.succeed, parameters.passphrase);
96 user = new Clipperz.PM.DataModel.User({'username':parameters.username, 'getPassphraseFunction':MochiKit.Base.method(Clipperz.PM.RunTime.mainController, 'getPassphrase')});
97
98 loginProgress = new Clipperz.PM.UI.Web.Components.LoginProgress();
99
100 deferredResult = new Clipperz.Async.Deferred("LoginController.doLogin", {trace:false});
101 deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'initProgress', {'steps':4});
102 deferredResult.addMethod(Clipperz.PM.RunTime.mainController, 'setPassphraseDelegate', getPassphraseDelegate);
103 deferredResult.addMethod(loginProgress, 'deferredShowModal', {deferredObject:deferredResult, openFromElement:aLoginForm.submitButtonElement()});
104 deferredResult.addMethod(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'deferredEntropyCollection');
105 // if (shouldUseOTP == false) {
106 deferredResult.addMethod(user, 'login');
107 // } else {
108 // deferredResult.addMethod(user, 'loginUsingOTP', parameters.username, parameters.otp);
109 // }
110 deferredResult.addCallback(function(aLoginProgress, res) {
111 aLoginProgress.disableCancel();
112 return res;
113 }, loginProgress);
114 deferredResult.addCallback(function () {
115 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'CARDS_CONTROLLER_DID_RUN',MochiKit.Base.method(loginProgress, 'deferredHideModalAndRemove', {closeToElement:MochiKit.DOM.currentDocument().body}));
116 })
117 deferredResult.addMethod(this, 'userLoggedIn', user, loginProgress, aLoginForm);
118 deferredResult.addErrback (MochiKit.Base.method(this, 'handleFailedLogin', loginProgress));
119
120 deferredResult.addErrback (MochiKit.Base.method(loginProgress, 'deferredHideModalAndRemove', {closeToElement:aLoginForm.submitButtonElement()}));
121 deferredResult.addErrbackPass (MochiKit.Base.method(aLoginForm, 'focusOnPassphraseField'));
122 deferredResult.addBoth(MochiKit.Base.method(Clipperz.PM.RunTime.mainController, 'removePassphraseDelegate', getPassphraseDelegate));
123 deferredResult.callback();
124
125 MochiKit.Signal.connect(loginProgress, 'cancelEvent', deferredResult, 'cancel');
126
127 return deferredResult;
128 },
129
130 //-----------------------------------------------------------------------------
131
132 'userLoggedIn': function(aUser) {
133//Clipperz.log(">>> LoginController.userLoggedIn");
134 MochiKit.Signal.signal(this, 'userLoggedIn', {user: aUser});
135//Clipperz.log("<<< LoginController.userLoggedIn");
136 },
137
138 //=========================================================================
139
140 'handleCreateNewAccountClick': function (aComponent) {
141 // return Clipperz.PM.DataModel.User.registerNewAccount("new", "user");
142 return Clipperz.Async.callbacks("LoginController.handleCreateNewAccountClick", [
143 //' MochiKit.Base.method(this, 'newUserCreationComponent'),
144 // MochiKit.Base.methodcaller('deferredShowModal', {openFromElement:aComponent}),
145 // MochiKit.Base.method(this.newUserWizardController(), 'run')
146
147
148 MochiKit.Base.method(this, 'newUserCreationComponent'),
149 Clipperz.Async.forkAndJoin("Async.test succeedingForkedAndWaitDeferrer", [
150 MochiKit.Base.method(this.newUserCreationComponent(), 'deferredShowModal', {openFromElement:aComponent, duration:0.5}),
151 MochiKit.Base.method(this.newUserWizardController(), 'run')
152 ], {trace:false}),
153 // MochiKit.Base.method(this.newUserCreationComponent(), 'enableCredentialsField')
154 ], {trace:false});
155 },
156
157 //-----------------------------------------------------------------------------
158
159 'newUserWizardController': function () {
160 if (this._newUserWizardController == null) {
161 this._newUserWizardController = new Clipperz.PM.UI.Web.Controllers.NewUserWizardController({
162 'newUserCreationComponent': this.newUserCreationComponent()
163 })
164
165 // MochiKit.Signal.connect(this._newUserWizardController, 'exit',this, 'handleHideNewUserCreationComponent');
166 MochiKit.Signal.connect(this._newUserWizardController, 'done',this, 'handleCompleteNewUserCreationComponent');
167 }
168
169 return this._newUserWizardController;
170 },
171
172 //-------------------------------------------------------------------------
173
174 'newUserCreationComponent': function () {
175 if (this._newUserCreationComponent == null) {
176 this._newUserCreationComponent = new Clipperz.PM.UI.Web.Components.NewUserCreationComponent();
177 }
178
179 return this._newUserCreationComponent;
180 },
181
182 'clearNewUserCreationComponent': function () {
183 if (this._newUserCreationComponent != null) {
184 this._newUserCreationComponent.clear();
185 }
186 this._newUserCreationComponent = null;
187 },
188
189 //-------------------------------------------------------------------------
190
191 'handleHideNewUserCreationComponent': function () {
192 this.clearNewUserCreationComponent();
193 },
194
195 'handleCompleteNewUserCreationComponent': function (someParameters) {
196 vardeferredResult;
197 varuser;
198 varnewUserCreationComponent;
199
200 user = someParameters.user;
201 newUserCreationComponent = this.newUserCreationComponent();
202 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'CARDS_CONTROLLER_DID_RUN',MochiKit.Base.method(newUserCreationComponent, 'deferredHideModal', {closeToElement:MochiKit.DOM.currentDocument().body})),
203
204 deferredResult = new Clipperz.Async.Deferred("LoginController.handleCompleteNewUserCreationComponent", {trace:false});
205
206 deferredResult.addCallbackList([
207 MochiKit.Base.method(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'deferredEntropyCollection'),
208 MochiKit.Base.method(user, 'login'),
209 MochiKit.Base.method(this, 'userLoggedIn', user),
210 MochiKit.Base.method(this, 'clearNewUserCreationComponent')
211 ]);
212 deferredResult.addErrback(function (aValue) { Clipperz.log("WTF!! Error doing the login after creating a new user" + aValue)});
213 deferredResult.callback();
214
215 return deferredResult;
216 },
217
218
219 //=========================================================================
220
221 'handleFailedLogin': function(aLoginProgress, anError) {
222 var result;
223
224//console.log("anError", anError);
225 if (anError instanceof MochiKit.Async.CancelledError) {
226 result = anError;
227 } else {
228 var deferredResult;
229
230MochiKit.Logging.logError("## MainController - FAILED LOGIN: " + anError);
231 deferredResult = new MochiKit.Async.Deferred();
232
233 aLoginProgress.showErrorMessage("failed login");
234 // Clipperz.NotificationCenter.register(loginProgress, 'cancelEvent', deferredResult, 'callback');
235 MochiKit.Signal.connect(aLoginProgress, 'cancelEvent', deferredResult, 'callback');
236 deferredResult.addCallback(MochiKit.Async.fail, anError)
237 result = deferredResult;
238 }
239
240 return result;
241 },
242
243 'handleGenericError': function(anError) {
244 var result;
245
246 if (anError instanceof MochiKit.Async.CancelledError) {
247 result = anError;
248 } else {
249MochiKit.Logging.logError("## MainController - GENERIC ERROR" + "\n" + "==>> " + anError + " <<==\n" + anError.stack);
250//console.log(anError);
251 result = new MochiKit.Async.CancelledError(anError);
252 }
253
254 return result;
255 },
256
257 //-----------------------------------------------------------------------------
258 __syntaxFix__: "syntax fix"
259});