Welcome Guest, Not a member yet? Register   Sign In
Khaos :: KhACL
#93

[eluser]Tominator[/eluser]
Hi guys!

If you need (as I needed) to set all permissions to admin group, and you have many ACO's (subjects) and many AXO's (actions), you are in big trouble Smile

Feature: $this->acl->allow('admin', 'website', 'all') will be great, won't it?

Ok, I have solution Smile I know, it isn't best but it partially works Smile

So, here we go:

1, Open khacl.php
2, Find line 196 - 208:
Code:
if ($axo !== null)
        {
            if (!($rs = $this->_CI->db->get_where($this->_Tables['axos'], array('name' => $axo), 1)))
                return false;    
            
            if ($rs->num_rows() == 1)
            {
                $row    = $rs->row();
                $axo_id = $row->id;
            }
            else
                return false;    
        }

Replace with:
Code:
if ($axo !== null)
        {
            if ($axo !== 'all')
            {
                if (!($rs = $this->_CI->db->get_where($this->_Tables['axos'], array('name' => $axo), 1)))
                    return false;    
                
                if ($rs->num_rows() == 1)
                {
                    $row    = $rs->row();
                    $axo_id = $row->id;
                }
                else
                    return false;
            }
            
            else
            {
                if (!($rs = $this->_CI->db->get_where($this->_Tables['axos'])))
                    return false;    
                
                if ($rs->num_rows() > 0)
                {
                    $axo = array();
                    
                    foreach ($rs->result() as $row)
                    {
                        $axo[]    = $row->id;
                    }
                }
                else
                    return false;
            }
        }

3. Find line 277 - 303:
Code:
if ($axo !== null)
        {
            
            if (($rs = $this->_CI->db->get_where($this->_Tables['access_actions'], array('access_id' => $access_id, 'axo_id' => $axo_id))) !== false)
            {
                if ($rs->num_rows() === 0) // create link
                {
                    if (!$this->_CI->db->insert($this->_Tables['access_actions'], array('access_id' => $access_id, 'axo_id' => $axo_id, 'allow' => $allow)))
                        return false;
                }
                else // Modify existing link
                {
                    $row = $rs->row();
                    
                    if ($row->allow != $allow)
                        if (!$this->_CI->db->update($this->_Tables['access_actions'], array('allow' => $allow), array('id' => $row->id)))
                            return false;
                }
                
                return true;
            }
            else
                return false;
        }
        else
            return true;
}

Replace with:
Code:
if ($axo !== null)
        {
            if (is_array($axo))
            {
                foreach ($axo as $axo_id)
                {
                    $this->_set_helper($access_id, $axo_id, $allow);
                }
            }
            
            else
                $this->_set_helper($access_id, $axo_id, $allow);
            
        }
        else
            return true;
    }  
    
    function _set_helper($access_id, $axo_id, $allow)
    {
        if (($rs = $this->_CI->db->get_where($this->_Tables['access_actions'], array('access_id' => $access_id, 'axo_id' => $axo_id))) !== false)
        {
               if ($rs->num_rows() === 0) // create link
            {
                if (!$this->_CI->db->insert($this->_Tables['access_actions'], array('access_id' => $access_id, 'axo_id' => $axo_id, 'allow' => $allow)))
                    return false;
            }
            else // Modify existing link
            {
                $row = $rs->row();
                
                if ($row->allow != $allow)
                    if (!$this->_CI->db->update($this->_Tables['access_actions'], array('allow' => $allow), array('id' => $row->id)))
                        return false;
            }
            
            return true;
        }
        else
            return false;
    }

If you make new AXOs or ACOs you have to allow them (you can use 'all' again).

Tom.


