-
Notifications
You must be signed in to change notification settings - Fork 236
Role management implementation #555
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -55,6 +55,50 @@ CREATE TABLE GROUP_MEMBER_REFERENCE ( | |
| FOREIGN KEY (GROUP_ID) REFERENCES "GROUP" (GROUP_ID) ON DELETE CASCADE | ||
| ); | ||
|
|
||
| -- Table to store Roles | ||
| CREATE TABLE "ROLE" ( | ||
| ID INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, | ||
| ROLE_ID VARCHAR(36) UNIQUE NOT NULL, | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It will be better to add a unique constraint on (OU_ID, NAME) at DB level too right ? Could reduce potential race conditions
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Added unique constraint on (OU_ID, NAME) |
||
| OU_ID VARCHAR(36) NOT NULL, | ||
| NAME VARCHAR(50) NOT NULL, | ||
| DESCRIPTION VARCHAR(255), | ||
| CREATED_AT TIMESTAMPTZ DEFAULT NOW(), | ||
| UPDATED_AT TIMESTAMPTZ DEFAULT NOW(), | ||
| CONSTRAINT unique_role_ou_name UNIQUE (OU_ID, NAME) | ||
| ); | ||
|
|
||
| -- Table to store Role permissions | ||
| CREATE TABLE ROLE_PERMISSION ( | ||
| ID INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, | ||
| ROLE_ID VARCHAR(36) NOT NULL, | ||
| PERMISSION VARCHAR(100) NOT NULL, | ||
| CREATED_AT TIMESTAMPTZ DEFAULT NOW(), | ||
| FOREIGN KEY (ROLE_ID) REFERENCES "ROLE" (ROLE_ID) ON DELETE CASCADE, | ||
| CONSTRAINT unique_role_permission UNIQUE (ROLE_ID, PERMISSION) | ||
| ); | ||
|
|
||
| -- Table to store Role assignments (to users and groups) | ||
| CREATE TABLE ROLE_ASSIGNMENT ( | ||
| ID INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, | ||
| ROLE_ID VARCHAR(36) NOT NULL, | ||
| ASSIGNEE_TYPE VARCHAR(5) NOT NULL CHECK (ASSIGNEE_TYPE IN ('user', 'group')), | ||
| ASSIGNEE_ID VARCHAR(36) NOT NULL, | ||
| CREATED_AT TIMESTAMPTZ DEFAULT NOW(), | ||
| UPDATED_AT TIMESTAMPTZ DEFAULT NOW(), | ||
| FOREIGN KEY (ROLE_ID) REFERENCES "ROLE" (ROLE_ID) ON DELETE CASCADE, | ||
| CONSTRAINT unique_role_assignment UNIQUE (ROLE_ID, ASSIGNEE_TYPE, ASSIGNEE_ID) | ||
| ); | ||
|
|
||
| -- Indexes for authorization queries | ||
|
|
||
| -- Index for finding all roles assigned to a specific assignee | ||
| CREATE INDEX idx_role_assignment_assignee | ||
| ON ROLE_ASSIGNMENT (ASSIGNEE_ID, ASSIGNEE_TYPE); | ||
|
|
||
| -- Index for finding all permissions for a specific role | ||
| CREATE INDEX idx_role_permission_role | ||
| ON ROLE_PERMISSION (ROLE_ID); | ||
|
|
||
| -- Table to store basic service provider (app) details. | ||
| CREATE TABLE SP_APP ( | ||
| ID INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.