Reorganized access control structures
[fa-stable.git] / includes / access_levels.inc
1 <?php
2 /**********************************************************************
3     Copyright (C) FrontAccounting, LLC.
4         Released under the terms of the GNU General Public License, GPL, 
5         as published by the Free Software Foundation, either version 3 
6         of the License, or (at your option) any later version.
7     This program is distributed in the hope that it will be useful,
8     but WITHOUT ANY WARRANTY; without even the implied warranty of
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
10     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ***********************************************************************/
12 /*
13         Security sections groups various areas on both functionality and privilige levels.
14         Often analyti inquires are available only for management, and configuration
15         for administration or management staff. This is why we have those three
16         sections related to near every FA module.
17         
18         Every security section can contain up to 256 different areas.
19         Section codes 0-99 are reserved for core FA functionalities.
20         External modules can extend security roles system by adding rows to security sections and
21         security areas using section code >=100.
22 */
23 define('SS_SADMIN',     1<<8);  // site admin
24 define('SS_SETUP',      2<<8);  // company level setup
25 define('SS_SPEC',       3<<8);  // special administration
26
27 define('SS_SALES_C',11<<8); // configuration
28 define('SS_SALES',      12<<8); // transactions
29 define('SS_SALES_A',13<<8); // analytic functions/reports/inquires
30
31 define('SS_PURCH_C',21<<8);
32 define('SS_PURCH',      22<<8);
33 define('SS_PURCH_A',23<<8);
34
35 define('SS_ITEMS_C',31<<8);
36 define('SS_ITEMS',      32<<8);
37 define('SS_ITEMS_A',33<<8);
38
39 define('SS_MANUF_C',41<<8);
40 define('SS_MANUF',      42<<8);
41 define('SS_MANUF_A',43<<8);
42
43 define('SS_DIM_C',      51<<8);
44 define('SS_DIM',        52<<8);
45 define('SS_DIM_A',      53<<8);
46
47 define('SS_GL_C',       61<<8);
48 define('SS_GL',         62<<8);
49 define('SS_GL_A',       63<<8);
50
51 $security_sections = array(
52  SS_SADMIN => _("System administration"),
53  SS_SETUP => _("Company setup"),
54  SS_SPEC => _("Special maintenance"),
55  SS_SALES_C => _("Sales configuration"),
56  SS_SALES => _("Sales transactions"),
57  SS_SALES_A => _("Sales analytics"),
58  SS_PURCH_C => _("Purchase configuration"),
59  SS_PURCH => _("Purchase transactions"),
60  SS_PURCH_A => _("Purchase analytics"),
61  SS_ITEMS_C => _("Inventory configuration"),
62  SS_ITEMS => _("Inventory operations"),
63  SS_ITEMS_A => _("Inventory analytics"),
64  SS_MANUF_C => _("Manufacturing configuration"),
65  SS_MANUF => _("Manufacturing transations"),
66  SS_MANUF_A => _("Manufacturing analytics"),
67  SS_DIM => _("Dimensions"),
68  SS_GL_C => _("Banking & GL configuration"),
69  SS_GL => _("Banking & GL transactions"),
70  SS_GL_A => _("Banking & GL analytics")
71 );
72
73 /*
74         This table stores security areas available in FA. 
75         Key is area identifier used to check user rights, values are
76         code stored for each role in security_roles table and description used
77         in roles editor.
78
79         Set of allowed access areas codes is retrieved during user login from
80         security_roles table, and stored in user profile for direct during the session.
81
82 */
83 $security_areas =array(
84 //
85 //      Site administration
86 //
87         'SA_CREATECOMPANY' =>array(SS_SADMIN|1, _("Install/update companies")),
88         'SA_CREATELANGUAGE' => array(SS_SADMIN|2, _("Install/update languages")),
89         'SA_CREATEMODULES' => array(SS_SADMIN|3, _("Install/upgrade modules")),
90         'SA_SOFTWAREUPGRADE' => array(SS_SADMIN|4, _("Software upgrades")),
91 //
92 //      Company setup
93 //
94         'SA_CRSTATUS' => array(SS_SETUP|1, _("Credit status definitions changes")),
95         'SA_INVENTORYLOCATION' => array(SS_SETUP|2, _("Inventory locations changes")),
96         'SA_INVENTORYMOVETYPE'  => array(SS_SETUP|3, _("Inventory movement types")),
97         'SA_WORKCENTRE' => array(SS_SETUP|4, _("Manufacture work centres ")),
98         'SA_SETUPCOMPANY' => array(SS_SETUP|5, _("Company parameters")),
99         'SA_SETUPUSER' => array(SS_SETUP|6, _("Users setup")),
100         'SA_SETUPFORM' => array(SS_SETUP|7, _("Forms setup")),
101         'SA_PRINTPROFILE' => array(SS_SETUP|8, _("Print profiles")),
102         'SA_PAYMENTTERM' => array(SS_SETUP|9, _("Payment terms")),
103         'SA_SHIPPING' => array(SS_SETUP|10, _("Shipping ways")),
104         'SA_SETUPPOS' => array(SS_SETUP|11, _("Point of sales definitions")),
105         'SA_SETUPPRINTER' => array(SS_SETUP|12, _("Printers configuration")),
106
107 // special and common functions
108         'SA_VIEWPRINTTRANSACTION' => array(SS_SPEC|1, _("Common view/print transactions interface")),
109         'SA_ATTACHDOCUMENT' => array(SS_SPEC|2, _("Attaching documents")),
110         'SA_VOIDTRANSACTION' => array(SS_SPEC|3, _("Voiding transactions")),
111         'SA_BACKUP' => array(SS_SPEC|4, _("Database backup/restore")),
112
113 // Sales related functionality
114 //
115         'SA_STEMPLATE' => array(SS_SALES_C|1, _("Sales templates")),
116         'SA_SRECURRENT' => array(SS_SALES_C|2, _("Recurrent invoices definitions")),
117         'SA_SALESPRICE' => array(SS_SALES_C|3, _("Sales prices edition")),
118         'SA_SALESGROUP' => array(SS_SALES_C|4, _("Sales groups changes")),
119         'SA_SALESMAN' => array(SS_SALES_C|5, _("Sales staff maintenance")),
120         'SA_SALESAREA' => array(SS_SALES_C|6, _("Sales areas maintenance")),
121
122         'SA_CUSTOMER' => array(SS_SALES|1,  _("Sales customer and branches changes")),
123         'SA_SALESORDER' => array(SS_SALES|2, _("Sales orders edition")),
124         'SA_SALESDELIVERY' => array(SS_SALES|3, _("Sales deliveries edition")),
125         'SA_SALESINVOICE' => array(SS_SALES|4, _("Sales invoices edition")),
126         'SA_SALESCREDITINV' => array(SS_SALES|5, _("Sales credit notes against invoice")),
127         'SA_SALESCREDIT' => array(SS_SALES|6, _("Sales freehand credit notes")),
128         'SA_SALESPAYMNT' => array(SS_SALES|7, _("Customer payments entry")),
129         'SA_SALESALLOC' => array(SS_SALES|1, _("Customer payments allocation")),
130
131         'SA_SALESANALYTIC' => array(SS_SALES_A|2, _("Customer analytical reports and inquiries")),
132         'SA_SALESMANREP' => array(SS_SALES_A|3, _("Sales reports")),
133         'SA_SALESVARREP' => array(SS_SALES_A|4, _("Sales other reports and inquires")),
134
135 //
136 // Purchase related functions
137 //
138         'SA_PURCHASEPRICING' => array(SS_PURCH_C|1, _("Purchase price changes")),
139
140         'SA_SUPPLIER' => array(SS_PURCH|1, _("Suppliers data changes")),
141         'SA_PURCHASEORDER' => array(SS_PURCH|2, _("Purchase order entry")),
142         'SA_GRN' => array(SS_PURCH|3, _("Purchase receive")),
143         'SA_SUPPLIERINVOICE' => array(SS_PURCH|4, _("Supplier invoices")),
144         'SA_SUPPLIERCREDIT' => array(SS_PURCH|5, _("Supplier credit notes")),
145         'SA_SUPPLIERPAYMNT' => array(SS_PURCH|6, _("Supplier payments")),
146         'SA_SUPPLIERALLOC' => array(SS_PURCH|7, _("Supplier payments allocations")),
147
148         'SA_SUPPLIERANALYTIC' => array(SS_PURCH_A|1, _("Supplier analytical reports and inquiries")),
149         'SA_SUPPLIERMANREP' => array(SS_PURCH_A|2, _("Supplier reports")),
150         'SA_SUPPLIERVARREP' => array(SS_PURCH_A|3, _("Supplier other reports and inquiries")),
151 //
152 // Inventory 
153 //
154         'SA_ITEM' => array(SS_ITEMS_C|1, _("Stock items add/edit")),
155         'SA_SALESKIT' => array(SS_ITEMS_C|2, _("Sales kits")),
156         'SA_ITEMCATEGORY' => array(SS_ITEMS_C|3, _("Item categories")),
157         'SA_UOM' => array(SS_ITEMS_C|4, _("Units of measure")),
158
159         'SA_FORITEMCODE' => array(SS_ITEMS|1, _("Foreign item codes entry")),
160         'SA_LOCATIONTRANSFER' => array(SS_ITEMS|2, _("Inventory location transfers")),
161         'SA_INVENTORYADJUSTMENT' => array(SS_ITEMS|3, _("Inventory adjustments")),
162
163         'SA_REORDER' => array(SS_ITEMS_A|1, _("Reorder levels")),
164         'SA_ITEMSANALYTIC' => array(SS_ITEMS_A|2, _("Items analytical reports and inquiries")),
165         'SA_ITEMSMANREP' => array(SS_ITEMS_A|3, _("Inventory reports")),
166         'SA_ITEMSVARREP' => array(SS_ITEMS_A|4, _("Inventory other reports and inquiries")),
167
168 //
169 // Manufacturing module 
170 //
171         'SA_BOM' => array(SS_MANUF_C|1, _("Bill of Materials")),
172
173         'SA_WORKORDERENTRY' => array(SS_MANUF|1, _("Work order entry")),
174         'SA_WORKORDEROPERATION' => array(SS_MANUF|2, _("Work order operations")),
175
176         'SA_WORKORDERANALYTIC' => array(SS_MANUF_A|1, _("Work order analytical reports and inquiries")),
177         'SA_WORKORDERMANREP' => array(SS_MANUF_A|2, _("Work order reports")),
178         'SA_WORKORDERVARREP' => array(SS_MANUF_A|3, _("Work order other reports and inquiries")),
179
180 //
181 // Dimensions
182 //
183         'SA_DIMENSION' => array(SS_DIM|1, _("Dimensions")),
184
185         'SA_DIMENSIONOPERATION' => array(SS_DIM|2, _("Dimension operations")),
186
187         'SA_DIMENSIONANALYTIC' => array(SS_DIM|3, _("Dimension analytical reports and inquiries")),
188         'SA_DIMENSIONMANREP' => array(SS_DIM|4, _("Dimension reports")),
189         'SA_DIMENSIONVARREP' => array(SS_DIM|5, _("Dimension other reports and inquiries")),
190 //
191 // Banking and General Ledger
192 //
193         'SA_ITEMTAXTYPE' => array(SS_GL_C|1, _("Item tax type definitions")),
194         'SA_GLACCOUNT' => array(SS_GL_C|2, _("GL accounts edition")),
195         'SA_GLACCOUNTGROUP' => array(SS_GL_C|3, _("GL account groups")),
196         'SA_GLACCOUNTCLASS' => array(SS_GL_C|4, _("GL account classes")),
197         'SA_QUICKENTRY' => array(SS_GL_C|5, _("Quick GL entry definitions")),
198         'SA_CURRENCY' => array(SS_GL_C|6, _("Currencies")),
199         'SA_BANKACCOUNT' => array(SS_GL_C|7, _("Bank accounts")),
200         'SA_SETUPTAX' => array(SS_GL_C|8, _("Tax rates")),
201         'SA_SETUPFISCALYEAR' => array(SS_GL_C|9, _("Fiscal years maintenance")),
202
203         'SA_EXCHANGERATE' => array(SS_GL|1, _("Exchange rate table changes")),
204         'SA_PAYMENT' => array(SS_GL|2, _("Bank payments")),
205         'SA_DEPOSIT' => array(SS_GL|3, _("Bank deposits")),
206         'SA_BANKACCOUNTTRANSFER' => array(SS_GL|4, _("Bank account transfers")),
207         'SA_JOURNALENTRY' => array(SS_GL|5, _("Manual journal entries")),
208         'SA_BUDGETENTRY' => array(SS_GL|6, _("Budget edition")),
209         'SA_RECONCILE' => array(SS_GL|7, _("Bank reconciliation")),
210         'SA_STANDARDCOST' => array(SS_GL|8, _("Item standard costs")),
211
212         'SA_GLANALYTIC' => array(SS_GL_A|1, _("Bank and GL analytical reports and inquiries")),
213         'SA_GLMANREP' => array(SS_GL_A|2, _("Bank and GL reports")),
214         'SA_GLVARREP' => array(SS_GL_A|3, _("Bank and GL other reports and inquiries"))
215 );
216 ?>