6decf1c8ef
Prior to this commit, the ObjectIdentity id had to be a number. This commit allows for domain objects to use UUIDs as their identifier. The fully qualified class name of the identifier type can be specified in the acl_object_identity table and a ConversionService can be provided to BasicLookupStrategy to convert from String to the actual identifier type. There are the following other changes: - BasicLookupStrategy has a new property, aclClassIdSupported, which is used to retrieve the new column from the database. This preserves backwards-compatibility, as it is false by default. - JdbcMutableAclService has the same property, aclClassIdSupported, which is needed to modify the insert statement to write to the new column. Defaults to false for backwards-compatibility. - Tests have been updated to verify both the existing functionality for backwards-compatibility and the new functionality. Fixes gh-1224
47 lines
1.6 KiB
SQL
47 lines
1.6 KiB
SQL
-- ACL Schema SQL for Microsoft SQL Server 2008+
|
|
|
|
-- drop table acl_entry;
|
|
-- drop table acl_object_identity;
|
|
-- drop table acl_class;
|
|
-- drop table acl_sid;
|
|
|
|
CREATE TABLE acl_sid (
|
|
id BIGINT NOT NULL IDENTITY PRIMARY KEY,
|
|
principal BIT NOT NULL,
|
|
sid VARCHAR(100) NOT NULL,
|
|
CONSTRAINT unique_acl_sid UNIQUE (sid, principal)
|
|
);
|
|
|
|
CREATE TABLE acl_class (
|
|
id BIGINT NOT NULL IDENTITY PRIMARY KEY,
|
|
class VARCHAR(100) NOT NULL,
|
|
CONSTRAINT uk_acl_class UNIQUE (class)
|
|
);
|
|
|
|
CREATE TABLE acl_object_identity (
|
|
id BIGINT NOT NULL IDENTITY PRIMARY KEY,
|
|
object_id_class BIGINT NOT NULL,
|
|
object_id_identity VARCHAR(36) NOT NULL,
|
|
parent_object BIGINT,
|
|
owner_sid BIGINT,
|
|
entries_inheriting BIT NOT NULL,
|
|
CONSTRAINT uk_acl_object_identity UNIQUE (object_id_class, object_id_identity),
|
|
CONSTRAINT fk_acl_object_identity_parent FOREIGN KEY (parent_object) REFERENCES acl_object_identity (id),
|
|
CONSTRAINT fk_acl_object_identity_class FOREIGN KEY (object_id_class) REFERENCES acl_class (id),
|
|
CONSTRAINT fk_acl_object_identity_owner FOREIGN KEY (owner_sid) REFERENCES acl_sid (id)
|
|
);
|
|
|
|
CREATE TABLE acl_entry (
|
|
id BIGINT NOT NULL IDENTITY PRIMARY KEY,
|
|
acl_object_identity BIGINT NOT NULL,
|
|
ace_order INTEGER NOT NULL,
|
|
sid BIGINT NOT NULL,
|
|
mask INTEGER NOT NULL,
|
|
granting BIT NOT NULL,
|
|
audit_success BIT NOT NULL,
|
|
audit_failure BIT NOT NULL,
|
|
CONSTRAINT unique_acl_entry UNIQUE (acl_object_identity, ace_order),
|
|
CONSTRAINT fk_acl_entry_object FOREIGN KEY (acl_object_identity) REFERENCES acl_object_identity (id),
|
|
CONSTRAINT fk_acl_entry_acl FOREIGN KEY (sid) REFERENCES acl_sid (id)
|
|
);
|