Messages In This Thread
Khaos :: KhACL - by El Forum - 01-29-2008, 10:49 AM
Khaos :: KhACL - by El Forum - 01-29-2008, 11:42 AM
Khaos :: KhACL - by El Forum - 01-29-2008, 12:35 PM
Khaos :: KhACL - by El Forum - 01-30-2008, 07:10 AM
Khaos :: KhACL - by El Forum - 01-30-2008, 05:11 PM
Khaos :: KhACL - by El Forum - 01-30-2008, 08:17 PM
Khaos :: KhACL - by El Forum - 01-31-2008, 03:49 AM
Khaos :: KhACL - by El Forum - 01-31-2008, 09:14 AM
Khaos :: KhACL - by El Forum - 01-31-2008, 10:03 AM
Khaos :: KhACL - by El Forum - 01-31-2008, 10:33 AM
Khaos :: KhACL - by El Forum - 01-31-2008, 10:39 AM
Khaos :: KhACL - by El Forum - 01-31-2008, 10:50 AM
Khaos :: KhACL - by El Forum - 01-31-2008, 03:14 PM
Khaos :: KhACL - by El Forum - 02-03-2008, 11:00 AM
Khaos :: KhACL - by El Forum - 02-03-2008, 01:35 PM
Khaos :: KhACL - by El Forum - 02-04-2008, 12:22 PM
Khaos :: KhACL - by El Forum - 02-05-2008, 03:45 AM
Khaos :: KhACL - by El Forum - 02-25-2008, 12:42 PM
Khaos :: KhACL - by El Forum - 02-25-2008, 01:16 PM
Khaos :: KhACL - by El Forum - 02-25-2008, 02:53 PM
Khaos :: KhACL - by El Forum - 02-25-2008, 02:59 PM
Khaos :: KhACL - by El Forum - 02-25-2008, 03:55 PM
Khaos :: KhACL - by El Forum - 02-25-2008, 04:03 PM
Khaos :: KhACL - by El Forum - 02-29-2008, 09:56 AM
Khaos :: KhACL - by El Forum - 03-02-2008, 06:23 AM
Khaos :: KhACL - by El Forum - 03-02-2008, 07:03 AM
Khaos :: KhACL - by El Forum - 03-02-2008, 07:28 AM
Khaos :: KhACL - by El Forum - 03-02-2008, 07:34 AM
Khaos :: KhACL - by El Forum - 03-02-2008, 07:44 AM
Khaos :: KhACL - by El Forum - 03-02-2008, 08:05 AM
Khaos :: KhACL - by El Forum - 03-02-2008, 08:20 AM
Khaos :: KhACL - by El Forum - 03-02-2008, 09:06 AM
Khaos :: KhACL - by El Forum - 03-02-2008, 09:12 AM
Khaos :: KhACL - by El Forum - 03-02-2008, 09:19 AM
Khaos :: KhACL - by El Forum - 03-02-2008, 09:26 AM
Khaos :: KhACL - by El Forum - 03-02-2008, 09:46 AM
Khaos :: KhACL - by El Forum - 03-02-2008, 10:47 AM
Khaos :: KhACL - by El Forum - 03-08-2008, 05:37 PM
Khaos :: KhACL - by El Forum - 03-09-2008, 10:22 AM
Khaos :: KhACL - by El Forum - 03-09-2008, 10:24 AM
Khaos :: KhACL - by El Forum - 03-09-2008, 12:21 PM
Khaos :: KhACL - by El Forum - 03-20-2008, 05:25 AM
Khaos :: KhACL - by El Forum - 03-20-2008, 06:14 AM
Khaos :: KhACL - by El Forum - 03-20-2008, 07:08 AM
Khaos :: KhACL - by El Forum - 03-20-2008, 07:42 AM
Khaos :: KhACL - by El Forum - 03-20-2008, 11:31 AM
Khaos :: KhACL - by El Forum - 03-20-2008, 11:40 AM
Khaos :: KhACL - by El Forum - 03-21-2008, 05:16 AM
Khaos :: KhACL - by El Forum - 03-21-2008, 05:25 AM
Khaos :: KhACL - by El Forum - 03-21-2008, 07:54 AM
Khaos :: KhACL - by El Forum - 03-21-2008, 08:31 AM
Khaos :: KhACL - by El Forum - 03-21-2008, 12:35 PM
Khaos :: KhACL - by El Forum - 03-21-2008, 12:38 PM
Khaos :: KhACL - by El Forum - 03-21-2008, 01:28 PM
Khaos :: KhACL - by El Forum - 03-21-2008, 01:33 PM
Khaos :: KhACL - by El Forum - 03-21-2008, 03:18 PM
Khaos :: KhACL - by El Forum - 03-21-2008, 06:37 PM
Khaos :: KhACL - by El Forum - 03-26-2008, 05:13 AM
Khaos :: KhACL - by El Forum - 03-28-2008, 02:16 AM
Khaos :: KhACL - by El Forum - 03-30-2008, 02:17 AM
Khaos :: KhACL - by El Forum - 03-30-2008, 04:07 AM
Khaos :: KhACL - by El Forum - 03-30-2008, 04:26 AM
Khaos :: KhACL - by El Forum - 03-30-2008, 05:32 AM
Khaos :: KhACL - by El Forum - 03-30-2008, 06:28 AM
Khaos :: KhACL - by El Forum - 03-30-2008, 09:36 AM
Khaos :: KhACL - by El Forum - 03-30-2008, 10:23 AM
Khaos :: KhACL - by El Forum - 03-30-2008, 10:25 PM
Khaos :: KhACL - by El Forum - 03-31-2008, 02:59 AM
Khaos :: KhACL - by El Forum - 03-31-2008, 03:20 AM
Khaos :: KhACL - by El Forum - 03-31-2008, 06:43 AM
Khaos :: KhACL - by El Forum - 04-11-2008, 11:33 AM
Khaos :: KhACL - by El Forum - 04-11-2008, 11:48 AM
Khaos :: KhACL - by El Forum - 04-12-2008, 02:17 AM
Khaos :: KhACL - by El Forum - 04-14-2008, 02:32 AM
Khaos :: KhACL - by El Forum - 04-14-2008, 11:11 AM
Khaos :: KhACL - by El Forum - 05-02-2008, 01:04 AM
Khaos :: KhACL - by El Forum - 05-02-2008, 02:05 AM
Khaos :: KhACL - by El Forum - 05-19-2008, 05:01 PM
Khaos :: KhACL - by El Forum - 05-19-2008, 05:31 PM
Khaos :: KhACL - by El Forum - 05-19-2008, 05:40 PM
Khaos :: KhACL - by El Forum - 06-09-2008, 10:26 AM
Khaos :: KhACL - by El Forum - 06-17-2008, 02:31 PM
Khaos :: KhACL - by El Forum - 06-17-2008, 02:33 PM
Khaos :: KhACL - by El Forum - 06-25-2008, 09:43 AM
Khaos :: KhACL - by El Forum - 06-25-2008, 09:44 AM
Khaos :: KhACL - by El Forum - 06-26-2008, 06:54 AM
Khaos :: KhACL - by El Forum - 07-24-2008, 11:29 PM
Khaos :: KhACL - by El Forum - 07-27-2008, 06:06 PM
Khaos :: KhACL - by El Forum - 09-09-2008, 03:51 PM
Khaos :: KhACL - by El Forum - 05-06-2009, 03:18 AM
Khaos :: KhACL - by El Forum - 06-16-2009, 03:35 AM
Khaos :: KhACL - by El Forum - 07-24-2009, 12:48 AM
Khaos :: KhACL - by El Forum - 11-02-2010, 06:18 AM



Theme © iAndrew 2016 - Forum software by © MyBB