1 /* ---------------------------------------------------------------------------
2 * Copyright (C) 2008 Georgia Public Library Service
3 * Bill Erickson <erickson@esilibrary.com>
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 * ---------------------------------------------------------------------------
17 if(!dojo._hasResource["openils.User"]) {
19 dojo._hasResource["openils.User"] = true;
20 dojo.provide("openils.User");
21 dojo.require('openils.Event');
22 dojo.require('fieldmapper.Fieldmapper');
24 dojo.declare('openils.User', null, {});
26 openils.User.user = null;
27 openils.User.authtoken = null;
28 openils.User.authtime = null;
30 var ses = new OpenSRF.ClientSession('open-ils.auth');
32 openils.User.getBySession = function(onComplete) {
33 var req = ses.request('open-ils.auth.session.retrieve', openils.User.authtoken);
35 req.oncomplete = function(r) {
36 var user = r.recv().content();
37 openils.User.user = user;
45 return openils.User.user = req.recv().content();
49 openils.User.getById = function(id, onComplete) {
50 var ases = new OpenSRF.ClientSession('open-ils.actor');
51 var req = ases.request('open-ils.actor.user.retrieve', openils.User.authtoken, id);
53 req.oncomplete = function(r) {
54 var user = r.recv().content();
61 return req.recv().content();
67 * Logs in, sets the authtoken/authtime vars, and fetches the logged in user
69 openils.User.login = function(args, onComplete) {
70 var initReq = ses.request('open-ils.auth.authenticate.init', args.username);
72 initReq.oncomplete = function(r) {
73 var seed = r.recv().content();
76 password : hex_md5(seed + hex_md5(args.passwd)),
77 type : args.type || 'opac',
81 var authReq = ses.request('open-ils.auth.authenticate.complete', loginInfo);
82 authReq.oncomplete = function(rr) {
83 var data = rr.recv().content();
84 openils.User.authtoken = data.payload.authtoken;
85 openils.User.authtime = data.payload.authtime;
86 openils.User.getBySession(onComplete);
95 * Returns a list of the "highest" org units where the user
96 * has the given permission.
98 openils.User.getPermOrgList = function(perm, onload) {
100 var ases = new OpenSRF.ClientSession('open-ils.actor');
101 var req = ases.request(
102 'open-ils.actor.user.work_perm.highest_org_set',
103 openils.User.authtoken, perm);
105 req.oncomplete = function(r) {
106 org_list = r.recv().content();
114 * Builds a dijit.Tree using the orgs where the user has the requested permission
115 * @param perm The permission to check
116 * @param domId The DOM node where the tree widget should live
117 * @param onClick If defined, this will be connected to the tree widget for
120 openils.User.buildPermOrgTreePicker = function(perm, domId, onClick) {
122 function buildTreePicker(r) {
123 var orgList = r.recv().content();
124 var store = new dojo.data.ItemFileReadStore({data:aou.toStoreData(orgList)});
125 var model = new dijit.tree.ForestStoreModel({
127 query: {_top:'true'},
128 childrenAttrs: ["children"],
129 rootLabel : "Location" /* XXX i18n */
132 var tree = new dijit.Tree({model : model}, dojo.byId(domId));
134 dojo.connect(tree, 'onClick', onClick);
138 fieldmapper.standardRequest(
139 ['open-ils.actor', 'open-ils.actor.user.work_perm.org_unit_list'],
141 params: [openils.User.authtoken, perm],
142 oncomplete: buildTreePicker,