Esempio n. 1
0
 public static function update_permissions($group_id, $post_rules, $post_modules)
 {
     // if post_modules is empty erase all rules
     if (!isset($post_modules) or empty($post_modules)) {
         $perm_to_erase = Permission::where('group_id', '=', $group_id)->delete();
         //VERY IMPORTANT
         return;
     }
     // Get the modules id name and roles
     $modules = \Modules\Model\Module::where_in('id', $post_modules)->get(array('id', 'slug', 'roles'));
     // If the permission has just one field and it was unckecked
     // erase it from the permissions table
     $perm_to_erase = Permission::where_not_in('module_id', $post_modules)->where('group_id', '=', $group_id)->get();
     if (isset($perm_to_erase) and !empty($perm_to_erase)) {
         foreach ($perm_to_erase as $permission) {
             $permission->delete();
         }
     }
     unset($perm_to_erase);
     foreach ($modules as $module) {
         $permission = Permission::where('group_id', '=', $group_id)->where('module_id', '=', $module->id)->first();
         if (empty($permission)) {
             $permission = new Permission();
             $permission->module_id = $module->id;
             $permission->group_id = $group_id;
             $permission->module_name = $module->slug;
             $permission->roles = $module->roles;
         }
         $permission->roles = json_decode($permission->roles, true);
         if ($permission->roles == null) {
             $permission->roles = json_decode($module->roles, true);
         }
         $tmp_permission = $permission->roles;
         $result = array();
         foreach ($tmp_permission as $role) {
             $tmp['name'] = $role['name'];
             $tmp['description'] = isset($role['name']) ?: 'No description provided for this role.';
             $tmp['slug'] = $role['slug'];
             if (isset($post_rules[$module->id][$role['slug']])) {
                 $tmp['value'] = true;
             } else {
                 $tmp['value'] = false;
             }
             $result[] = $tmp;
         }
         $permissions_result = $permission->roles = json_encode($result);
         $permission->save();
     }
 }