Créer un système de permission en PHP | CodeIgniter 3.x / 4.x  3 min  

Créer un système de permission en PHP sous CodeIgniter 3.x / 4.x

Aujourd'hui nous allons voir, comment créer un système de permission sous différentes versions de CodeIgniter (3 et 4)

Pour CodeIgniter 3.x :

Nous allons premièrement créer un Model qui permet d'utiliser notre système sur nos différents controllers et vues

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
  class Example__modal extends CI_Model{

  }

Ensuite, nous allons créer une function "public" qui récolte la table "permission", ainsi que le grade de l'utilisateur

public function permissions($grade_id = FALSE){
      $query = $this->db->get_where('permissions', array('id_grade' => $grade_id));
      return $query->row_array();
}

 

Désormais, nous pouvons passer à notre Controller.

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Tutoriel extends CI_Controller {

    var $session_user;

    function __construct() {
        parent::__construct();

        Utils::no_cache();
        $this->session_user = $this->session->userdata('logged_in');
        $this->load->model('sessioncheck_model');
		    $this->load->model('example__modal');
    }

    public function index() {
      $data['user'] = $this->sessioncheck_model->get_user($this->session->userdata('id'));
      $data['permission'] = $this->example__modal->permissions($data['user']['grade']);
      $data['title'] = "Tutoriel";
      $data['description'] = "Tutoriel";
      $data['image'] = "https://statics.dev-time.eu/Dev-Time/devtime-icon.png";
      $this->load->view('tutoriel/index', $data);
    }
}

Ici, nous demandons donc notre Model créé plus haut, avec notre function "permissions()" et le grade de l'utilisateur.

Nous pouvons donc désormais sur notre view, mettre ce genre de code.

<?= $permission['name']; //nom du grade de l'utilisateur ?> 

 

Pour CodeIgniter 4.x :

Sa change un peu par rapport à CodeIgniter 3.x, ici nous allons donc demander de connecter notre base de donnée, (ce qui n'est pas le cas sur CI 3).
Ensuite, même chose, nous sélectionnons la table permissions qui avec ça, nous sélectionnons le grade de l'utilisateur.

public function permission($session_grade) {
    $db = \Config\Database::connect();
    $builder = $db->query("SELECT * FROM permissions WHERE id_grade ='".$session_grade."'");
    return $builder->getRowArray();
}

Ensuite, sur notre controller, nous allons ajouter un $data[]

$data = [
    'permission' => $sessionmodel->permission($user['grade']),
    'postmodal' => new \App\Models\PostModel(),
    'request' => \Config\Services::request()
];

Nous récoltons dans le même principe les données $user

ensuite, sur notre view(), rajoutez $data comme cela :
echo view('page/test', $data);

 

Ensuite, dans votre vue, c'est comme pour CodeIgniter 3.x

Auteur

KilioZ

Étudiant en BTS Travaux Publics au Pas-de-Calais. Fondateur de Dev-Time, développeur web depuis 2013.


  Discord : Mateo M.#6452   Reddit : KilioZDev