]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/auth/session.js
explicit number casting for JSON results
[working/Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / auth / session.js
1 dump('entering auth/session.js\n');
2 // vim:sw=4:ts=4:noet:
3
4 if (typeof auth == 'undefined') auth = {};
5 auth.session = function (view,login_type) {
6
7         JSAN.use('util.error'); this.error = new util.error();
8         JSAN.use('util.network'); this.network = new util.network();
9         this.view = view;
10         this.login_type = login_type || 'staff';
11
12         return this;
13 };
14
15 auth.session.prototype = {
16
17         'init' : function () {
18
19                 var obj = this;
20
21                 try {
22                         var init = this.network.request(
23                                 api.AUTH_INIT.app,
24                                 api.AUTH_INIT.method,
25                                 [ this.view.name_prompt.value ]
26                         );
27
28                         if (init) {
29                                 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.stash_retrieve();
30
31                                 var params = { 
32                                         'username' : this.view.name_prompt.value,
33                                         'password' : hex_md5(
34                                                 init +
35                                                 hex_md5(
36                                                         this.view.password_prompt.value
37                                                 )
38                                         ),
39                                         'type' : 'temp',
40                                 };
41
42                                 if (data.ws_info[ this.view.server_prompt.value ]) {
43                                         params.type = this.login_type;
44                                         params.workstation = data.ws_info[ this.view.server_prompt.value ].name;
45                                         data.ws_name = params.workstation; data.stash('ws_name');
46                                 }
47
48                                 var robj = this.network.simple_request( 'AUTH_COMPLETE', [ params ]);
49
50                                 switch (Number(robj.ilsevent)) {
51                                         case 0:
52                                                 this.key = robj.payload.authtoken;
53                                                 this.authtime = robj.payload.authtime;
54                                         break;
55                                         case 1520 /* WORKSTATION_NOT_FOUND */:
56                                                 alert(document.getElementById('authStrings').getFormattedString('staff.auth.session.unregistered', [params.workstation]));
57                                                 delete(params.workstation);
58                                                 delete(data.ws_info[ this.view.server_prompt.value ]);
59                                                 data.stash('ws_info');
60                                                 data.ws_name = null; data.stash('ws_name');
61                                                 params.type = 'temp';
62                                                 robj = this.network.simple_request('AUTH_COMPLETE',[ params ]);
63                                                 if (robj.ilsevent == 0) {
64                                                         this.key = robj.payload.authtoken;
65                                                         this.authtime = robj.payload.authtime;
66                                                 } else {
67                                                         //this.error.standard_unexpected_error_alert('auth.session.init',robj);
68                                                         throw(robj);
69                                                 }
70                                         break;
71                                         default:
72                                         //obj.error.standard_unexpected_error_alert('auth.session.init',robj);
73                                         throw(robj);
74                                         break;
75                                 }
76
77                                 this.error.sdump('D_AUTH','auth.session.key = ' + this.key + '\n');
78
79                                 if (typeof this.on_init == 'function') {
80                                         this.error.sdump('D_AUTH','auth.session.on_init()\n');
81                                         this.on_init();
82                                 }
83
84                         } else {
85
86                                 var error = document.getElementById('authStrings').getString('staff.auth.session.init_false') + '\n';
87                                 this.error.sdump('D_ERROR',error);
88                                 throw(error);
89                         }
90
91                 } catch(E) {
92                         alert(document.getElementById('authStrings').getString('staff.auth.session.login_failed'));
93                         //obj.error.standard_unexpected_error_alert('Error on auth.session.init()',E); 
94
95                         if (typeof this.on_init_error == 'function') {
96                                 this.error.sdump('D_AUTH','auth.session.on_init_error()\n');
97                                 this.on_init_error(E);
98                         }
99                         if (typeof this.on_error == 'function') {
100                                 this.error.sdump('D_AUTH','auth.session.on_error()\n');
101                                 this.on_error();
102                         }
103
104                         //throw(E);
105                         /* This was for testing
106                         if (typeof this.on_init == 'function') {
107                                 this.error.sdump('D_AUTH','auth.session.on_init() despite error\n');
108                                 this.on_init();
109                         }
110                         */
111                 }
112         },
113
114         'close' : function () { 
115                 var obj = this;
116                 obj.error.sdump('D_AUTH','auth.session.close()\n'); 
117                 if (obj.key) obj.network.request(
118                         api.AUTH_DELETE.app,
119                         api.AUTH_DELETE.method,
120                         [ obj.key ],
121                         function(req) {}
122                 );
123                 obj.key = null;
124                 if (typeof obj.on_close == 'function') {
125                         obj.error.sdump('D_AUTH','auth.session.on_close()\n');
126                         obj.on_close();
127                 }
128         }
129
130 }
131
132 dump('exiting auth/session.js\n');