public function __construct($user_id)
 {
     if (!isset($user_id)) {
         throw new CNException(REQUIRED_PARAMETERS_MISSING, "PermissionsHandler::__construct() must be called with User object or user_id parameter");
     }
     $tasks_obj = Tasks::get_instance();
     $this->tasks = $tasks_obj->get_tasks();
     foreach ($this->tasks as $task) {
         $this->static_permissions[] = $task->task_value;
     }
     $this->uid = (int) $user_id;
     $this->is_net_admin = Network::is_admin(PA::$network_info->network_id, $this->uid);
     $roles = Roles::get_user_roles((int) $user_id, DB_FETCHMODE_OBJECT);
     //    echo "User Roles <pre>".print_r(PA::$login_user, 1). "</pre>";
     $this->user_permissions = array();
     $user_perms = array();
     $network_perms = array();
     $groups_perms = array();
     foreach (array('user', 'network', 'groups') as $type) {
         foreach ($roles as $role) {
             $role_extra = unserialize($role->extra);
             if ($type == 'user') {
                 $condition = $role_extra['user'] == true;
             } else {
                 if ($type == 'network') {
                     $condition = $role_extra['network'] == true;
                 } else {
                     $condition = count($role_extra['groups']) > 0;
                 }
             }
             if ($condition) {
                 $role_tasks = Roles::get_tasks_of_role($role->role_id);
                 //         echo "RoleID: $role->role_id<pre>".print_r($role_tasks,1)."</pre>";
                 if ($role_tasks) {
                     foreach ($role_tasks as $rt) {
                         if ($type == 'user') {
                             $user_perms[] = $rt->task_value;
                         } else {
                             if ($type == 'network') {
                                 $network_perms[] = $rt->task_value;
                             } else {
                                 foreach ($role_extra['groups'] as $group_id) {
                                     if (isset($groups_perms[$group_id]) && is_array($groups_perms[$group_id])) {
                                         array_push($groups_perms[$group_id], $rt->task_value);
                                     } else {
                                         $groups_perms[$group_id] = array($rt->task_value);
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     $this->user_permissions['user'] = $user_perms;
     $this->user_permissions['network'] = $network_perms;
     $this->user_permissions['groups'] = $groups_perms;
     if ($this->is_net_admin) {
         // user is network admin, grant him same privileges for all network groups
         foreach ($this->user_permissions['groups'] as &$gr_perms) {
             $gr_perms = array_unique(array_merge($gr_perms, $this->user_permissions['network']));
         }
     }
     //    echo "<pre>".print_r($this->user_permissions,1)."</pre>";
 }
} else {
    foreach ($u_groups as $group) {
        $user_groups[$group['gid']] = $group['name'];
    }
}
if ($group_id) {
    // show only Group roles
    $u_roles = Roles::get_user_roles($user_id, DB_FETCHMODE_ASSOC, array('type' => 'group', 'gid' => $group_id));
} else {
    // show network and user personal pages roles
    $g_roles = array();
    $u_roles = array();
    $net_roles = array();
    $g_roles = Roles::get_user_roles($user_id, DB_FETCHMODE_ASSOC, array('type' => 'group', 'gid' => $group_id));
    $u_roles = Roles::get_user_roles($user_id, DB_FETCHMODE_ASSOC, array('type' => 'user'));
    $net_roles = Roles::get_user_roles($user_id, DB_FETCHMODE_ASSOC, array('type' => 'network'));
    $u_roles = array_merge($u_roles, $net_roles);
    $u_roles = array_merge($u_roles, $g_roles);
}
foreach ($u_roles as $role) {
    $role_id = $role['role_id'];
    $role_type = $role['type'];
    $role_name = Roles::get_role_name($role_id);
    $role_tasks = Roles::get_tasks_of_role($role_id);
    $role_extra = unserialize($role['extra']);
    $role_info = array('role_id' => $role_id, 'name' => $role_name, 'type' => $role_type, 'extra' => $role_extra, 'tasks' => $role_tasks);
    $user_roles[$role_id] = $role_info;
    if ($role_id == $sel_role_id) {
        $selected_role = $role_info;
    }
}
 private function get_user_task_permissions($uid)
 {
     $tasks = array();
     $role_obj = Roles::get_user_roles($uid);
     if (!empty($role_obj)) {
         $tasks = array();
         foreach ($role_obj as $r_obj) {
             $tasks_roles = Roles::get_tasks_of_role($r_obj->role_id);
             if ($tasks_roles) {
                 $tasks = array_merge($tasks, $tasks_roles);
             }
         }
     }
     return $tasks;
 }
Ejemplo n.º 4
0
        $start = 0;
        $length = strlen($links[$i]['email']) + 15;
        for ($end = 0; $end <= $length; $end += 15) {
            echo substr($links[$i]['email'], $start, $end) . "<br>";
            $start = $end;
        }
        ?>
</a>
                                    </td>
                        -->
                        <td><div  id = "curr_role<?php 
        echo $links[$i]['user_id'];
        ?>
" >
                                <?php 
        $user_roles = Roles::get_user_roles((int) $links[$i]['user_id'], DB_FETCHMODE_ASSOC);
        //             echo '<pre>' . print_r($user_roles,1) . '</pre>';
        foreach ($user_roles as $role) {
            $rolename = $roles_list[$role['role_id']];
            ?>
                                    <?php 
            echo $rolename;
            ?>
<br />
                                <?php 
        }
        ?>
                                <div></td>

                                    <td><a href="<?php 
        echo $url;
Ejemplo n.º 5
0
 public static function check_permission($uid, $task_id)
 {
     $result = false;
     Logger::log("Enter: function Roles::check_permission");
     if (SUPER_USER_ID == $uid) {
         return TRUE;
         //TODO:same holds true for network owner
     }
     $role_obj = Roles::get_user_roles($uid);
     foreach ($role_obj as $r_obj) {
         $result = Roles::is_roletask_exist($r_obj->role_id, $task_id);
         if ($result) {
             break;
         }
         // user have permission for this task!
     }
     Logger::log("Exit: function Roles::check_permission");
     return $result;
 }
$group_id = !empty($_REQUEST['gid']) && $_REQUEST['gid'] != '-1' ? $_REQUEST['gid'] : null;
$user_roles = array();
$user_groups = array();
$u_groups = Group::get_user_groups($user_id);
if (count($u_groups) < 1) {
    $u_groups = Group::get_all_groups_for_admin(FALSE);
    foreach ($u_groups as $group) {
        $user_groups[$group['group_id']] = $group['title'];
    }
} else {
    foreach ($u_groups as $group) {
        $user_groups[$group['gid']] = $group['name'];
    }
}
$r_params = $group_id ? array('type' => 'group', 'gid' => $group_id) : null;
$u_roles = Roles::get_user_roles($user_id, DB_FETCHMODE_ASSOC, $r_params);
foreach ($u_roles as $role) {
    $role_id = $role['role_id'];
    $role_type = $role['type'];
    $role_name = Roles::get_role_name($role_id);
    $role_tasks = Roles::get_tasks_of_role($role_id);
    $role_extra = unserialize($role['extra']);
    $role_info = array('role_id' => $role_id, 'name' => $role_name, 'type' => $role_type, 'extra' => $role_extra, 'tasks' => $role_tasks);
    $user_roles[$role_id] = $role_info;
}
?>

      <?php 
foreach ($user_roles as $role) {
    $curr_role_id = $role['role_id'];
    $extra = $role['extra'];
                }
            }
            $extra['groups'] = $_groups;
        }
    }
    $user_roles = array();
    $role = new Roles();
    $_extra = serialize(array('user' => true, 'network' => true, 'groups' => array()));
    if (!empty($role_extra[$role_id])) {
        $_extra = serialize($role_extra[$role_id]);
    } else {
        if ($group_id) {
            $_extra = array('user' => false, 'network' => false, 'groups' => array($group_id));
            $_extra = serialize($_extra);
        }
    }
    $user_roles[] = array('role_id' => $role_id, 'extra' => $_extra);
    if ($_POST['roles_action'] == 'delete') {
        $role->delete_user_roles($uid, $user_roles, $group_id);
    } else {
        $role->assign_role_to_user($user_roles, $uid);
    }
    $names = array();
    $r_params = $group_id ? array('type' => 'group', 'gid' => $group_id) : null;
    $saved_roles = Roles::get_user_roles($uid, DB_FETCHMODE_OBJECT, $r_params);
    foreach ($saved_roles as $s_role) {
        $names[] = Roles::get_role_name($s_role->role_id);
    }
    $msg = implode("<br />", $names);
    echo $msg;
}