]> git.evergreen-ils.org Git - Evergreen.git/blob - docs/modules/admin_initial_setup/pages/describing_your_people.adoc
Docs: LP1826256 Change 'catalogue' to 'catalog'
[Evergreen.git] / docs / modules / admin_initial_setup / pages / describing_your_people.adoc
1 = Describing your people =
2 :toc:
3
4 Many different members of your staff will use your Evergreen system to perform
5 the wide variety of tasks required of the library.
6
7 When the Evergreen installation was completed, a number of permission groups
8 should have been automatically created. These permission groups are:
9
10 * Users
11 * Patrons
12 * Staff
13 * Catalogers
14 * Circulators
15 * Acquisitions
16 * Acquisitions Administrator
17 * Cataloging Administrator
18 * Circulation Administrator
19 * Local Administrator
20 * Serials
21 * System Administrator
22 * Global Administrator
23 * Data Review
24 * Volunteers
25
26 Each of these permission groups has a different set of permissions connected to
27 them that allow them to do different things with the Evergreen system. Some of
28 the permissions are the same between groups; some are different. These
29 permissions are typically tied to one or more working location (sometimes
30 referred to as a working organizational unit or work OU) which affects where a
31 particular user can exercise the permissions they have been granted.
32
33 == Setting the staff user's working location ==
34 To grant a working location to a staff user in the staff client:
35
36 . Search for the patron. Select *Search > Search for Patrons* from the top menu.
37 . When you retrieve the correct patron record, select *Other > User Permission
38   Editor* from the upper right corner. The permissions associated with this
39   account appear in the right side of the client, with the *Working Location*
40   list at the top of the screen.
41 . The *Working Location* list displays the Organizational Units in your
42   consortium. Select the check box for each Organization Unit where this user
43   needs working permissions. Clear any other check boxes for Organization Units
44   where the user no longer requires working permissions.
45 . Scroll all the way to the bottom of the page and click *Save*. This user
46   account is now ready to be used at your library.
47
48 As you scroll down the page you will come to the *Permissions* list. These are
49 the permissions that are given through the *Permission Group* that you assigned
50 to this user. Depending on your own permissions, you may also have the ability
51 to grant individual permissions directly to this user.
52
53 == Comparing approaches for managing permissions ==
54 The Evergreen community uses two different approaches to deal with managing
55 permissions for users:
56
57 * *Staff Client*
58 +
59 Evergreen libraries that are most comfortable using the staff client tend to
60 manage permissions by creating different profiles for each type of user. When
61 you create a new user, the profile you assign to the user determines their
62 basic set of permissions. This approach requires many permission groups that
63 contain overlapping sets of permissions: for example, you might need to create
64 a _Student Circulator_ group and a _Student Cataloger_ group. Then if a new
65 employee needs to perform both of these roles, you need to create a third
66 _Student Cataloger / Circulator_ group representing the set of all of the
67 permissions of the first two groups.
68 +
69 The advantage to this approach is that you can maintain the permissions
70 entirely within the staff client; a drawback to this approach is that it can be
71 challenging to remember to add a new permission to all of the groups. Another
72 drawback of this approach is that the user profile is also used to determine
73 circulation and hold rules, so the complexity of your circulation and hold
74 rules might increase significantly.
75 +
76 * *Database Access*
77 +
78 Evergreen libraries that are comfortable manipulating the database directly
79 tend to manage permissions by creating permission groups that reflect discrete
80 roles within a library. At the database level, you can make a user belong to
81 many different permission groups, and that can simplify your permission
82 management efforts. For example, if you create a _Student Circulator_ group and
83 a _Student Cataloger_ group, and a new employee needs to perform both of these
84 roles, you can simply assign them to both of the groups; you do not need to
85 create an entirely new permission group in this case. An advantage of this
86 approach is that the user profile can represent only the user's borrowing
87 category and requires only the basic _Patrons_ permissions, which can simplify
88 your circulation and hold rules.
89
90 Permissions and profiles are not carved in stone. As the system administrator,
91 you can change them as needed. You may set and alter the permissions for each
92 permission group in line with what your library, or possibly your consortium,
93 defines as the appropriate needs for each function in the library.
94
95 == Managing permissions in the staff client ==
96 In this section, we'll show you in the staff client:
97
98 * where to find the available permissions
99 * where to find the existing permission groups
100 * how to see the permissions associated with each group
101 * how to add or remove permissions from a group
102
103 We also provide an appendix with a listing of suggested minimum permissions for
104 some essential groups. You can compare the existing permissions with these
105 suggested permissions and, if any are missing, you will know how to add them.
106
107 === Where to find existing permissions and what they mean ===
108 In the staff client, in the upper right corner of the screen, click on
109 *Administration > Server Administration > Permissions*.
110
111 The list of available permissions will appear on screen and you can scroll down
112 through them to see permissions that are already available in your default
113 installation of Evergreen.
114
115 There are over 500 permissions in the permission list. They appear in two
116 columns: *Code* and *Description*. Code is the name of the permission as it
117 appear in the Evergreen database. Description is a brief note on what the
118 permission allows. All of the most common permissions have easily
119 understandable descriptions.
120
121 === Where to find existing Permission Groups ===
122 In the staff client, in the upper right corner of the screen, navigate to
123 *Administration > Server Administration > Permission Groups*.
124
125 Two panes will open on your screen. The left pane provides a tree view of
126 existing Permission Groups. The right pane contains two tabs: Group
127 Configuration and Group Permissions.
128
129 In the left pane, you will find a listing of the existing Permission Groups
130 which were installed by default. Click on the + sign next to any folder to
131 expand the tree and see the groups underneath it. You should see the Permission
132 Groups that were listed at the beginning of this chapter. If you do not and you
133 need them, you will have to create them.
134
135 === Adding or removing permissions from a Permission Group ===
136 First, we will remove a permission from the Staff group.
137
138 . From the list of Permission Groups, click on *Staff*.
139 . In the right pane, click on the *Group Permissions* tab. You will now see a
140   list of permissions that this group has.
141 . From the list, choose *CREATE_CONTAINER*. This will now be highlighted.
142 . Click the *Delete Selected* button. CREATE_CONTAINER will be deleted from the
143   list. The system will not ask for a confirmation. If you delete something by
144   accident, you will have to add it back.
145 . Click the *Save Changes* button.
146
147 You can select a group of individual items by holding down the _Ctrl_ key and
148 clicking on them. You can select a list of items by clicking on the first item,
149 holding down the _Shift_ key, and clicking on the last item in the list that
150 you want to select.
151
152 Now, we will add the permission we just removed back to the Staff group.
153
154 . From the list of Permission Groups, click on *Staff*.
155 . In the right pane, click on the *Group Permissions* tab.
156 . Click on the *New Mapping* button. The permission mapping dialog box will
157   appear.
158 . From the Permission drop down list, choose *CREATE_CONTAINER*.
159 . From the Depth drop down list, choose *Consortium*.
160 . Click the checkbox for *Grantable*.
161 . Click the *Add Mapping* button. The new permission will now appear in the
162   Group Permissions window.
163 . Click the *Save Changes* button.
164
165 If you have saved your changes and you don't see them, you may have to click
166 the Reload button in the upper left side of the staff client screen.
167
168 == Managing role-based permission groups in the staff client ==
169
170 Main permission groups are granted in the staff client through Edit in the patron record using the Main (Profile) Permission Group field.  Additional permission
171 groups can be granted using secondary permission groups.
172
173 [[secondaryperms]]
174 === Secondary Group Permissions ===
175
176 The _Secondary Groups_ button functionality enables supplemental permission
177 groups to be added to staff accounts. The *CREATE_USER_GROUP_LINK* and
178 *REMOVE_USER_GROUP_LINK* permissions are required to display and use this
179 feature.
180
181 In general when creating a secondary permission group do not grant the
182 permission to login to Evergreen.
183
184 ==== Granting Secondary Permissions Groups ====
185
186
187 . Open the account of the user you wish to grant secondary permission group to.
188 . Click _Edit_.
189 . Click _Secondary Groups_, located to the right of the _Main (Profile) Permission Group_.
190 +
191 image::media/sup-permissions-1_web_client.png[Secondary Permissions Group]
192 +
193 . From the dropdown menu select one of the secondary permission groups.
194 +
195 image::media/sup-permissions-2_web_client.png[Secondary Permission Group List]
196 +
197 . Click _Add_.
198 . Click _Apply Changes_.
199 +
200 image::media/sup-permissions-3.png[Secondary Permission Group Save]
201 +
202 . Click _Save_ in the top right hand corner of the _Edit Screen_ to save the user's account.
203
204
205 ==== Removing Secondary Group Permissions ====
206 . Open the account of the user you wish to remove the secondary permission group from.
207 . Click _Edit_.
208 . Click _Secondary Groups_, located to the right of the _Main (Profile) Permission Group_.
209 +
210 image::media/sup-permissions-1_web_client.png[Secondary Permissions Group]
211 +
212 . Click _Delete_ beside the permission group you would like to remove.
213 +
214 image::media/sup-permissions-4_web_client.png[Secondary Permissions Group Delete]
215 +
216 . Click _Apply Changes_.
217 +
218 image::media/sup-permissions-5_web_client.png[Secondary Permissions Group Save]
219 +
220 . Click _Save_ in the top right hand corner of the _Edit Screen_ to save the user's account.
221
222 == Managing role-based permission groups in the database ==
223 While the ability to assign a user to multiple permission groups has existed in
224 Evergreen for years, a staff client interface is not currently available to
225 facilitate the work of the Evergreen administrator. However, if you or members
226 of your team are comfortable working directly with the Evergreen database, you
227 can use this approach to separate the borrowing profile of your users from the
228 permissions that you grant to staff, while minimizing the amount of overlapping
229 permissions that you need to manage for a set of permission groups that would
230 otherwise multiply exponentially to represent all possible combinations of
231 staff roles.
232
233 In the following example, we create three new groups:
234
235 * a _Student_ group used to determine borrowing privileges
236 * a _Student Cataloger_ group representing a limited set of cataloging
237   permissions appropriate for students
238 * a _Student Circulator_ group representing a limited set of circulation
239   permissions appropriate for students
240
241 Then we add three new users to our system: one who needs to perform some
242 cataloging duties as a student; one who needs perform some circulation duties
243 as a student; and one who needs to perform both cataloging and circulation
244 duties. This section demonstrates how to add these permissions to the users at
245 the database level.
246
247 To create the Student group, add a new row to the _permission.grp_tree_ table
248 as a child of the _Patrons_ group:
249
250 [source,sql]
251 ------------------------------------------------------------------------------
252 INSERT INTO permission.grp_tree (name, parent, usergroup, description, application_perm)
253 SELECT 'Students', pgt.id, TRUE, 'Student borrowers', 'group_application.user.patron.student'
254 FROM permission.grp_tree pgt
255  WHERE name = 'Patrons';
256 ------------------------------------------------------------------------------
257
258 To create the Student Cataloger group, add a new row to the
259 _permission.grp_tree_ table as a child of the _Staff_ group:
260
261 [source,sql]
262 ------------------------------------------------------------------------------
263 INSERT INTO permission.grp_tree (name, parent, usergroup, description, application_perm)
264 SELECT 'Student Catalogers', pgt.id, TRUE, 'Student catalogers', 'group_application.user.staff.student_cataloger'
265 FROM permission.grp_tree pgt
266 WHERE name = 'Staff';
267 ------------------------------------------------------------------------------
268
269 To create the Student Circulator group, add a new row to the
270 _permission.grp_tree_ table as a child of the _Staff_ group:
271
272 [source,sql]
273 ------------------------------------------------------------------------------
274 INSERT INTO permission.grp_tree (name, parent, usergroup, description, application_perm)
275 SELECT 'Student Circulators', pgt.id, TRUE, 'Student circulators', 'group_application.user.staff.student_circulator'
276 FROM permission.grp_tree pgt
277 WHERE name = 'Staff';
278 ------------------------------------------------------------------------------
279
280 We want to give the Student Catalogers group the ability to work with MARC
281 records at the consortial level, so we assign the UPDATE_MARC, CREATE_MARC, and
282 IMPORT_MARC permissions at depth 0:
283
284 [source,sql]
285 ------------------------------------------------------------------------------
286 WITH pgt AS (
287   SELECT id
288   FROM permission.grp_tree
289   WHERE name = 'Student Catalogers'
290 )
291 INSERT INTO permission.grp_perm_map (grp, perm, depth)
292 SELECT pgt.id, ppl.id, 0
293 FROM permission.perm_list ppl, pgt
294 WHERE ppl.code IN ('UPDATE_MARC', 'CREATE_MARC', 'IMPORT_MARC');
295 ------------------------------------------------------------------------------
296
297 Similarly, we want to give the Student Circulators group the ability to check
298 out items and record in-house uses at the system level, so we assign the
299 COPY_CHECKOUT and CREATE_IN_HOUSE_USE permissions at depth 1 (overriding the
300 same _Staff_ permissions that were granted only at depth 2):
301
302 [source,sql]
303 ------------------------------------------------------------------------------
304 WITH pgt AS (
305   SELECT id
306   FROM permission.grp_tree
307   WHERE name = 'Student Circulators'
308 ) INSERT INTO permission.grp_perm_map (grp, perm, depth)
309 SELECT pgt.id, ppl.id, 1
310 FROM permission.perm_list ppl, pgt
311 WHERE ppl.code IN ('COPY_CHECKOUT', 'CREATE_IN_HOUSE_USE');
312 ------------------------------------------------------------------------------
313
314 Finally, we want to add our students to the groups. The request may arrive in
315 your inbox from the library along the lines of "Please add Mint Julep as a
316 Student Cataloger, Bloody Caesar as a Student Circulator, and Grass Hopper as a
317 Student Cataloger / Circulator; I've already created their accounts and given
318 them a work organizational unit." You can translate that into the following SQL
319 to add the users to the pertinent permission groups, adjusting for the
320 inevitable typos in the names of the users.
321
322 First, add our Student Cataloger:
323
324 [source,sql]
325 ------------------------------------------------------------------------------
326 WITH pgt AS (
327   SELECT id FROM permission.grp_tree
328   WHERE name = 'Student Catalogers'
329 )
330 INSERT INTO permission.usr_grp_map (usr, grp)
331 SELECT au.id, pgt.id
332 FROM actor.usr au, pgt
333 WHERE first_given_name = 'Mint' AND family_name = 'Julep';
334 ------------------------------------------------------------------------------
335
336 Next, add the Student Circulator:
337
338 [source,sql]
339 ------------------------------------------------------------------------------
340 WITH pgt AS (
341   SELECT id FROM permission.grp_tree
342   WHERE name = 'Student Circulators'
343 )
344 INSERT INTO permission.usr_grp_map (usr, grp)
345 SELECT au.id, pgt.id
346 FROM actor.usr au, pgt
347 WHERE first_given_name = 'Bloody' AND family_name = 'Caesar';
348 ------------------------------------------------------------------------------
349
350 Finally, add the all-powerful Student Cataloger / Student Circulator:
351
352 [source,sql]
353 ------------------------------------------------------------------------------
354  WITH pgt AS (
355   SELECT id FROM permission.grp_tree
356   WHERE name IN ('Student Catalogers', 'Student Circulators')
357 )
358 INSERT INTO permission.usr_grp_map (usr, grp)
359 SELECT au.id, pgt.id
360 FROM actor.usr au, pgt
361 WHERE first_given_name = 'Grass' AND family_name = 'Hopper';
362 ------------------------------------------------------------------------------
363
364 While adopting this role-based approach might seem labour-intensive when
365 applied to a handful of students in this example, over time it can help keep
366 the permission profiles of your system relatively simple in comparison to the
367 alternative approach of rapidly reproducing permission groups, overlapping
368 permissions, and permissions granted on a one-by-one basis to individual users.