From fd9b673df9fc946005499c00196db91f1a43a324 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Tue, 11 May 2021 14:31:22 +0200 Subject: [PATCH] change to postgres --- initial-schema.sql | 152 +++++++++++++++------------------------------ 1 file changed, 49 insertions(+), 103 deletions(-) diff --git a/initial-schema.sql b/initial-schema.sql index d8b3f35..ad5aaa2 100644 --- a/initial-schema.sql +++ b/initial-schema.sql @@ -1,111 +1,57 @@ -CREATE DATABASE `authservice`; -USE `authservice`; +create sequence application_s start with 1 increment by 1; +create table application_t ( + id integer primary key not null default nextval('application_s'), + name varchar(128) not null unique +); -CREATE TABLE `applications` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(128) NOT NULL, - CONSTRAINT PRIMARY KEY (`id`), - CONSTRAINT UNIQUE KEY `uk_applications_name` (`name`) -) ENGINE=InnoDB; +create sequence user_s start with 1 increment by 1; +create table user_t ( + id integer primary key not null default nextval('user_s'), + login varchar(64) not null unique, + pwhash varchar(64) not null, + expiry integer not null default 600 +); -CREATE TABLE `users` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `login` varchar(64) NOT NULL, - `pwhash` varchar(64) NOT NULL, - `expiry` int(10) unsigned NOT NULL DEFAULT 600, - CONSTRAINT PRIMARY KEY (`id`), - CONSTRAINT UNIQUE KEY `uk_users_login` (`login`) -) ENGINE=InnoDB; +create sequence claim_s start with 1 increment by 1; +create table claim_t ( + id integer primary key not null default nextval('claim_s'), + key varchar(64) not null, + value varchar(64) not null, + unique (key, value) +); -CREATE TABLE `claims` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `key` varchar(64) NOT NULL, - `value` varchar(1024) NOT NULL, - CONSTRAINT PRIMARY KEY (`id`), - CONSTRAINT UNIQUE KEY `uk_claims_key_value` (`key`, `value`) -) ENGINE=InnoDB; +create table user_claim_mapping_t ( + "user" integer not null references user_t(id), + claim integer not null references claim_t(id), + unique ("user", claim) +); -CREATE TABLE `user_claims_mapping` ( - `user` int(10) unsigned NOT NULL, - `claim` int(10) unsigned NOT NULL, - CONSTRAINT UNIQUE KEY `uk_user_claims_mapping` (`user`, `claim` ), - CONSTRAINT FOREIGN KEY `fk_user_claims_mapping_user` (`user`) - REFERENCES `users`(`id`), - CONSTRAINT FOREIGN KEY `fk_user_claims_mapping_claim` (`claim`) - REFERENCES `claims`(`id`) -) ENGINE=InnoDB; +create table user_application_mapping_t ( + "user" integer not null references user_t(id), + application integer not null references application_t(id), + unique ("user", application) +); -CREATE TABLE `user_applications_mapping` ( - `user` int(10) unsigned NOT NULL, - `application` int(10) unsigned NOT NULL, - CONSTRAINT UNIQUE KEY `uk_user_applications_mapping` (`user`, `application` ), - CONSTRAINT FOREIGN KEY `fk_user_applications_mapping_user` (`user`) - REFERENCES `users`(`id`), - CONSTRAINT FOREIGN KEY `fk_user_applications_mapping_application` (`application`) - REFERENCES `applications`(`id`) -) ENGINE=InnoDB; - -CREATE OR REPLACE VIEW claims_for_user AS - SELECT u.id AS user, - c.`key` AS `key`, - c.`value` AS `value` - FROM users u, - claims c, - user_claims_mapping m - WHERE m.user = u.id AND - m.claim = c.id; - -CREATE OR REPLACE VIEW user_application AS - SELECT u.login AS login, - u.pwhash AS pwhash, - u.id AS id, - u.expiry AS expiry, +create or replace view claims_for_user_v as + select u.id as "user", + c.key as key, + c.value as value + from user_t u, + claim_t c, + user_claim_mapping_t m + where m.user = u.id and + m.claim = c.id; + +create or replace view user_application_v as + select u.login as login, + u.pwhash as pwhash, + u.id as id, + u.expiry as expiry, a.name as application - FROM users u, - applications a, - user_applications_mapping m - WHERE u.id = m.user AND - a.id = m.application; + from user_t u, + application_t a, + user_application_mapping_t m + where u.id = m.user and + a.id = m.application; -CREATE USER 'authservice-ui'@'%' IDENTIFIED BY 'test123'; -GRANT SELECT ON `user_application` TO 'authservice-ui'@'%'; -GRANT SELECT ON `claims_for_user` TO 'authservice-ui'@'%'; - -CREATE USER 'authservice-cli'@'%' IDENTIFIED BY 'test123'; -GRANT INSERT ON `users` TO 'authservice-cli'@'%'; -GRANT INSERT ON `user_applications_mapping` TO 'authservice-cli'@'%'; - -FLUSH PRIVILEGES; - -INSERT INTO `applications` (`name`) VALUES ('hv'); - -INSERT INTO `claims` (`key`, `value`) VALUES ('accesslevel', 'r'); -INSERT INTO `claims` (`key`, `value`) VALUES ('accesslevel', 'rw'); - --- password is 'test123' -INSERT INTO `users` (`login`, `pwhash`) VALUES ('wn', '$p5k2$186a0$dJXL0AjF$0HualDF92nyilDXPgSbaUn/UpFzSrpPx'); -INSERT INTO `user_applications_mapping` (`user`, `application`) - VALUES( - (SELECT `id` FROM `users` WHERE `login` = 'wn'), - (SELECT `id` FROM `applications` WHERE `name` = 'hv') - ); -INSERT INTO `user_claims_mapping` (`user`, `claim`) - VALUES( - (SELECT `id` FROM `users` WHERE `login` = 'wn'), - (SELECT `id` FROM `claims` WHERE `key` = 'accesslevel' AND `value` = 'rw') - ); - --- password is 'geheim' -INSERT INTO `users` (`login`, `pwhash`) VALUES ('gregor', '$p5k2$186a0$Tcwps8Ar$TsypGB.y1dCB9pWOPz2X2SsxYqrTn3Fv'); -INSERT INTO `user_applications_mapping` (`user`, `application`) - VALUES( - (SELECT `id` FROM `users` WHERE `login` = 'gregor'), - (SELECT `id` FROM `applications` WHERE `name` = 'hv') - ); -INSERT INTO `user_claims_mapping` (`user`, `claim`) - VALUES( - (SELECT `id` FROM `users` WHERE `login` = 'gregor'), - (SELECT `id` FROM `claims` WHERE `key` = 'accesslevel' AND `value` = 'rw') - ); -