Saya pikir operator bitwise adalah cara terbaik untuk menerapkan izin pengguna. Di sini saya menunjukkan bagaimana kita dapat mengimplementasikannya dengan MySQL.
Di bawah ini adalah tabel sampel dengan beberapa data sampel:
Tabel 1 :Tabel izin untuk menyimpan nama izin beserta bitnya seperti 1, 2, 4, 8.. dll (kelipatan 2)
CREATE TABLE IF NOT EXISTS `permission` (
`bit` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`bit`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Masukkan beberapa data sampel ke dalam tabel.
INSERT INTO `permission` (`bit`, `name`) VALUES
(1, 'User-Add'),
(2, 'User-Edit'),
(4, 'User-Delete'),
(8, 'User-View'),
(16, 'Blog-Add'),
(32, 'Blog-Edit'),
(64, 'Blog-Delete'),
(128, 'Blog-View');
Tabel 2 :Tabel pengguna untuk menyimpan id, nama, dan peran pengguna. Peran akan dihitung sebagai jumlah izin.
Contoh:
Jika user 'Ketan' memiliki izin 'User-Add' (bit=1) dan 'Blog-Delete' (bit-64) maka role menjadi 65 (1+64).
Jika user 'Mehata' memiliki izin dari 'Blog-View' (bit=128) dan 'User-Delete' (bit-4) jadi peran akan menjadi 132 (128+4).
CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`role` int(11) NOT NULL,
`created_date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Contoh data-
INSERT INTO `user` (`id`, `name`, `role`, `created_date`)
VALUES (NULL, 'Ketan', '65', '2013-01-09 00:00:00'),
(NULL, 'Mehata', '132', '2013-01-09 00:00:00');
Loding izin pengguna Setelah login jika kita ingin memuat izin pengguna maka kita bisa query di bawah ini untuk mendapatkan izin:
SELECT permission.bit,permission.name
FROM user LEFT JOIN permission ON user.role & permission.bit
WHERE user.id = 1
Di sini user.role "&" permission.bit adalah operator Bitwise yang akan memberikan output sebagai -
User-Add - 1
Blog-Delete - 64
Jika kami ingin memeriksa cuaca, pengguna tertentu memiliki izin edit pengguna atau tidak-
SELECT * FROM `user`
WHERE role & (select bit from permission where name='user-edit')
Keluaran =Tidak ada baris.
Anda juga dapat melihat:http://sforsuresh .in/implemention-of-user-permission-with-php-mysql-bitwise-operators/