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