Add not null checks to wt_private_id, wt_scope_id, and wt_user_id (#284)
This commit is contained in:
1 parent
9570897032
commit
6bf4a5ce38
8 files changed
+162
-64
No files matched your search
@@ -39,6 +39,7 @@ comment on domain wt_public_id is
|
||||
'Random ID generated with github.com/hashicorp/vault/sdk/helper/base62';
|
||||
|
||||
create domain wt_private_id as text
|
||||
not null
|
||||
check(
|
||||
length(trim(value)) > 10
|
||||
);
|
||||
@@ -53,6 +54,7 @@ comment on domain wt_scope_id is
|
||||
'"global" or random ID generated with github.com/hashicorp/vault/sdk/helper/base62';
|
||||
|
||||
create domain wt_user_id as text
|
||||
not null
|
||||
check(
|
||||
length(trim(value)) > 10 or value = 'u_anon' or value = 'u_auth'
|
||||
);
|
||||
@@ -60,6 +62,7 @@ comment on domain wt_scope_id is
|
||||
'"u_anon", "u_auth", or random ID generated with github.com/hashicorp/vault/sdk/helper/base62';
|
||||
|
||||
create domain wt_role_id as text
|
||||
not null
|
||||
check(
|
||||
length(trim(value)) > 10 or value = 'r_default'
|
||||
);
|
||||
@@ -576,7 +579,8 @@ create table iam_scope_org (
|
||||
references iam_scope(public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
parent_id wt_scope_id not null
|
||||
parent_id wt_scope_id
|
||||
not null
|
||||
references iam_scope_global(scope_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
@@ -585,7 +589,11 @@ create table iam_scope_org (
|
||||
);
|
||||
|
||||
create table iam_scope_project (
|
||||
scope_id wt_scope_id not null references iam_scope(public_id) on delete cascade on update cascade,
|
||||
scope_id wt_scope_id
|
||||
not null
|
||||
references iam_scope(public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
parent_id wt_public_id not null references iam_scope_org(scope_id) on delete cascade on update cascade,
|
||||
name text,
|
||||
unique(parent_id, name),
|
||||
@@ -728,12 +736,17 @@ insert into iam_scope (public_id, name, type, description)
|
||||
|
||||
|
||||
create table iam_user (
|
||||
public_id wt_user_id primary key,
|
||||
public_id wt_user_id
|
||||
primary key,
|
||||
create_time wt_timestamp,
|
||||
update_time wt_timestamp,
|
||||
name text,
|
||||
description text,
|
||||
scope_id wt_scope_id not null references iam_scope(public_id) on delete cascade on update cascade,
|
||||
scope_id wt_scope_id
|
||||
not null
|
||||
references iam_scope(public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
unique(name, scope_id),
|
||||
version wt_version,
|
||||
|
||||
@@ -849,7 +862,7 @@ insert into iam_user (public_id, name, description, scope_id)
|
||||
values ('u_auth', 'authenticated', 'The authenticated user matches any user that has a valid token', 'global');
|
||||
|
||||
-- define the immutable fields for iam_user
|
||||
create trigger
|
||||
create trigger
|
||||
immutable_columns
|
||||
before
|
||||
update on iam_user
|
||||
@@ -861,8 +874,16 @@ create table iam_role (
|
||||
update_time wt_timestamp,
|
||||
name text,
|
||||
description text,
|
||||
scope_id wt_scope_id not null references iam_scope(public_id) on delete cascade on update cascade,
|
||||
grant_scope_id wt_scope_id not null references iam_scope(public_id) on delete cascade on update cascade,
|
||||
scope_id wt_scope_id
|
||||
not null
|
||||
references iam_scope(public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
grant_scope_id wt_scope_id
|
||||
not null
|
||||
references iam_scope(public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
unique(name, scope_id),
|
||||
version wt_version,
|
||||
|
||||
@@ -940,12 +961,17 @@ update on iam_role
|
||||
for each row execute procedure immutable_columns('public_id', 'create_time', 'scope_id');
|
||||
|
||||
create table iam_group (
|
||||
public_id wt_public_id not null primary key,
|
||||
public_id wt_public_id
|
||||
primary key,
|
||||
create_time wt_timestamp,
|
||||
update_time wt_timestamp,
|
||||
name text,
|
||||
description text,
|
||||
scope_id wt_scope_id not null references iam_scope(public_id) on delete cascade on update cascade,
|
||||
scope_id wt_scope_id
|
||||
not null
|
||||
references iam_scope(public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
unique(name, scope_id),
|
||||
-- version allows optimistic locking of the group when modifying the group
|
||||
-- itself and when modifying dependent items like group members.
|
||||
@@ -1237,8 +1263,10 @@ begin;
|
||||
|
||||
-- base table for auth methods
|
||||
create table auth_method (
|
||||
public_id wt_public_id primary key,
|
||||
scope_id wt_scope_id not null
|
||||
public_id wt_public_id
|
||||
primary key,
|
||||
scope_id wt_scope_id
|
||||
not null
|
||||
references iam_scope(public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
@@ -1252,9 +1280,12 @@ begin;
|
||||
|
||||
-- base table for auth accounts
|
||||
create table auth_account (
|
||||
public_id wt_public_id primary key,
|
||||
auth_method_id wt_public_id not null,
|
||||
scope_id wt_scope_id not null,
|
||||
public_id wt_public_id
|
||||
primary key,
|
||||
auth_method_id wt_public_id
|
||||
not null,
|
||||
scope_id wt_scope_id
|
||||
not null,
|
||||
iam_user_id wt_public_id,
|
||||
-- including scope_id in fk1 and fk2 ensures the scope_id of the owning
|
||||
-- auth_method and the scope_id of the owning iam_user are the same
|
||||
@@ -1590,15 +1621,21 @@ begin;
|
||||
*/
|
||||
|
||||
create table auth_password_method (
|
||||
public_id wt_public_id primary key,
|
||||
scope_id wt_scope_id not null,
|
||||
password_conf_id wt_private_id not null, -- FK to auth_password_conf added below
|
||||
public_id wt_public_id
|
||||
primary key,
|
||||
scope_id wt_scope_id
|
||||
not null,
|
||||
password_conf_id wt_private_id, -- FK to auth_password_conf added below
|
||||
name text,
|
||||
description text,
|
||||
create_time wt_timestamp,
|
||||
update_time wt_timestamp,
|
||||
min_login_name_length int not null default 3,
|
||||
min_password_length int not null default 8,
|
||||
min_login_name_length int
|
||||
not null
|
||||
default 3,
|
||||
min_password_length int
|
||||
not null
|
||||
default 8,
|
||||
version wt_version,
|
||||
foreign key (scope_id, public_id)
|
||||
references auth_method (scope_id, public_id)
|
||||
@@ -1619,8 +1656,10 @@ begin;
|
||||
for each row execute procedure insert_auth_method_subtype();
|
||||
|
||||
create table auth_password_account (
|
||||
public_id wt_public_id primary key,
|
||||
auth_method_id wt_public_id not null,
|
||||
public_id wt_public_id
|
||||
primary key,
|
||||
auth_method_id wt_public_id
|
||||
not null,
|
||||
-- NOTE(mgaffney): The scope_id type is not wt_scope_id because the domain
|
||||
-- check is executed before the insert trigger which retrieves the scope_id
|
||||
-- causing an insert to fail.
|
||||
@@ -1660,8 +1699,10 @@ begin;
|
||||
for each row execute procedure insert_auth_account_subtype();
|
||||
|
||||
create table auth_password_conf (
|
||||
private_id wt_private_id primary key,
|
||||
password_method_id wt_public_id not null
|
||||
private_id wt_private_id
|
||||
primary key,
|
||||
password_method_id wt_public_id
|
||||
not null
|
||||
references auth_password_method (public_id)
|
||||
on delete cascade
|
||||
on update cascade
|
||||
@@ -1693,10 +1734,14 @@ begin;
|
||||
$$ language plpgsql;
|
||||
|
||||
create table auth_password_credential (
|
||||
private_id wt_private_id primary key,
|
||||
password_account_id wt_public_id not null unique,
|
||||
password_conf_id wt_private_id not null,
|
||||
password_method_id wt_public_id not null,
|
||||
private_id wt_private_id
|
||||
primary key,
|
||||
password_account_id wt_public_id
|
||||
not null
|
||||
unique,
|
||||
password_conf_id wt_private_id,
|
||||
password_method_id wt_public_id
|
||||
not null,
|
||||
foreign key (password_method_id, password_conf_id)
|
||||
references auth_password_conf (password_method_id, private_id)
|
||||
on delete cascade
|
||||
@@ -1889,7 +1934,7 @@ begin;
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
password_account_id wt_public_id not null,
|
||||
password_conf_id wt_private_id not null,
|
||||
password_conf_id wt_private_id,
|
||||
-- NOTE(mgaffney): The password_method_id type is not wt_public_id because
|
||||
-- the domain check is executed before the insert trigger which retrieves
|
||||
-- the password_method_id causing an insert to fail.
|
||||
@@ -2086,8 +2131,10 @@ begin;
|
||||
|
||||
-- host_catalog
|
||||
create table host_catalog (
|
||||
public_id wt_public_id primary key,
|
||||
scope_id wt_scope_id not null
|
||||
public_id wt_public_id
|
||||
primary key,
|
||||
scope_id wt_scope_id
|
||||
not null
|
||||
references iam_scope (public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
@@ -2280,8 +2327,10 @@ begin;
|
||||
*/
|
||||
|
||||
create table static_host_catalog (
|
||||
public_id wt_public_id primary key,
|
||||
scope_id wt_scope_id not null
|
||||
public_id wt_public_id
|
||||
primary key,
|
||||
scope_id wt_scope_id
|
||||
not null
|
||||
references iam_scope (public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
|
||||
@@ -8,6 +8,7 @@ comment on domain wt_public_id is
|
||||
'Random ID generated with github.com/hashicorp/vault/sdk/helper/base62';
|
||||
|
||||
create domain wt_private_id as text
|
||||
not null
|
||||
check(
|
||||
length(trim(value)) > 10
|
||||
);
|
||||
@@ -22,6 +23,7 @@ comment on domain wt_scope_id is
|
||||
'"global" or random ID generated with github.com/hashicorp/vault/sdk/helper/base62';
|
||||
|
||||
create domain wt_user_id as text
|
||||
not null
|
||||
check(
|
||||
length(trim(value)) > 10 or value = 'u_anon' or value = 'u_auth'
|
||||
);
|
||||
@@ -29,6 +31,7 @@ comment on domain wt_scope_id is
|
||||
'"u_anon", "u_auth", or random ID generated with github.com/hashicorp/vault/sdk/helper/base62';
|
||||
|
||||
create domain wt_role_id as text
|
||||
not null
|
||||
check(
|
||||
length(trim(value)) > 10 or value = 'r_default'
|
||||
);
|
||||
|
||||
@@ -62,7 +62,8 @@ create table iam_scope_org (
|
||||
references iam_scope(public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
parent_id wt_scope_id not null
|
||||
parent_id wt_scope_id
|
||||
not null
|
||||
references iam_scope_global(scope_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
@@ -71,7 +72,11 @@ create table iam_scope_org (
|
||||
);
|
||||
|
||||
create table iam_scope_project (
|
||||
scope_id wt_scope_id not null references iam_scope(public_id) on delete cascade on update cascade,
|
||||
scope_id wt_scope_id
|
||||
not null
|
||||
references iam_scope(public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
parent_id wt_public_id not null references iam_scope_org(scope_id) on delete cascade on update cascade,
|
||||
name text,
|
||||
unique(parent_id, name),
|
||||
@@ -214,12 +219,17 @@ insert into iam_scope (public_id, name, type, description)
|
||||
|
||||
|
||||
create table iam_user (
|
||||
public_id wt_user_id primary key,
|
||||
public_id wt_user_id
|
||||
primary key,
|
||||
create_time wt_timestamp,
|
||||
update_time wt_timestamp,
|
||||
name text,
|
||||
description text,
|
||||
scope_id wt_scope_id not null references iam_scope(public_id) on delete cascade on update cascade,
|
||||
scope_id wt_scope_id
|
||||
not null
|
||||
references iam_scope(public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
unique(name, scope_id),
|
||||
version wt_version,
|
||||
|
||||
@@ -335,7 +345,7 @@ insert into iam_user (public_id, name, description, scope_id)
|
||||
values ('u_auth', 'authenticated', 'The authenticated user matches any user that has a valid token', 'global');
|
||||
|
||||
-- define the immutable fields for iam_user
|
||||
create trigger
|
||||
create trigger
|
||||
immutable_columns
|
||||
before
|
||||
update on iam_user
|
||||
@@ -347,8 +357,16 @@ create table iam_role (
|
||||
update_time wt_timestamp,
|
||||
name text,
|
||||
description text,
|
||||
scope_id wt_scope_id not null references iam_scope(public_id) on delete cascade on update cascade,
|
||||
grant_scope_id wt_scope_id not null references iam_scope(public_id) on delete cascade on update cascade,
|
||||
scope_id wt_scope_id
|
||||
not null
|
||||
references iam_scope(public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
grant_scope_id wt_scope_id
|
||||
not null
|
||||
references iam_scope(public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
unique(name, scope_id),
|
||||
version wt_version,
|
||||
|
||||
@@ -426,12 +444,17 @@ update on iam_role
|
||||
for each row execute procedure immutable_columns('public_id', 'create_time', 'scope_id');
|
||||
|
||||
create table iam_group (
|
||||
public_id wt_public_id not null primary key,
|
||||
public_id wt_public_id
|
||||
primary key,
|
||||
create_time wt_timestamp,
|
||||
update_time wt_timestamp,
|
||||
name text,
|
||||
description text,
|
||||
scope_id wt_scope_id not null references iam_scope(public_id) on delete cascade on update cascade,
|
||||
scope_id wt_scope_id
|
||||
not null
|
||||
references iam_scope(public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
unique(name, scope_id),
|
||||
-- version allows optimistic locking of the group when modifying the group
|
||||
-- itself and when modifying dependent items like group members.
|
||||
|
||||
@@ -48,8 +48,10 @@ begin;
|
||||
|
||||
-- base table for auth methods
|
||||
create table auth_method (
|
||||
public_id wt_public_id primary key,
|
||||
scope_id wt_scope_id not null
|
||||
public_id wt_public_id
|
||||
primary key,
|
||||
scope_id wt_scope_id
|
||||
not null
|
||||
references iam_scope(public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
@@ -63,9 +65,12 @@ begin;
|
||||
|
||||
-- base table for auth accounts
|
||||
create table auth_account (
|
||||
public_id wt_public_id primary key,
|
||||
auth_method_id wt_public_id not null,
|
||||
scope_id wt_scope_id not null,
|
||||
public_id wt_public_id
|
||||
primary key,
|
||||
auth_method_id wt_public_id
|
||||
not null,
|
||||
scope_id wt_scope_id
|
||||
not null,
|
||||
iam_user_id wt_public_id,
|
||||
-- including scope_id in fk1 and fk2 ensures the scope_id of the owning
|
||||
-- auth_method and the scope_id of the owning iam_user are the same
|
||||
|
||||
@@ -57,15 +57,21 @@ begin;
|
||||
*/
|
||||
|
||||
create table auth_password_method (
|
||||
public_id wt_public_id primary key,
|
||||
scope_id wt_scope_id not null,
|
||||
password_conf_id wt_private_id not null, -- FK to auth_password_conf added below
|
||||
public_id wt_public_id
|
||||
primary key,
|
||||
scope_id wt_scope_id
|
||||
not null,
|
||||
password_conf_id wt_private_id, -- FK to auth_password_conf added below
|
||||
name text,
|
||||
description text,
|
||||
create_time wt_timestamp,
|
||||
update_time wt_timestamp,
|
||||
min_login_name_length int not null default 3,
|
||||
min_password_length int not null default 8,
|
||||
min_login_name_length int
|
||||
not null
|
||||
default 3,
|
||||
min_password_length int
|
||||
not null
|
||||
default 8,
|
||||
version wt_version,
|
||||
foreign key (scope_id, public_id)
|
||||
references auth_method (scope_id, public_id)
|
||||
@@ -86,8 +92,10 @@ begin;
|
||||
for each row execute procedure insert_auth_method_subtype();
|
||||
|
||||
create table auth_password_account (
|
||||
public_id wt_public_id primary key,
|
||||
auth_method_id wt_public_id not null,
|
||||
public_id wt_public_id
|
||||
primary key,
|
||||
auth_method_id wt_public_id
|
||||
not null,
|
||||
-- NOTE(mgaffney): The scope_id type is not wt_scope_id because the domain
|
||||
-- check is executed before the insert trigger which retrieves the scope_id
|
||||
-- causing an insert to fail.
|
||||
@@ -127,8 +135,10 @@ begin;
|
||||
for each row execute procedure insert_auth_account_subtype();
|
||||
|
||||
create table auth_password_conf (
|
||||
private_id wt_private_id primary key,
|
||||
password_method_id wt_public_id not null
|
||||
private_id wt_private_id
|
||||
primary key,
|
||||
password_method_id wt_public_id
|
||||
not null
|
||||
references auth_password_method (public_id)
|
||||
on delete cascade
|
||||
on update cascade
|
||||
@@ -160,10 +170,14 @@ begin;
|
||||
$$ language plpgsql;
|
||||
|
||||
create table auth_password_credential (
|
||||
private_id wt_private_id primary key,
|
||||
password_account_id wt_public_id not null unique,
|
||||
password_conf_id wt_private_id not null,
|
||||
password_method_id wt_public_id not null,
|
||||
private_id wt_private_id
|
||||
primary key,
|
||||
password_account_id wt_public_id
|
||||
not null
|
||||
unique,
|
||||
password_conf_id wt_private_id,
|
||||
password_method_id wt_public_id
|
||||
not null,
|
||||
foreign key (password_method_id, password_conf_id)
|
||||
references auth_password_conf (password_method_id, private_id)
|
||||
on delete cascade
|
||||
|
||||
@@ -56,7 +56,7 @@ begin;
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
password_account_id wt_public_id not null,
|
||||
password_conf_id wt_private_id not null,
|
||||
password_conf_id wt_private_id,
|
||||
-- NOTE(mgaffney): The password_method_id type is not wt_public_id because
|
||||
-- the domain check is executed before the insert trigger which retrieves
|
||||
-- the password_method_id causing an insert to fail.
|
||||
|
||||
@@ -38,8 +38,10 @@ begin;
|
||||
|
||||
-- host_catalog
|
||||
create table host_catalog (
|
||||
public_id wt_public_id primary key,
|
||||
scope_id wt_scope_id not null
|
||||
public_id wt_public_id
|
||||
primary key,
|
||||
scope_id wt_scope_id
|
||||
not null
|
||||
references iam_scope (public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
|
||||
@@ -37,8 +37,10 @@ begin;
|
||||
*/
|
||||
|
||||
create table static_host_catalog (
|
||||
public_id wt_public_id primary key,
|
||||
scope_id wt_scope_id not null
|
||||
public_id wt_public_id
|
||||
primary key,
|
||||
scope_id wt_scope_id
|
||||
not null
|
||||
references iam_scope (public_id)
|
||||
on delete cascade
|
||||
on update cascade,
|
||||
|
||||
Reference in new issue
Block a user