Kerangka kerja Yii 2 - hak pengguna melalui database.
Kami membuat pengontrol tempat semua pengontrol akan diwarisi dan beforeAction - metode yang akan dijalankan sebelum tindakan.
PS: model dan CRUD harus dibuat menggunakan modul Gii.
<?php namespace app\helper; use yii\web\Controller; use app\models\Users; use app\models\Rights; use Yii; class AppController extends Controller{ public function beforeAction($action){ $controller = $action->controller->id;
Tabel model dan hak:
CREATE TABLE `rights` ( `id` int(11) NOT NULL AUTO_INCREMENT, `controller` varchar(255) NOT NULL, `action` varchar(255) NOT NULL, `rights` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=32 DEFAULT CHARSET=utf8
Tabel model dan pengguna, kekhasannya adalah bahwa ada bidang righgts:
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `email` varchar(255) NOT NULL, `phone` varchar(22) NOT NULL, `password` varchar(64) NOT NULL, `righgts` varchar(60) NOT NULL, `verify_key` varchar(65) NOT NULL, `activated` int(11) NOT NULL, `recovery_key` varchar(65) NOT NULL, `recovery_key_life` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `auth_key` varchar(255) NOT NULL, `accessToken` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=37 DEFAULT CHARSET=utf8
Di tabel pengguna, kami memiliki kemampuan untuk mengubah bidang hak, yang bertanggung jawab atas hak akses ke tindakan pengontrol.

Dalam tabel hak kami menulis: controller, aksi dan peran (hak, hak) yang memiliki akses ke sana.

Algoritma:
- Pengontrol induk memeriksa hak pengguna dari database (kolom hak).
- Pengontrol induk mendapatkan nama pengontrol yang dipanggil dan nama tindakan yang dipanggil.
- Kontroler induk mengakses tabel hak dan memeriksa hak-hak apa yang diperlukan untuk menggunakan controller dan aksi yang disebut.
- Jika hak pengguna cocok dengan hak dalam tabel hak, maka tindakan dilakukan, jika tidak, pengalihan dilakukan.
Daftar hak di tabel hak dipisahkan oleh koma.
Baik untuk menggunakan metode ini dalam modul administrator, karena hak standar bagian pengguna cocok.
Saya bukan ahli dalam menulis artikel dan mengekspresikan diri dengan indah, saya hanya menguraikan esensi teknis, silakan tambahkan - saya akan menulis banyak hal menarik.