Merge branch 'master' of /home/git/private/web.mtrack
[web.mtrack] / MTrackWeb / Roo.php
1 <?php
2
3
4 require_once 'Pman/Roo.php';
5
6
7 /**
8  * This extends the standard Roo API
9  *
10  * however it has to verify that we send data protected, as it's pretty open!!!
11  *
12  * 
13  *
14  */
15
16 class MTrackWeb_Roo extends Pman_Roo
17 {
18     var $validTables = array(
19         'mtrack_ticket', /// all of these MUST have applyFilters, and check authenication..
20         'Mtrack_ticket', /// all of these MUST have applyFilters, and check authenication..
21         'mtrack_change',
22         'core_enum',
23         'Person',
24         'mtrack_milestone',
25         'Projects',
26         'Images',
27         'mtrack_repos'
28         
29     );
30     
31     function getAuth() {
32         Pman::getAuth(); // load company!
33         $au = $this->getAuthUser();
34         $this->authUser =  false;
35         if ($au) {
36            $this->authUser = $au;
37         }
38         
39         return true;
40     }
41     
42     function delete()
43     {
44         $this->jerr("Delete not permitted yet...");
45         // only post requests..???
46         // need perms sorting out first.
47     }
48     
49     function checkPerm($obj, $lvl, $req=null) {
50         $res = parent::checkPerm($obj,$lvl,$req);
51         if (!$res) {
52             return $res;
53         }
54         
55         if (!$this->authUser && $this->authUser->company()->comptype == 'OWNER') {
56             return true;
57         }
58         // these checks only apply to non-company users.
59         
60         // normally allowed, but we have more restrictions...
61         switch($obj->tablename()) {
62             case 'core_enum':
63                 if (empty($req['etype'])) {
64                     return false;
65                 }
66                 if ($lvl != 'S') {
67                     return false;
68                 }
69                 
70                 switch ($req['etype']) {
71                     case 'severity':
72                     case 'classification':
73                     case 'severity':
74                     case 'resolution':
75                     case 'priority':
76                     case 'ticketstate':                    
77                      
78                     
79                     // not a member of the company..
80                     // not allowed in..
81                     return true;
82                 }
83                 return false;
84             
85             default:
86                 return false;
87                 
88             
89             
90         }
91         
92         
93         
94     }
95 }