[ Index ]
 

Code source de dotProject 2.1 RC1

Accédez au Source d'autres logiciels libres | Soutenez Angelica Josefina !

title

Body

[fermer]

/db/ -> upgrade_permissions.php (source)

   1  <?php
   2  
   3  if (! defined('DP_BASE_DIR')) {
   4      die('You must not run this script manually.  Instead run the Installer in install/index.php');
   5  }
   6  
   7  @include_once  DP_BASE_DIR."/includes/config.php";
   8  require_once  DP_BASE_DIR."/includes/main_functions.php";
   9  require_once  DP_BASE_DIR."/install/install.inc.php";
  10  require_once  DP_BASE_DIR."/includes/db_adodb.php";
  11  require_once  DP_BASE_DIR."/includes/db_connect.php";
  12  
  13  
  14  // Now update the GACL class information.
  15  require_once  DP_BASE_DIR."/classes/permissions.class.php";
  16  
  17  dPmsg("Creating new Permissions objects");
  18  $perms =& new dPacl;
  19  
  20  // First, create the basic ACL sections.
  21  $perms->add_object_section('System', "system", 1, 0, "aco");
  22  $perms->add_object_section('Application', "application", 2, 0, "aco");
  23  $perms->add_object_section('Users', "user", 1, 0, "aro");
  24  $perms->add_object_section('System', "sys", 1, 0, "axo");
  25  $perms->add_object_section('Application', "app", 2, 0, "axo");
  26  
  27  // Create the permissions in the ACO sections.
  28  $perms->add_object("system", "Login", "login", 1, 0, "aco");
  29  
  30  $perms->add_object("application", "Access", "access", 1, 0, "aco");
  31  $perms->add_object("application", "View", "view", 2, 0, "aco");
  32  $perms->add_object("application", "Add", "add", 3, 0, "aco");
  33  $perms->add_object("application", "Edit", "edit", 4, 0, "aco");
  34  $perms->add_object("application", "Delete", "delete", 5, 0, "aco");
  35  
  36  // Now create the groups we need.
  37  $role = $perms->add_group("role", "Roles", 0, "aro");
  38  
  39  $admin_role = $perms->add_group("admin", "Administrator", $role, "aro");
  40  $anon_role = $perms->add_group("anon", "Anonymous", $role, "aro");
  41  $guest_role = $perms->add_group("guest", "Guest", $role, "aro");
  42  $worker_role = $perms->add_group("normal", "Project worker", $role, "aro");
  43  
  44  $mod = $perms->add_group("mod", "Modules", 0, "axo");
  45  $all_mods = $perms->add_group("all", "All Modules", $mod, "axo");
  46  $admin_mods = $perms->add_group("admin", "Admin Modules", $mod, "axo");
  47  $non_admin_mods = $perms->add_group("non_admin", "Non-Admin Modules", $mod, "axo");
  48  
  49  // Now create all of the objects we need
  50  $perms->add_object("sys", "ACL Administration", "acl", 1, 0, "axo");
  51  $perms->add_object("app", "User Administration", "admin", 1, 0, "axo");
  52  $perms->add_object("app", "Calendar", "calendar", 2, 0, "axo");
  53  $perms->add_object("app", "Events", "events", 2, 0, "axo");
  54  $perms->add_object("app", "Companies", "companies", 3, 0, "axo");
  55  $perms->add_object("app", "Contacts", "contacts", 4, 0, "axo");
  56  $perms->add_object("app", "Departments", "departments", 5, 0, "axo");
  57  $perms->add_object("app", "Files", "files", 6, 0, "axo");
  58  $perms->add_object("app", "Forums", "forums", 7, 0, "axo");
  59  $perms->add_object("app", "Help", "help", 8, 0, "axo");
  60  $perms->add_object("app", "Projects", "projects", 9, 0, "axo");
  61  $perms->add_object("app", "System Administration", "system", 10, 0, "axo");
  62  $perms->add_object("app", "Tasks", "tasks", 11, 0, "axo");
  63  $perms->add_object("app", "Task Logs", "task_log", 11, 0, "axo");
  64  $perms->add_object("app", "Tickets", "ticketsmith", 12, 0, "axo");
  65  $perms->add_object("app", "Public", "public", 13, 0, "axo");
  66  $perms->add_object("app", "Roles Administration", "roles", 14, 0, "axo");
  67  $perms->add_object("app", "User Table", "users", 15, 0, "axo");
  68  
  69  // Now we need to add some objects to some groups.
  70  $perms->add_group_object($all_mods, "app", "admin", "axo");
  71  $perms->add_group_object($all_mods, "app", "calendar", "axo");
  72  $perms->add_group_object($all_mods, "app", "companies", "axo");
  73  $perms->add_group_object($all_mods, "app", "events", "axo");
  74  $perms->add_group_object($all_mods, "app", "contacts", "axo");
  75  $perms->add_group_object($all_mods, "app", "departments", "axo");
  76  $perms->add_group_object($all_mods, "app", "files", "axo");
  77  $perms->add_group_object($all_mods, "app", "forums", "axo");
  78  $perms->add_group_object($all_mods, "app", "help", "axo");
  79  $perms->add_group_object($all_mods, "app", "projects", "axo");
  80  $perms->add_group_object($all_mods, "app", "system", "axo");
  81  $perms->add_group_object($all_mods, "app", "tasks", "axo");
  82  $perms->add_group_object($all_mods, "app", "task_log", "axo");
  83  $perms->add_group_object($all_mods, "app", "ticketsmith", "axo");
  84  $perms->add_group_object($all_mods, "app", "public", "axo");
  85  $perms->add_group_object($all_mods, "app", "roles", "axo");
  86  $perms->add_group_object($all_mods, "app", "users", "axo");
  87  
  88  // Admin groups
  89  $perms->add_group_object($admin_mods, "app", "admin", "axo");
  90  $perms->add_group_object($admin_mods, "app", "system", "axo");
  91  $perms->add_group_object($admin_mods, "app", "roles", "axo");
  92  $perms->add_group_object($admin_mods, "app", "users", "axo");
  93  
  94  // Non admin groups
  95  $perms->add_group_object($non_admin_mods, "app", "calendar", "axo");
  96  $perms->add_group_object($non_admin_mods, "app", "events", "axo");
  97  $perms->add_group_object($non_admin_mods, "app", "companies", "axo");
  98  $perms->add_group_object($non_admin_mods, "app", "contacts", "axo");
  99  $perms->add_group_object($non_admin_mods, "app", "departments", "axo");
 100  $perms->add_group_object($non_admin_mods, "app", "files", "axo");
 101  $perms->add_group_object($non_admin_mods, "app", "forums", "axo");
 102  $perms->add_group_object($non_admin_mods, "app", "help", "axo");
 103  $perms->add_group_object($non_admin_mods, "app", "projects", "axo");
 104  $perms->add_group_object($non_admin_mods, "app", "tasks", "axo");
 105  $perms->add_group_object($non_admin_mods, "app", "task_log", "axo");
 106  $perms->add_group_object($non_admin_mods, "app", "ticketsmith", "axo");
 107  $perms->add_group_object($non_admin_mods, "app", "public", "axo");
 108  
 109  // Assign default permissions
 110  
 111  // the Roles group has Login permission.
 112  $login_perms = array();
 113  $login_perms['system'] = array("login");
 114  
 115  $all_perms = array();
 116  $all_perms['application'] = array('access', 'add', 'edit', 'view', 'delete');
 117  
 118  $access_perms = array();
 119  $access_perms['application'] = array('access');
 120  
 121  $view_perms = array();
 122  $view_perms['application'] = array('access', 'view');
 123  
 124  $acl_perms = array();
 125  $acl_perms['sys'] = array('acl');
 126  
 127  $perms->add_acl($login_perms, null, array($role), null, null, 1, 1, null, null, "user");
 128  
 129  // Administrator has ALL on ALL
 130  $perms->add_acl($all_perms, null, array($admin_role), null, array($all_mods), 1, 1, null, null, "user");
 131  $perms->add_acl($access_perms, null, array($admin_role), $acl_perms, null, 1, 1, null, null, 'user');
 132  // TODO:  Add the administrator ACL access.
 133  
 134  // Guest has view on ALL
 135  $perms->add_acl($view_perms, null, array($guest_role), null, array($non_admin_mods), 1, 1, null, null, "user");
 136  
 137  // Anon has only access on all
 138  $perms->add_acl($access_perms, null, array($anon_role), null, array($non_admin_mods), 1, 1, null, null, "user");
 139  
 140  // Worker has All on non-admin
 141  $perms->add_acl($all_perms, null, array($worker_role), null, array($non_admin_mods), 1, 1, null, null, "user");
 142  
 143  
 144  dPmsg("Converting admin user permissions to Administrator Role");
 145  // Now we have the basics set up we need to create objects for all users
 146  
 147  $sql = "SELECT user_id, user_username, permission_id from users
 148  LEFT JOIN permissions ON permission_user = users.user_id and permission_grant_on = 'all' 
 149  AND permission_item = -1 and permission_value = -1";
 150  
 151  $res = db_exec($sql);
 152  if ($res) {
 153    while ($row = db_fetch_assoc($res)) {
 154      // Add the basic ARO
 155      $perms->add_object("user", $row["user_username"], $row["user_id"], 1, 0, "aro");
 156      if ($row["permission_id"]) {
 157        $perms->add_group_object($admin_role, "user", $row["user_id"], "aro");
 158      }
 159    }
 160  }
 161  
 162  dPmsg("Searching for add-on modules to add to new permissions");
 163  // Upgrade permissions for custom modules
 164  $sql = "SELECT mod_directory, mod_name, permissions_item_table
 165      FROM modules
 166      WHERE mod_ui_active = 1
 167      AND mod_type = 'user'";
 168  $custom_modules = db_loadList($sql);
 169  foreach($custom_modules as $mod)
 170  {
 171    $perms->addModule($mod['mod_directory'], $mod['mod_name']);
 172    $perms->addGroupItem($mod['mod_directory'], "non_admin");
 173                  
 174    if (isset($mod['permissions_item_table']) && $mod['permissions_item_table'])
 175      $perms->addModuleSection($mod['permissions_item_table']);
 176  }
 177  ?>


Généré le : Sun Feb 18 19:46:52 2007 par Balluche grâce à PHPXref 0.7