Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE TABLE `users` (
- `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
- `username` VARCHAR(100),
- -- other user fields --
- );
- CREATE TABLE `permissions` (
- `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
- `name` VARCHAR(50) NOT NULL UNIQUE,
- );
- CREATE TABLE `users_permissions` (
- `id` INT NOT NULL AUTO_INCREMENT PRIMARY_KEY,
- `user_id` INT NOT NULL,
- `permission_id` INT NOT NULL
- );
- INSERT INTO `users` (DEFAULT, 'joe');
- INSERT INTO `users` (DEFAULT, 'beth');
- INSERT INTO `users` (DEFAULT, 'frank');
- INSERT INTO `permissions` (DEFAULT, 'Administrator');
- INSERT INTO `permissions` (DEFAULT, 'Write Blog');
- INSERT INTO `permissions` (DEFAULT, 'Edit Blog');
- INSERT INTO `permissions` (DEFAULT, 'Delete Blog');
- -- joe gets all permissions
- INSERT INTO `permissions` (DEFAULT, 1, 1);
- INSERT INTO `permissions` (DEFAULT, 1, 2);
- INSERT INTO `permissions` (DEFAULT, 1, 3);
- INSERT INTO `permissions` (DEFAULT, 1, 4);
- -- beth can write and edit
- INSERT INTO `permissions` (DEFAULT, 2, 2);
- INSERT INTO `permissions` (DEFAULT, 2, 3);
- -- frank can only write
- INSERT INTO `permissions` (DEFAULT, 3, 2);
- const READ = 1;
- const WRITE = 2;
- const DELETE = 4;
- ...
- read-only: 1
- read-write: 3
- read & delete, but not write: 5
- and so on...
- SELECT * FROM table t WHERE t.permission & required_permission
Add Comment
Please, Sign In to add comment