Skip to content

Instantly share code, notes, and snippets.

@imhashir
Last active April 26, 2020 11:47
Show Gist options
  • Save imhashir/3ad8c76f72b0a99896ceb34c20ef03a3 to your computer and use it in GitHub Desktop.
Save imhashir/3ad8c76f72b0a99896ceb34c20ef03a3 to your computer and use it in GitHub Desktop.
Implementing Custom User/Permissions/Roles System with React, Serverless Lambda & MySQL
CREATE TABLE user (
id int NOT NULL AUTO_INCREMENT,
name varchar(128) NOT NULL,
email varchar(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
CREATE TABLE role (
id int NOT NULL AUTO_INCREMENT,
name varchar(128) NOT NULL,
description TEXT(2000) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
CREATE TABLE permission (
`id` int NOT NULL AUTO_INCREMENT,
`key` varchar(128) NOT NULL,
`name` varchar(128) NOT NULL,
`description` TEXT(2000) NOT NULL,
`role` varchar(16) DEFAULT 'super_admin',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
CREATE TABLE role_permissions (
role_id int NOT NULL,
permission_id int NOT NULL,
FOREIGN KEY (permission_id) REFERENCES permission(id) ON DELETE CASCADE,
FOREIGN KEY (role_id) REFERENCES role(id) ON DELETE CASCADE
);
CREATE TABLE user_role (
role_id int NOT NULL,
user_id int NOT NULL,
FOREIGN KEY (role_id) REFERENCES role(id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment