]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/js/ui/base.js
in the staff client, use the user object in the XUL stash instead of grabbing the...
[Evergreen.git] / Open-ILS / web / js / ui / base.js
1 dojo.require('dijit.Dialog');
2 dojo.require('dojo.cookie');
3 dojo.require('fieldmapper.AutoIDL');  // make conditional.  TT variable sets JS var to enable/disable?
4 dojo.require('openils.User');
5 dojo.require('openils.CGI');
6 dojo.require('openils.Event');
7 dojo.require('openils.Util');
8 dojo.require('openils.XUL');
9
10 var cgi = new openils.CGI();
11
12 function oilsSetupUser() {
13     var authtoken = cgi.param('ses') || dojo.cookie('ses');
14     var workstation = cgi.param('ws') || dojo.cookie('ws');
15     var user;
16     var ses_user;
17
18     openils.User.user = null;
19     openils.User.authtoken = null;
20     openils.User.workstation = null;
21
22     if(openils.XUL.isXUL()) {
23                 stash = openils.XUL.getStash();
24                 authtoken = stash.session.key
25         ses_user = stash.list.au[0];
26         }
27
28     if(authtoken) {
29         user = new openils.User();
30         delete user.sessionCache[authtoken];
31         user.authtoken = authtoken;
32         if(ses_user) {
33             user.user = ses_user;
34             user.sessionCache[authtoken] = ses_user;
35         }
36         user.user = user.getBySession();
37     }
38
39     if(!authtoken || openils.Event.parse(user.user)) {
40
41         authtoken = oilsLoginFromCookies();
42
43         if(!authtoken) {
44
45             dojo.cookie('ses', null, {expires:-1, path:'/'}); // remove the cookie
46             dojo.cookie('ses', null, {expires:-1, path:oilsBasePath}); // remove the cookie
47
48             dojo.addOnLoad(function(){
49                 if(openils.XUL.isXUL()) {
50                     // let XUL handle the login dialog
51                     dump('getNewSession in base.js\n');
52                     openils.XUL.getNewSession( function() { location.href = location.href } );
53                 } else {
54                     // in web-only mode, use the dojo login dialog
55                     oilsLoginDialog.show(); 
56                     var func = function(){ oilsDoLogin(); };
57                     openils.Util.registerEnterHandler(dojo.byId('oils-login-username'), func);
58                     openils.Util.registerEnterHandler(dojo.byId('oils-login-password'), func);
59                     dojo.byId('oils-login-workstation').innerHTML = workstation || '';
60                 }
61             });
62             return null;
63         }
64     }
65
66     dojo.cookie('ses', authtoken, {path:oilsBasePath});
67     openils.User.authtoken = authtoken;
68     openils.User.workstation = workstation;
69     return authtoken;
70 }
71
72 // pulls username / password and optional workstation from cgi params or cookies
73 function oilsLoginFromCookies() {
74
75     var username = cgi.param('username') || dojo.cookie('username');
76     var password = cgi.param('password') || dojo.cookie('password');
77     var workstation = cgi.param('ws') || dojo.cookie('ws');
78
79     if(username && password) {
80
81         var user = new openils.User();
82         var args = {
83             username : username,
84             passwd : password,
85             type : 'staff'
86         };
87
88         if(workstation) 
89             args.workstation = workstation;
90
91         if(user.login(args)) {
92             // fetches the login session and sets the global vars
93             user = new openils.User({authtoken : user.authtoken});
94             return (user && !openils.Event.parse(user.user)) ? user.authtoken : null;
95         } 
96     }
97
98     return null;
99 }
100
101 function oilsDoLogin() {
102     openils.Util.hide('oils-login-failed');
103     var workstation = cgi.param('ws') || dojo.cookie('ws');
104     var user = new openils.User();
105     var args = {
106         username: dojo.byId('oils-login-username').value,
107         passwd: dojo.byId('oils-login-password').value,
108         type: 'staff', // hardcode for now
109     };
110     if(workstation) 
111         args.workstation = workstation;
112
113     if(user.login(args)) {
114         dojo.cookie('ses', user.authtoken, {path : oilsBasePath});
115         location.href = location.href;
116     } else {
117         openils.Util.show('oils-login-failed');
118     }
119
120     return false;
121 }
122
123 oilsSetupUser();
124