testing commit, please ignore
[kcls-web.git] / 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
17     openils.User.user = null;
18     openils.User.authtoken = null;
19     openils.User.workstation = null;
20
21     if(!authtoken && openils.XUL.isXUL()) {
22                 stash = openils.XUL.getStash();
23                 authtoken = stash.session.key
24         }
25
26     if(authtoken) {
27         user = new openils.User();
28         delete user.sessionCache[authtoken];
29         user.authtoken = authtoken;
30         user.user = user.getBySession();
31     }
32
33     if(!authtoken || openils.Event.parse(user.user)) {
34
35         authtoken = oilsLoginFromCookies();
36
37         if(!authtoken) {
38
39             dojo.cookie('ses', null, {expires:-1, path:'/'}); // remove the cookie
40             dojo.cookie('ses', null, {expires:-1, path:oilsBasePath}); // remove the cookie
41
42             dojo.addOnLoad(function(){
43                 if(openils.XUL.isXUL()) {
44                     // let XUL handle the login dialog
45                     dump('getNewSession in base.js\n');
46                     openils.XUL.getNewSession( function() { location.href = location.href } );
47                 } else {
48                     // in web-only mode, use the dojo login dialog
49                     oilsLoginDialog.show(); 
50                     var func = function(){ oilsDoLogin(); };
51                     openils.Util.registerEnterHandler(dojo.byId('oils-login-username'), func);
52                     openils.Util.registerEnterHandler(dojo.byId('oils-login-password'), func);
53                     dojo.byId('oils-login-workstation').innerHTML = workstation || '';
54                 }
55             });
56             return null;
57         }
58     }
59
60     dojo.cookie('ses', authtoken, {path:oilsBasePath});
61     openils.User.authtoken = authtoken;
62     openils.User.workstation = workstation;
63     return authtoken;
64 }
65
66 // pulls username / password and optional workstation from cgi params or cookies
67 function oilsLoginFromCookies() {
68
69     var username = cgi.param('username') || dojo.cookie('username');
70     var password = cgi.param('password') || dojo.cookie('password');
71     var workstation = cgi.param('ws') || dojo.cookie('ws');
72
73     if(username && password) {
74
75         var user = new openils.User();
76         var args = {
77             username : username,
78             passwd : password,
79             type : 'staff'
80         };
81
82         if(workstation) 
83             args.workstation = workstation;
84
85         if(user.login(args)) {
86             // fetches the login session and sets the global vars
87             user = new openils.User({authtoken : user.authtoken});
88             return (user && !openils.Event.parse(user.user)) ? user.authtoken : null;
89         } 
90     }
91
92     return null;
93 }
94
95 function oilsDoLogin() {
96     openils.Util.hide('oils-login-failed');
97     var workstation = cgi.param('ws') || dojo.cookie('ws');
98     var user = new openils.User();
99     var args = {
100         username: dojo.byId('oils-login-username').value,
101         passwd: dojo.byId('oils-login-password').value,
102         type: 'staff', // hardcode for now
103     };
104     if(workstation) 
105         args.workstation = workstation;
106
107     if(user.login(args)) {
108         dojo.cookie('ses', user.authtoken, {path : oilsBasePath});
109         location.href = location.href;
110     } else {
111         openils.Util.show('oils-login-failed');
112     }
113
114     return false;
115 }
116
117 oilsSetupUser();
118