some future proofing stuff (#4612)
[openemr.git] / Documentation / README.phpgacl
blob1b35ef0c97d1b0e794a7e78c37a6f364306dafb4
1              Hints for Using phpGACL with OpenEMR
2           by Rod Roark <rod at sunsetsystems dot com>
4 Installation Instructions
6 phpGACL access controls are embedded and installed by default in OpenEMR
7 versions 2.9.0.3 or later.  The administration of the access controls is
8 within OpenEMR in the Administration->ACL menu.
11 Upgrading Instructions
13 After you have upgraded to a new version of OpenEMR, you should
14 run the acl_upgrade.php program using your web browser
15 (e.g. http://openemr.location/acl_upgrade.php). This will ensure your
16 phpGACL database contains all the required OpenEMR Access Control
17 Objects.
20 For Developers
22 If you add a new Access Control Object to the OpenEMR codebase, then
23 also add it to the following three sites:
24 1. Header notes of the src/Common/Acl/AclMain.php file
25 2. library/classes/Installer.class.php script in the install_gacl() function
26 3. acl_upgrade.php file
29 Advanced Information
31 Note that OpenEMR does not use AXOs, so ignore the AXO Group Admin
32 tab and other references to AXOs.
34 acl_setup.php creates required Access Control Objects (ACOs, the
35 things to be protected), several sample Access Request Object (AROs
36 are the users requesting access), and their corresponding sections.
37 You may also create such objects yourself using the "ACL Admin"
38 tab of the phpGACL GUI.
40 The Access Control Objects (ACOs) for OpenEMR have a very specific
41 structure.  This is described in the file src/Common/Acl/AclMain.php.
43 You must manually create an ARO in this "users" section for each
44 OpenEMR user (except for the "admin" user which the setup program
45 creates).  The Value column must be the user's OpenEMR login name,
46 and the Name column can (should) be their full name.
48 By the way, values in the "Order" columns do not seem to be important.
49 I just plug in "10" for everything.  Names are cosmetic but should be
50 meaningful to you.  What really matters is the Value column.
52 Then you should define or modify groups and assign users (AROs) to
53 them using the "ARO Group Admin" tab of the GUI.  These can be
54 structured any way you like.  Here is one example of a group
55 heirarchy for a clinic setting:
57   Users
58     Accounting
59     Administrators
60     Assistants
61       Front Office
62       Lab
63       Medical
64     Nurses
65     Physicians
67 To see your access rules, click the "ACL List" tab.  To make corrections
68 click the corresponding Edit link on the right side; this will open the
69 ACL Admin tab with the corresponding selections already made, which you
70 can then change as desired and resubmit.  Note that the ACL List page
71 also provides for deleting entries.
73 The ACL Admin tab is also used to assign permissions.  This is
74 a really confusing "write only" interface, but thankfully you won't
75 have to use it every day!  Mostly what you will do here is highlight
76 a group from the box on the right, and also select some ACOs from the
77 top section by highlighting them and clicking the ">>" button.
78 Then if "write" or "wsome" or "addonly" access applies, key in that
79 as the return value, otherwise a return value is not required.  Then
80 click the Submit button to save that particular access rule.  Repeat
81 until all your ACL rules are defined.