]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/auth/session.js
4e8a84f54076d32094f8ff5fb77dd5114fef408d
[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                                 }
42
43                                 var robj = this.network.request(
44                                         api.AUTH_COMPLETE.app,
45                                         api.AUTH_COMPLETE.method,
46                                         [ params ]
47                                 );
48
49                                 if (robj.ilsevent == 0) {
50                                         this.key = robj.payload.authtoken;
51                                         this.authtime = robj.payload.authtime;
52                                 } else {
53                                         var error = robj.ilsevent + ' : ' + this.error.get_ilsevent( robj.ilsevent );
54                                         this.error.sdump('D_AUTH','auth.session.init: ' + error + '\n');
55                                         alert( error );
56                                         throw(robj);
57                                 }
58
59                                 this.error.sdump('D_AUTH','auth.session.key = ' + this.key + '\n');
60
61                                 if (typeof this.on_init == 'function') {
62                                         this.error.sdump('D_AUTH','auth.session.on_init()\n');
63                                         this.on_init();
64                                 }
65
66                         } else {
67
68                                 var error = 'open-ils.auth.authenticate.init returned false\n';
69                                 this.error.sdump('D_ERROR',error);
70                                 throw(error);
71                         }
72
73                 } catch(E) {
74                         var error = 'Error on auth.session.init(): ' + js2JSON(E) + '\n';
75                         this.error.sdump('D_ERROR',error); 
76
77                         if (typeof this.on_init_error == 'function') {
78                                 this.error.sdump('D_AUTH','auth.session.on_init_error()\n');
79                                 this.on_init_error(E);
80                         }
81                         if (typeof this.on_error == 'function') {
82                                 this.error.sdump('D_AUTH','auth.session.on_error()\n');
83                                 this.on_error();
84                         }
85
86                         //throw(E);
87                         /* This was for testing
88                         if (typeof this.on_init == 'function') {
89                                 this.error.sdump('D_AUTH','auth.session.on_init() despite error\n');
90                                 this.on_init();
91                         }
92                         */
93                 }
94         },
95
96         'close' : function () { 
97                 var obj = this;
98                 obj.error.sdump('D_AUTH','auth.session.close()\n'); 
99                 if (obj.key) obj.network.request(
100                         api.AUTH_DELETE.app,
101                         api.AUTH_DELETE.method,
102                         [ obj.key ],
103                         function(req) {}
104                 );
105                 obj.key = null;
106                 if (typeof obj.on_close == 'function') {
107                         obj.error.sdump('D_AUTH','auth.session.on_close()\n');
108                         obj.on_close();
109                 }
110         }
111
112 }
113
114 dump('exiting auth/session.js\n');