]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/auth/session.js
workstation name in titlebar
[Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / auth / session.js
1 dump('entering auth/session.js\n');
2
3 if (typeof auth == 'undefined') auth = {};
4 auth.session = function (view) {
5
6         JSAN.use('util.error'); this.error = new util.error();
7         JSAN.use('util.network'); this.network = new util.network();
8         this.view = view;
9
10         return this;
11 };
12
13 auth.session.prototype = {
14
15         'init' : function () {
16
17                 try {
18                         var init = this.network.request(
19                                 api.AUTH_INIT.app,
20                                 api.AUTH_INIT.method,
21                                 [ this.view.name_prompt.value ]
22                         );
23
24                         if (init) {
25                                 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.stash_retrieve();
26
27                                 var params = { 
28                                         'username' : this.view.name_prompt.value,
29                                         'password' : hex_md5(
30                                                 init +
31                                                 hex_md5(
32                                                         this.view.password_prompt.value
33                                                 )
34                                         ),
35                                         'type' : 'opac',
36                                 };
37
38                                 if (data.ws_info[ this.view.server_prompt.value ]) {
39                                         params.type = 'staff';
40                                         params.workstation = data.ws_info[ this.view.server_prompt.value ].name;
41                                         data.ws_name = params.workstation; data.stash('ws_name');
42                                 }
43
44                                 var robj = this.network.request(
45                                         api.AUTH_COMPLETE.app,
46                                         api.AUTH_COMPLETE.method,
47                                         [ params ]
48                                 );
49
50                                 if (robj.ilsevent == 0) {
51                                         this.key = robj.payload.authtoken;
52                                         this.authtime = robj.payload.authtime;
53                                 } else {
54                                         var error = robj.ilsevent + ' : ' + this.error.get_ilsevent( robj.ilsevent );
55                                         this.error.sdump('D_AUTH','auth.session.init: ' + error + '\n');
56                                         alert( error );
57                                         throw(robj);
58                                 }
59
60                                 this.error.sdump('D_AUTH','auth.session.key = ' + this.key + '\n');
61
62                                 if (typeof this.on_init == 'function') {
63                                         this.error.sdump('D_AUTH','auth.session.on_init()\n');
64                                         this.on_init();
65                                 }
66
67                         } else {
68
69                                 var error = 'open-ils.auth.authenticate.init returned false\n';
70                                 this.error.sdump('D_ERROR',error);
71                                 throw(error);
72                         }
73
74                 } catch(E) {
75                         var error = 'Error on auth.session.init(): ' + js2JSON(E) + '\n';
76                         this.error.sdump('D_ERROR',error); 
77
78                         if (typeof this.on_init_error == 'function') {
79                                 this.error.sdump('D_AUTH','auth.session.on_init_error()\n');
80                                 this.on_init_error(E);
81                         }
82                         if (typeof this.on_error == 'function') {
83                                 this.error.sdump('D_AUTH','auth.session.on_error()\n');
84                                 this.on_error();
85                         }
86
87                         //throw(E);
88                         /* This was for testing
89                         if (typeof this.on_init == 'function') {
90                                 this.error.sdump('D_AUTH','auth.session.on_init() despite error\n');
91                                 this.on_init();
92                         }
93                         */
94                 }
95         },
96
97         'close' : function () { 
98                 var obj = this;
99                 obj.error.sdump('D_AUTH','auth.session.close()\n'); 
100                 if (obj.key) obj.network.request(
101                         api.AUTH_DELETE.app,
102                         api.AUTH_DELETE.method,
103                         [ obj.key ],
104                         function(req) {}
105                 );
106                 obj.key = null;
107                 if (typeof obj.on_close == 'function') {
108                         obj.error.sdump('D_AUTH','auth.session.on_close()\n');
109                         obj.on_close();
110                 }
111         }
112
113 }
114
115 dump('exiting auth/session.js\n');