1 dump('entering auth/session.js\n');
4 if (typeof auth == 'undefined') auth = {};
5 auth.session = function (view,login_type) {
7 JSAN.use('util.error'); this.error = new util.error();
8 JSAN.use('util.network'); this.network = new util.network();
10 this.login_type = login_type || 'staff';
15 auth.session.prototype = {
17 'init' : function () {
21 /* This request is done manually in a try block to allow it to fail
22 * silently if auth_proxy is not even running. TODO: Move this check
23 * to a module which should be always running, perhaps 'auth'.
25 var auth_proxy_enabled = false;
27 var request = new RemoteRequest( api.AUTH_PROXY_ENABLED.app, api.AUTH_PROXY_ENABLED.method );
29 request.setSecure(true);
30 if (request.getResultObject() == 1) {
31 auth_proxy_enabled = true;
37 if (!auth_proxy_enabled) {
38 var init = this.network.request(
41 [ this.view.name_prompt.value ]
45 if (init || auth_proxy_enabled) {
47 /* quick kludge; we were re-using a poisoned OpenILS.data
48 * (from ws_info.xul?) where js2JSON (and maybe other
49 * stuff) does not exist
54 JSAN.use('OpenILS.data');
55 var data = new OpenILS.data();
56 data.stash_retrieve();
59 'username' : this.view.name_prompt.value,
61 'agent' : 'staffclient'
64 if (data.ws_info[ this.view.server_prompt.value ]) {
65 params.type = this.login_type;
66 params.workstation = data.ws_info[ this.view.server_prompt.value ].name;
67 data.ws_name = params.workstation; data.stash('ws_name');
72 params['password'] = hex_md5(
75 this.view.password_prompt.value
78 robj = this.network.simple_request( 'AUTH_COMPLETE', [ params ]);
79 } else if (auth_proxy_enabled) { // safety double-check
80 params['password'] = this.view.password_prompt.value;
81 robj = this.network.simple_request( 'AUTH_PROXY_LOGIN', [ params ] );
84 switch (Number(robj.ilsevent)) {
86 this.key = robj.payload.authtoken;
87 this.authtime = robj.payload.authtime;
89 case 1520 /* WORKSTATION_NOT_FOUND */:
90 alert(document.getElementById('authStrings').getFormattedString('staff.auth.session.unregistered', [params.workstation]));
91 delete(params.workstation);
92 delete(data.ws_info[ this.view.server_prompt.value ]);
93 data.stash('ws_info');
94 data.ws_name = null; data.stash('ws_name');
96 // We need to get a new seed
97 init = this.network.request(
100 [ this.view.name_prompt.value ]
103 params.password = hex_md5(init + hex_md5( this.view.password_prompt.value ));
105 robj = this.network.simple_request('AUTH_COMPLETE',[ params ]);
106 if (robj.ilsevent == 0) {
107 this.key = robj.payload.authtoken;
108 this.authtime = robj.payload.authtime;
110 //this.error.standard_unexpected_error_alert('auth.session.init',robj);
115 //obj.error.standard_unexpected_error_alert('auth.session.init',robj);
120 this.error.sdump('D_AUTH','auth.session.key = ' + this.key + '\n');
122 if (typeof this.on_init == 'function') {
123 this.error.sdump('D_AUTH','auth.session.on_init()\n');
129 var error = document.getElementById('authStrings').getString('staff.auth.session.init_false') + '\n';
130 this.error.sdump('D_ERROR',error);
135 alert(document.getElementById('authStrings').getString('staff.auth.session.login_failed'));
136 //obj.error.standard_unexpected_error_alert('Error on auth.session.init()',E);
138 if (typeof this.on_init_error == 'function') {
139 this.error.sdump('D_AUTH','auth.session.on_init_error()\n');
140 this.on_init_error(E);
142 if (typeof this.on_error == 'function') {
143 this.error.sdump('D_AUTH','auth.session.on_error()\n');
148 /* This was for testing
149 if (typeof this.on_init == 'function') {
150 this.error.sdump('D_AUTH','auth.session.on_init() despite error\n');
157 'close' : function () {
159 obj.error.sdump('D_AUTH','auth.session.close()\n');
161 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
162 Components.classes["@mozilla.org/cookiemanager;1"]
163 .getService(Components.interfaces.nsICookieManager).removeAll();
165 dump('Error in auth/session.js, close(): ' + E + '\n');
167 if (obj.key) obj.network.request(
169 api.AUTH_DELETE.method,
174 if (typeof obj.on_close == 'function') {
175 obj.error.sdump('D_AUTH','auth.session.on_close()\n');
182 dump('exiting auth/session.js\n');