blob: ff0230f0ed5a6d971cc564043e996076bf04116f [file] [log] [blame]
-- EM: modified from Michael Hanl version
-- oauth2 db tables
CREATE TABLE IF NOT EXISTS oauth2_client (
id VARCHAR(100) PRIMARY KEY NOT NULL,
name VARCHAR(100) NOT NULL,
secret VARCHAR(255) DEFAULT NULL,
type VARCHAR(50) NOT NULL,
super BOOLEAN DEFAULT FALSE,
redirect_uri TEXT DEFAULT NULL,
description VARCHAR(255) NOT NULL,
registered_by VARCHAR(100) NOT NULL,
url_hashcode INTEGER NOT NULL,
url TEXT DEFAULT NULL,
UNIQUE INDEX unique_url(url_hashcode)
);
CREATE TABLE IF NOT EXISTS oauth2_access_scope (
id VARCHAR(100) PRIMARY KEY NOT NULL
);
-- authorization tables are not needed if using cache
--CREATE TABLE IF NOT EXISTS oauth2_authorization (
-- id INTEGER PRIMARY KEY AUTO_INCREMENT,
-- code VARCHAR(255) NOT NULL,
-- client_id VARCHAR(100) NOT NULL,
-- user_id VARCHAR(100) NOT NULL,
-- redirect_uri TEXT DEFAULT NULL,
-- created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-- expiry_date TIMESTAMP NULL,
-- is_revoked BOOLEAN DEFAULT 0,
-- total_attempts INTEGER DEFAULT 0,
-- user_auth_time TIMESTAMP NULL,
-- nonce TEXT DEFAULT NULL,
-- FOREIGN KEY (client_id)
-- REFERENCES oauth2_client(id),
-- UNIQUE INDEX authorization_index(code, client_id)
--);
--
--CREATE TABLE IF NOT EXISTS oauth2_authorization_scope (
-- id INTEGER PRIMARY KEY AUTO_INCREMENT,
-- authorization_id INTEGER NOT NULL,
-- scope_id VARCHAR(100) NOT NULL,
-- FOREIGN KEY (authorization_id)
-- REFERENCES oauth2_authorization(id),
-- FOREIGN KEY (scope_id)
-- REFERENCES oauth2_access_scope(id),
-- UNIQUE INDEX authorization_scope_index(authorization_id, scope_id)
--);
CREATE TABLE IF NOT EXISTS oauth2_refresh_token (
id INTEGER PRIMARY KEY AUTO_INCREMENT,
token VARCHAR(255) NOT NULL,
user_id VARCHAR(100) DEFAULT NULL,
user_auth_time TIMESTAMP NOT NULL,
created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
expiry_date TIMESTAMP NULL,
is_revoked BOOLEAN DEFAULT 0,
client VARCHAR(100) NOT NULL,
FOREIGN KEY (client)
REFERENCES oauth2_client(id)
-- these will delete all refresh tokens related to the client
ON DELETE CASCADE
);
CREATE TABLE oauth2_refresh_token_scope (
token_id INTEGER NOT NULL,
scope_id VARCHAR(100) NOT NULL,
CONSTRAINT primary_key PRIMARY KEY (token_id, scope_id)
);
CREATE TABLE IF NOT EXISTS oauth2_access_token (
id INTEGER PRIMARY KEY AUTO_INCREMENT,
token VARCHAR(255) NOT NULL,
user_id VARCHAR(100) DEFAULT NULL,
client_id VARCHAR(100) DEFAULT NULL,
created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
expiry_date TIMESTAMP NULL,
is_revoked BOOLEAN DEFAULT 0,
user_auth_time TIMESTAMP NULL,
refresh_token INTEGER DEFAULT NULL,
FOREIGN KEY (client_id)
REFERENCES oauth2_client(id)
-- these will delete all access tokens related to the client
ON DELETE CASCADE,
FOREIGN KEY (refresh_token)
REFERENCES oauth2_refresh_token(id)
);
CREATE TABLE oauth2_access_token_scope (
token_id INTEGER NOT NULL,
scope_id VARCHAR(100) NOT NULL,
CONSTRAINT primary_key PRIMARY KEY (token_id, scope_id)
);