diff --git a/.gitignore b/.gitignore index c95b2cd..c53d93d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ **/target/ .classpath .project -**/nbproject/ \ No newline at end of file +**/nbproject/ +*.dump +**/_dump \ No newline at end of file diff --git a/account/sql/01_config.sql b/account/sql/01_config.sql deleted file mode 100644 index d0b6ce6..0000000 --- a/account/sql/01_config.sql +++ /dev/null @@ -1,8 +0,0 @@ -DROP TABLE config; - -CREATE TABLE config ( - config_key varchar(100), - config_value varchar(200), - CONSTRAINT config_pk PRIMARY KEY (config_key) -); -INSERT INTO config (config_key, config_value) VALUES ('account.maxFailedLogins', '5'); \ No newline at end of file diff --git a/account/sql/02_accounts.sql b/account/sql/02_accounts.sql deleted file mode 100644 index feb5652..0000000 --- a/account/sql/02_accounts.sql +++ /dev/null @@ -1,91 +0,0 @@ -/** - * Author: joern.muehlencord - * Created: 06.09.2015 - */ - -DROP TABLE account_role; -DROP TABLE account_history; -DROP TABLE account; -DROP TABLE role_permission; -DROP TABLE application_role; -DROP TABLE application_permission; - - -CREATE TABLE application_role ( - id UUID NOT NULL, - role_name varchar(80) NOT NULL, - role_description varchar(200) NOT NULL, - CONSTRAINT pk_application_role_pk PRIMARY KEY (id), - CONSTRAINT uidx_application_id UNIQUE (id) -); - -CREATE TABLE account ( - id UUID NOT NULL, - username varchar(32) NOT NULL, - emailaddress varchar(200) NOT NULL, - firstname varchar(100) NOT NULL, - lastname varchar(100) NOT NULL, - account_password char(200) NOT NULL, - last_login timestamp with time zone, - last_failed_login timestamp with time zone, - failure_count int NOT NULL DEFAULT 0, - status varchar(10) NOT NULL DEFAULT 'NEW', -- NEW, INIT, OK, BLOCKED, - password_reset_ongoing boolean NOT NULL DEFAULT false, - password_reset_valid_to timestamp with time zone, - password_reset_hash char(200), - created_on timestamp with time zone NOT NULL DEFAULT (now() at time zone 'utc'), - created_by varchar(32) NOT NULL, - last_updated_on timestamp with time zone NOT NULL DEFAULT (now() at time zone 'utc'), - last_updated_by varchar(32) NOT NULL, - CONSTRAINT pk_account PRIMARY KEY (id), - CONSTRAINT uidx_username UNIQUE (username) -); - -CREATE TABLE account_history ( - id UUID NOT NULL, - account_id UUID NOT NULL, - message varchar(200), - failure_count int NOT NULL DEFAULT 0, - status varchar(20) NOT NULL, -- constants needed, after action - new, init, active, blocked, inactive, marked for deletion - last_updated_on timestamp with time zone NOT NULL DEFAULT (now() at time zone 'utc'), - last_updated_by varchar(32) NOT NULL, - CONSTRAINT pk_account_history PRIMARY KEY (id), - CONSTRAINT fk_account_history_username_fk FOREIGN KEY (account_id) REFERENCES account (id) -); - -CREATE TABLE account_role ( - account UUID NOT NULL, - account_role UUID NOT NULL, - CONSTRAINT pk_account_role PRIMARY KEY (account, account_role), - CONSTRAINT fk_account_role_account FOREIGN KEY (account) REFERENCES account(id), - CONSTRAINT fk_account_role_role_name FOREIGN KEY (account_role) REFERENCES application_role(id) -); - - -CREATE TABLE application_permission ( - id UUID NOT NULL, - permission_name varchar(80) NOT NULL, - permission_description varchar(200) NOT NULL, - CONSTRAINT pk_application_permission PRIMARY KEY (id), - CONSTRAINT uidx_application_permission_name UNIQUE (permission_name) -); - -CREATE TABLE role_permission ( - application_role UUID NOT NULL, - role_permission UUID NOT NULL, - CONSTRAINT pk_role_permission_role_permission_name PRIMARY KEY (application_role, role_permission), - CONSTRAINT fk_role_permission_application_role FOREIGN KEY (application_role) REFERENCES application_role(id), - CONSTRAINT fk_role_permission_role_permission FOREIGN KEY (role_permission) REFERENCES application_permission(id) -); - -INSERT INTO application_permission (id, permission_name, permission_description) values ('dfd0f8f1-4a51-4fdc-9a1c-a942bee9b649', 'test:view', 'Display test view'); - -INSERT INTO application_role (id, role_name, role_description) values ('5cd0aca0-5466-483d-8f3e-c369f8061131','Admin', 'Admin role'); -INSERT INTO application_role (id, role_name, role_description) values ('da30060e-fd23-4016-a506-4e12e9322148', 'User', 'Standard user role'); - --- INSERT INTO role_permission (role_name, permission_name) values ('Admin','test:view'); - -INSERT INTO account (id, username, emailaddress, firstname, lastname, account_password, created_by, last_updated_by) values('ab5c8337-6872-4aea-a9b9-78ea63706b8f','admin', 'joern@muehlencord.de', 'Joern', 'Muehlencord','$shiro1$SHA-256$500000$4bHPNH9k539UjdFLgm/HOA==$T/n8skgoGSOtNw/c9ScDlXCiGrx2cZF0Esrvf6WPq6g=', 'admin','admin'); --admin/secret -INSERT INTO account_role (account, account_role) values ('ab5c8337-6872-4aea-a9b9-78ea63706b8f', '5cd0aca0-5466-483d-8f3e-c369f8061131'); - ---select uuid_generate_v4(); \ No newline at end of file diff --git a/account/sql/03_templates.sql b/account/sql/03_templates.sql deleted file mode 100644 index 140e6c0..0000000 --- a/account/sql/03_templates.sql +++ /dev/null @@ -1,21 +0,0 @@ -DROP TABLE mail_template; - -CREATE TABLE mail_template ( - template_name varchar(40) NOT NULL, - template_value text NOT NULL, - CONSTRAINT mail_template_pk PRIMARY KEY (template_name) -); - - -INSERT INTO mail_template (template_name, template_value) VALUES('password_reset_html', -'<#ftl strip_whitespace = true> - - - - Dear ${account.firstname},
-
- you requested to reset your password at ${parameter.url}. Please open the following URL to proceed.
- ${parameter.resetUrl}
-
- - '); diff --git a/account/sql/account.sql b/account/sql/account.sql index 08f4a14..d7d1b95 100644 --- a/account/sql/account.sql +++ b/account/sql/account.sql @@ -11,19 +11,20 @@ -- -- DROP DATABASE IF EXISTS account_test; -- CREATE DATABASE account_test -- ENCODING = 'UTF8' --- LC_COLLATE = 'German_Germany.1252' --- LC_CTYPE = 'German_Germany.1252'; +-- LC_COLLATE = 'C' +-- LC_CTYPE = 'C'; -- -- ddl-end -- -- -- object: public.config | type: TABLE -- -- DROP TABLE IF EXISTS public.config CASCADE; CREATE TABLE public.config( + application uuid NOT NULL, config_key varchar(100) NOT NULL, + config_key_account uuid NOT NULL, config_key_group varchar(200), - config_key_account uuid, config_value varchar(200), - CONSTRAINT config_pk PRIMARY KEY (config_key) + CONSTRAINT config_pk PRIMARY KEY (application,config_key,config_key_account) ); -- ddl-end -- @@ -32,9 +33,11 @@ CREATE TABLE public.config( -- DROP TABLE IF EXISTS public.application_role CASCADE; CREATE TABLE public.application_role( id uuid NOT NULL, + application uuid NOT NULL, role_name character varying(80) NOT NULL, role_description character varying(200) NOT NULL, - CONSTRAINT pk_application_role_pk PRIMARY KEY (id) + CONSTRAINT application_role_pk PRIMARY KEY (id), + CONSTRAINT application_role_name_uidx UNIQUE (application,role_name) ); -- ddl-end -- @@ -47,14 +50,7 @@ CREATE TABLE public.account( emailaddress character varying(200) NOT NULL, firstname character varying(100) NOT NULL, lastname character varying(100) NOT NULL, - account_password character(200) NOT NULL, - last_login timestamp with time zone, - last_failed_login timestamp with time zone, - failure_count integer NOT NULL DEFAULT 0, status character varying(10) NOT NULL DEFAULT 'NEW', - password_reset_ongoing boolean NOT NULL DEFAULT false, - password_reset_valid_to timestamp with time zone, - password_reset_hash character(200), created_on timestamp with time zone NOT NULL DEFAULT timezone('utc'::text, now()), created_by character varying(32) NOT NULL, last_updated_on timestamp with time zone NOT NULL DEFAULT timezone('utc'::text, now()), @@ -94,10 +90,11 @@ CREATE TABLE public.account_role( -- DROP TABLE IF EXISTS public.application_permission CASCADE; CREATE TABLE public.application_permission( id uuid NOT NULL, + application uuid NOT NULL, permission_name character varying(80) NOT NULL, permission_description character varying(200) NOT NULL, CONSTRAINT pk_application_permission PRIMARY KEY (id), - CONSTRAINT uidx_application_permission_name UNIQUE (permission_name) + CONSTRAINT application_permission_name_uidx UNIQUE (application,permission_name) ); -- ddl-end -- @@ -122,6 +119,44 @@ CREATE TABLE public.mail_template( ); -- ddl-end -- +-- object: public.application | type: TABLE -- +-- DROP TABLE IF EXISTS public.application CASCADE; +CREATE TABLE public.application( + id uuid NOT NULL, + application_name varchar(200) NOT NULL, + CONSTRAINT application_pk PRIMARY KEY (id) + +); +-- ddl-end -- + +-- -- object: uuid-ossp | type: EXTENSION -- +-- -- DROP EXTENSION IF EXISTS uuid-ossp CASCADE; +-- CREATE EXTENSION uuid-ossp +-- WITH SCHEMA public; +-- -- ddl-end -- +-- +-- object: public.account_login | type: TABLE -- +-- DROP TABLE IF EXISTS public.account_login CASCADE; +CREATE TABLE public.account_login( + id uuid NOT NULL DEFAULT uuid_generate_v4(), + account uuid NOT NULL, + account_password varchar(200) NOT NULL, + last_login timestamptz, + last_failed_login timestamptz, + failure_count integer NOT NULL DEFAULT 0, + password_reset_ongoing boolean NOT NULL DEFAULT false, + password_reset_valid_to timestamptz, + password_reset_hash varchar(200), + created_on timestamptz NOT NULL DEFAULT timezone('utc'::text, now()), + created_by varchar(32) NOT NULL, + last_updated_on timestamptz NOT NULL DEFAULT timezone('utc'::text, now()), + last_updated_by varchar(32) NOT NULL, + CONSTRAINT account_login_pk PRIMARY KEY (id), + CONSTRAINT account_login_uidx UNIQUE (account) + +); +-- ddl-end -- + -- object: config_key_account_fk | type: CONSTRAINT -- -- ALTER TABLE public.config DROP CONSTRAINT IF EXISTS config_key_account_fk CASCADE; ALTER TABLE public.config ADD CONSTRAINT config_key_account_fk FOREIGN KEY (config_key_account) @@ -129,6 +164,20 @@ REFERENCES public.account (id) MATCH FULL ON DELETE NO ACTION ON UPDATE NO ACTION; -- ddl-end -- +-- object: config_application_fk | type: CONSTRAINT -- +-- ALTER TABLE public.config DROP CONSTRAINT IF EXISTS config_application_fk CASCADE; +ALTER TABLE public.config ADD CONSTRAINT config_application_fk FOREIGN KEY (application) +REFERENCES public.application (id) MATCH FULL +ON DELETE NO ACTION ON UPDATE NO ACTION; +-- ddl-end -- + +-- object: application_role_app_fk | type: CONSTRAINT -- +-- ALTER TABLE public.application_role DROP CONSTRAINT IF EXISTS application_role_app_fk CASCADE; +ALTER TABLE public.application_role ADD CONSTRAINT application_role_app_fk FOREIGN KEY (application) +REFERENCES public.application (id) MATCH FULL +ON DELETE NO ACTION ON UPDATE NO ACTION; +-- ddl-end -- + -- object: fk_account_history_username_fk | type: CONSTRAINT -- -- ALTER TABLE public.account_history DROP CONSTRAINT IF EXISTS fk_account_history_username_fk CASCADE; ALTER TABLE public.account_history ADD CONSTRAINT fk_account_history_username_fk FOREIGN KEY (account_id) @@ -150,6 +199,13 @@ REFERENCES public.application_role (id) MATCH SIMPLE ON DELETE NO ACTION ON UPDATE NO ACTION; -- ddl-end -- +-- object: application_permission_app_fk | type: CONSTRAINT -- +-- ALTER TABLE public.application_permission DROP CONSTRAINT IF EXISTS application_permission_app_fk CASCADE; +ALTER TABLE public.application_permission ADD CONSTRAINT application_permission_app_fk FOREIGN KEY (application) +REFERENCES public.application (id) MATCH FULL +ON DELETE NO ACTION ON UPDATE NO ACTION; +-- ddl-end -- + -- object: fk_role_permission_application_role | type: CONSTRAINT -- -- ALTER TABLE public.role_permission DROP CONSTRAINT IF EXISTS fk_role_permission_application_role CASCADE; ALTER TABLE public.role_permission ADD CONSTRAINT fk_role_permission_application_role FOREIGN KEY (application_role) @@ -164,4 +220,11 @@ REFERENCES public.application_permission (id) MATCH SIMPLE ON DELETE NO ACTION ON UPDATE NO ACTION; -- ddl-end -- +-- object: account_login_fk | type: CONSTRAINT -- +-- ALTER TABLE public.account_login DROP CONSTRAINT IF EXISTS account_login_fk CASCADE; +ALTER TABLE public.account_login ADD CONSTRAINT account_login_fk FOREIGN KEY (account) +REFERENCES public.account (id) MATCH FULL +ON DELETE NO ACTION ON UPDATE NO ACTION; +-- ddl-end -- + diff --git a/account/sql/account_prefill.sql b/account/sql/account_prefill.sql index 4f071bb..4d13110 100644 --- a/account/sql/account_prefill.sql +++ b/account/sql/account_prefill.sql @@ -9,9 +9,6 @@ DELETE FROM application; INSERT INTO application (id, application_name) values ('143a2bd3-7e0b-4162-a76e-3031331c7dfe', 'Account UI'); --- permissions not used in Account UI --- INSERT INTO application_permission (id, permission_name, permission_description) values ('dfd0f8f1-4a51-4fdc-9a1c-a942bee9b649', 'test:view', 'Display test view'); - -- add roles to Account UI application INSERT INTO application_role (id, application, role_name, role_description) values ('5cd0aca0-5466-483d-8f3e-c369f8061131','143a2bd3-7e0b-4162-a76e-3031331c7dfe', 'Admin', 'Admin role'); INSERT INTO application_role (id, application, role_name, role_description) values ('da30060e-fd23-4016-a506-4e12e9322148','143a2bd3-7e0b-4162-a76e-3031331c7dfe', 'User', 'Standard user role'); diff --git a/account/sql/backupAccountTest.bat b/account/sql/backupAccountTest.bat new file mode 100644 index 0000000..f305b70 --- /dev/null +++ b/account/sql/backupAccountTest.bat @@ -0,0 +1,4 @@ +echo off +SET BACKUPFOLDER=%~dp0 +"C:\Program Files\PostgreSQL\10\bin\pg_dump.exe" -U jomu -n public --column-inserts --attribute-inserts --no-owner --no-privileges --no-acl account_test > %BACKUPFOLDER%\account_test.dump +pause; diff --git a/account/sql/create_tables.sql b/account/sql/create_tables.sql deleted file mode 100644 index 0b75621..0000000 --- a/account/sql/create_tables.sql +++ /dev/null @@ -1,2 +0,0 @@ -\i 01_accounts.sql -\i 02_templates.sql \ No newline at end of file diff --git a/account/sql/drop_all_tables.sql b/account/sql/drop_all_tables.sql new file mode 100644 index 0000000..34ae73a --- /dev/null +++ b/account/sql/drop_all_tables.sql @@ -0,0 +1,10 @@ +DROP TABLE IF EXISTS config CASCADE; +DROP TABLE IF EXISTS account_role CASCADE; +DROP TABLE IF EXISTS account_login CASCADE; +DROP TABLE IF EXISTS account CASCADE; +DROP TABLE IF EXISTS role_permission CASCADE; +DROP TABLE IF EXISTS application_role CASCADE; +DROP TABLE IF EXISTS application_permission CASCADE; +DROP TABLE IF EXISTS application CASCADE; +DROP TABLE IF EXISTS account_history CASCADE; +DROP TABLE IF EXISTS mail_template CASCADE; \ No newline at end of file diff --git a/account/sql/restoreAccount.bat b/account/sql/restoreAccount.bat new file mode 100644 index 0000000..571dfca --- /dev/null +++ b/account/sql/restoreAccount.bat @@ -0,0 +1,5 @@ +@ECHO OFF +SET BACKUPFOLDER=%~dp0 +"C:\Program Files\PostgreSQL\10\bin\psql.exe" -U jomu --set ON_ERROR_STOP=on account < %BACKUPFOLDER%\drop_all_tables.sql +"C:\Program Files\PostgreSQL\10\bin\psql.exe" -U jomu --set ON_ERROR_STOP=on account < %BACKUPFOLDER%\restore.dump +pause; diff --git a/account/sql/restoreAccountTest.bat b/account/sql/restoreAccountTest.bat new file mode 100644 index 0000000..591d1de --- /dev/null +++ b/account/sql/restoreAccountTest.bat @@ -0,0 +1,5 @@ +@ECHO OFF +SET BACKUPFOLDER=%~dp0 +"C:\Program Files\PostgreSQL\10\bin\psql.exe" -U jomu --set ON_ERROR_STOP=on account_test < %BACKUPFOLDER%\drop_all_tables.sql +"C:\Program Files\PostgreSQL\10\bin\psql.exe" -U jomu --set ON_ERROR_STOP=on account_test < %BACKUPFOLDER%\restore.dump +pause;