drwkqwa82140 2018-07-25 12:56 采纳率: 0%
浏览 68
已采纳

codeigniter中的动态菜单和角色权限

Hello Guyzz i am new in codeigniter, and i need help in role base login in system, i have two table 1st in Category and 2nd is user_reg,

In 2nd table category_id stored like this 1,2,3 so is it Possible to fetch this id?

Please Give me suggestion and solution i am new in CI, give me some guidance about dynamic menu and role based login access

Category:enter image description here

User: enter image description here

  • 写回答

3条回答 默认 最新

  • dqqn32019 2018-07-29 07:21
    关注

    database tables example :

    CREATE TABLE IF NOT EXISTS `users` (
      `user_id` int(11) NOT NULL AUTO_INCREMENT,
      `first_name` varchar(100) NOT NULL,
      `last_name` varchar(100) NOT NULL,
      `username` varchar(100) NOT NULL,
      `password` text NOT NULL,
      `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`user_id`),
      KEY `user_id` (`user_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
    
    INSERT INTO `users` (`user_id`, `first_name`, `last_name`, `username`, `password`, `create_at`) VALUES
    (1, 'ali', 'qorbani', 'aliqorbani', '63bed66f3d9dcd13440490d90738f816', '2018-07-28 08:34:01'),
    (2, 'mohammad', 'ahmadi', 'mohammad', '316946a88ad51d75465c4c0b1e4a066a', '2018-07-28 08:34:01');
    
    
    CREATE TABLE IF NOT EXISTS `user_groups` (
      `group_id` int(11) NOT NULL AUTO_INCREMENT,
      `group_name` varchar(100) NOT NULL,
      `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`group_id`),
      KEY `group_id` (`group_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
    
    INSERT INTO `user_groups` (`group_id`, `group_name`, `create_at`) VALUES
    (1, 'superadmin', '2018-07-28 08:35:56'),
    (2, 'admin', '2018-07-28 08:35:56'),
    (3, 'moderator', '2018-07-28 08:36:12'),
    (4, 'customer', '2018-07-28 08:36:12');
    
    CREATE TABLE IF NOT EXISTS `user_roles` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `user_id` int(11) NOT NULL,
      `group_id` int(11) NOT NULL,
      PRIMARY KEY (`id`),
      KEY `id` (`id`),
      KEY `user_id` (`user_id`),
      KEY `group_id` (`group_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    
    ALTER TABLE `user_roles`
      ADD CONSTRAINT `user_roles_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
      ADD CONSTRAINT `user_roles_ibfk_2` FOREIGN KEY (`group_id`) REFERENCES `user_groups` (`group_id`) ON DELETE CASCADE ON UPDATE CASCADE;
    COMMIT;
    

    codes for your model will be like this.

    //User_model

    public function add($data){
        $this->db->insert('users',$data);
        return true;
    }
    public function update($data,$id){
        $this->db->where('user_id',$id);
        $this->db->update('users',$data);
        return true;
    }
    
    public function add_user_roles($user_id,$roles = array()){
        $this->db->where('user_id',$user_id);
        $this->db->delete('user_roles');
        foreach ($roles as $role){
            $this->db->insert('user_roles',['user_id'=>$user_id,'group_id'=>$role]);
        }
        return true;
    }
    

    and the example for your controller Edit method will be like this snippet:

    //Users controller
    public function edit($user_id){
        if($this->form_validation->run() == FALSE) {
            $data_view['user'] = $this->User_model->get_user($user_id);
            $this->load->view('user_edit',$data_view);
        }else{
        $first_name = $this->input->post('first_name');
        $last_name = $this->input->post('last_name');
        $username = $this->input->post('username');
        $password = md5($this->input->post('password'));
        $user_roles = $this->input->post('roles');
        $data_user_update = array(
            'first_name'    =>  $first_name, 
            'last_name'     =>  $last_name, 
            'username'      =>  $username, 
            'password'      =>  $password
        );
        $this->User_model->add_user_roles$user_id,$user_roles);
        $this->User_model->update($data_user_update,$user_id);
        $this->session->set_flashdata('success','user updated correctly');
        redirect('users/edit/'.$user_id);
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题