From 088e9b6096908f9200e8f974fa82412f7aab1e40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Mon, 22 Sep 2025 19:02:25 +0200 Subject: [PATCH 1/4] [Oauth2 Server] Embedded SQL scripts directly in the installation --- docs/users/oauth_server.md | 4 +-- docs/users/sql/install_mysql.sql | 46 +++++++++++++++++++++++++++ docs/users/sql/install_postgresql.sql | 46 +++++++++++++++++++++++++++ 3 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 docs/users/sql/install_mysql.sql create mode 100644 docs/users/sql/install_postgresql.sql diff --git a/docs/users/oauth_server.md b/docs/users/oauth_server.md index a76420fbf9..c1c84caec3 100644 --- a/docs/users/oauth_server.md +++ b/docs/users/oauth_server.md @@ -23,13 +23,13 @@ Add the tables needed by the bundle: === "MySQL" ```bash - php bin/console ibexa:doctrine:schema:dump-sql vendor/ibexa/oauth2-server/src/bundle/Resources/config/schema.yaml | mysql -u -p + [[= include_file('docs/users/sql/install_mysql.sql') =]] ``` === "PostgreSQL" ```bash - php bin/console ibexa:doctrine:schema:dump-sql --force-platform=postgres vendor/ibexa/oauth2-server/src/bundle/Resources/config/schema.yaml | psql + [[= include_file('docs/users/sql/install_postgresql.sql') =]] ``` Then, in `config/bundles.php`, at the end of an array with a list of bundles, add the following two lines : diff --git a/docs/users/sql/install_mysql.sql b/docs/users/sql/install_mysql.sql new file mode 100644 index 0000000000..920c063a36 --- /dev/null +++ b/docs/users/sql/install_mysql.sql @@ -0,0 +1,46 @@ +CREATE TABLE ibexa_oauth2_client (id SERIAL NOT NULL, client_name VARCHAR(128) NOT NULL, client_identifier VARCHAR(32) NOT NULL, client_secret VARCHAR(128) DEFAULT NULL, client_active BOOLEAN DEFAULT 'false' NOT NULL, client_plain_pkce BOOLEAN DEFAULT 'false' NOT NULL, PRIMARY KEY(id)); +CREATE UNIQUE INDEX ibexa_oauth2_client_identifier_idx ON ibexa_oauth2_client (client_identifier); +CREATE TABLE ibexa_oauth2_client_redirect_uri (id SERIAL NOT NULL, client_id INT NOT NULL, client_redirect_uri VARCHAR(255) NOT NULL, PRIMARY KEY(id)); +CREATE INDEX ibexa_oauth2_client_redirect_uri_client_id_idx ON ibexa_oauth2_client_redirect_uri (client_id); +CREATE INDEX ibexa_oauth2_client_redirect_uri_client_redirect_uri_idx ON ibexa_oauth2_client_redirect_uri (client_redirect_uri); +CREATE UNIQUE INDEX ibexa_oauth2_client_redirect_uri_unique_idx ON ibexa_oauth2_client_redirect_uri (client_id, client_redirect_uri); +CREATE TABLE ibexa_oauth2_client_grant (id SERIAL NOT NULL, client_id INT NOT NULL, client_grant VARCHAR(255) NOT NULL, PRIMARY KEY(id)); +CREATE INDEX ibexa_oauth2_client_grant_client_id_idx ON ibexa_oauth2_client_grant (client_id); +CREATE INDEX ibexa_oauth2_client_grant_client_grant_idx ON ibexa_oauth2_client_grant (client_grant); +CREATE UNIQUE INDEX ibexa_oauth2_client_grant_unique_idx ON ibexa_oauth2_client_grant (client_id, client_grant); +CREATE TABLE ibexa_oauth2_client_token (id SERIAL NOT NULL, client_id INT NOT NULL, token_id INT NOT NULL, PRIMARY KEY(id)); +CREATE INDEX ibexa_oauth2_client_token_client_id_idx ON ibexa_oauth2_client_token (client_id); +CREATE INDEX ibexa_oauth2_client_token_token_id_idx ON ibexa_oauth2_client_token (token_id); +CREATE UNIQUE INDEX ibexa_oauth2_client_token_unique_idx ON ibexa_oauth2_client_token (client_id, token_id); +CREATE TABLE ibexa_oauth2_client_scope (id SERIAL NOT NULL, client_id INT NOT NULL, client_scope VARCHAR(255) NOT NULL, PRIMARY KEY(id)); +CREATE INDEX ibexa_oauth2_client_scope_client_id_idx ON ibexa_oauth2_client_scope (client_id); +CREATE INDEX ibexa_oauth2_client_scope_client_scope_idx ON ibexa_oauth2_client_scope (client_scope); +CREATE UNIQUE INDEX ibexa_oauth2_client_scope_unique_idx ON ibexa_oauth2_client_scope (client_id, client_scope); +CREATE TABLE ibexa_oauth2_token_scope (id SERIAL NOT NULL, token_id INT NOT NULL, token_scope VARCHAR(255) NOT NULL, PRIMARY KEY(id)); +CREATE INDEX ibexa_oauth2_token_scope_token_id_idx ON ibexa_oauth2_token_scope (token_id); +CREATE INDEX ibexa_oauth2_token_scope_scope_idx ON ibexa_oauth2_token_scope (token_scope); +CREATE UNIQUE INDEX ibexa_oauth2_token_scope_unique_idx ON ibexa_oauth2_token_scope (token_id, token_scope); +CREATE TABLE ibexa_oauth2_refresh_access_token (id SERIAL NOT NULL, access_token_id INT NOT NULL, refresh_token_id INT NOT NULL, PRIMARY KEY(id)); +CREATE INDEX ibexa_oauth2_refresh_access_token_access_token_id_idx ON ibexa_oauth2_refresh_access_token (access_token_id); +CREATE INDEX ibexa_oauth2_refresh_access_token_refresh_token_id_idx ON ibexa_oauth2_refresh_access_token (refresh_token_id); +CREATE UNIQUE INDEX ibexa_oauth2_refresh_access_token_unique_idx ON ibexa_oauth2_refresh_access_token (access_token_id, refresh_token_id); +CREATE TABLE ibexa_oauth2_consent (id SERIAL NOT NULL, user_identifier VARCHAR(150) NOT NULL, client_identifier VARCHAR(32) NOT NULL, created INT DEFAULT 0 NOT NULL, updated INT DEFAULT 0 NOT NULL, PRIMARY KEY(id)); +CREATE INDEX IDX_40497C0FD0494586 ON ibexa_oauth2_consent (user_identifier); +CREATE INDEX IDX_40497C0FE77ABE2B ON ibexa_oauth2_consent (client_identifier); +CREATE INDEX ibexa_oauth2_consent_consent_idx ON ibexa_oauth2_consent (user_identifier, client_identifier); +CREATE UNIQUE INDEX ibexa_oauth2_consent_unique_idx ON ibexa_oauth2_consent (user_identifier, client_identifier); +CREATE TABLE ibexa_oauth2_consent_scope (id SERIAL NOT NULL, consent_id INT NOT NULL, consent_scope VARCHAR(255) NOT NULL, PRIMARY KEY(id)); +CREATE INDEX ibexa_oauth2_consent_scope_consent_id_idx ON ibexa_oauth2_consent_scope (consent_id); +CREATE INDEX ibexa_oauth2_consent_scope_consent_scope_idx ON ibexa_oauth2_consent_scope (consent_scope); +CREATE UNIQUE INDEX ibexa_oauth2_consent_scope_unique_idx ON ibexa_oauth2_consent_scope (consent_id, consent_scope); +ALTER TABLE ibexa_oauth2_client_redirect_uri ADD CONSTRAINT ibexa_oauth2_client_redirect_uri_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_client_grant ADD CONSTRAINT ibexa_oauth2_client_grant_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_client_token ADD CONSTRAINT ibexa_oauth2_client_token_client_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_client_token ADD CONSTRAINT ibexa_oauth2_client_token_token_fk FOREIGN KEY (token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_client_scope ADD CONSTRAINT ibexa_oauth2_client_scope_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_token_scope ADD CONSTRAINT ibexa_oauth2_token_scope_fk FOREIGN KEY (token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_refresh_access_token ADD CONSTRAINT ibexa_oauth2_refresh_access_token_access_token_fk FOREIGN KEY (access_token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_refresh_access_token ADD CONSTRAINT ibexa_oauth2_refresh_access_token_refresh_token_fk FOREIGN KEY (refresh_token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_consent ADD CONSTRAINT ibexa_oauth2_consent_user_fk FOREIGN KEY (user_identifier) REFERENCES ezuser (login) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_consent ADD CONSTRAINT ibexa_oauth2_consent_client_fk FOREIGN KEY (client_identifier) REFERENCES ibexa_oauth2_client (client_identifier) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_consent_scope ADD CONSTRAINT ibexa_oauth2_consent_scope_fk FOREIGN KEY (consent_id) REFERENCES ibexa_oauth2_consent (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; diff --git a/docs/users/sql/install_postgresql.sql b/docs/users/sql/install_postgresql.sql new file mode 100644 index 0000000000..920c063a36 --- /dev/null +++ b/docs/users/sql/install_postgresql.sql @@ -0,0 +1,46 @@ +CREATE TABLE ibexa_oauth2_client (id SERIAL NOT NULL, client_name VARCHAR(128) NOT NULL, client_identifier VARCHAR(32) NOT NULL, client_secret VARCHAR(128) DEFAULT NULL, client_active BOOLEAN DEFAULT 'false' NOT NULL, client_plain_pkce BOOLEAN DEFAULT 'false' NOT NULL, PRIMARY KEY(id)); +CREATE UNIQUE INDEX ibexa_oauth2_client_identifier_idx ON ibexa_oauth2_client (client_identifier); +CREATE TABLE ibexa_oauth2_client_redirect_uri (id SERIAL NOT NULL, client_id INT NOT NULL, client_redirect_uri VARCHAR(255) NOT NULL, PRIMARY KEY(id)); +CREATE INDEX ibexa_oauth2_client_redirect_uri_client_id_idx ON ibexa_oauth2_client_redirect_uri (client_id); +CREATE INDEX ibexa_oauth2_client_redirect_uri_client_redirect_uri_idx ON ibexa_oauth2_client_redirect_uri (client_redirect_uri); +CREATE UNIQUE INDEX ibexa_oauth2_client_redirect_uri_unique_idx ON ibexa_oauth2_client_redirect_uri (client_id, client_redirect_uri); +CREATE TABLE ibexa_oauth2_client_grant (id SERIAL NOT NULL, client_id INT NOT NULL, client_grant VARCHAR(255) NOT NULL, PRIMARY KEY(id)); +CREATE INDEX ibexa_oauth2_client_grant_client_id_idx ON ibexa_oauth2_client_grant (client_id); +CREATE INDEX ibexa_oauth2_client_grant_client_grant_idx ON ibexa_oauth2_client_grant (client_grant); +CREATE UNIQUE INDEX ibexa_oauth2_client_grant_unique_idx ON ibexa_oauth2_client_grant (client_id, client_grant); +CREATE TABLE ibexa_oauth2_client_token (id SERIAL NOT NULL, client_id INT NOT NULL, token_id INT NOT NULL, PRIMARY KEY(id)); +CREATE INDEX ibexa_oauth2_client_token_client_id_idx ON ibexa_oauth2_client_token (client_id); +CREATE INDEX ibexa_oauth2_client_token_token_id_idx ON ibexa_oauth2_client_token (token_id); +CREATE UNIQUE INDEX ibexa_oauth2_client_token_unique_idx ON ibexa_oauth2_client_token (client_id, token_id); +CREATE TABLE ibexa_oauth2_client_scope (id SERIAL NOT NULL, client_id INT NOT NULL, client_scope VARCHAR(255) NOT NULL, PRIMARY KEY(id)); +CREATE INDEX ibexa_oauth2_client_scope_client_id_idx ON ibexa_oauth2_client_scope (client_id); +CREATE INDEX ibexa_oauth2_client_scope_client_scope_idx ON ibexa_oauth2_client_scope (client_scope); +CREATE UNIQUE INDEX ibexa_oauth2_client_scope_unique_idx ON ibexa_oauth2_client_scope (client_id, client_scope); +CREATE TABLE ibexa_oauth2_token_scope (id SERIAL NOT NULL, token_id INT NOT NULL, token_scope VARCHAR(255) NOT NULL, PRIMARY KEY(id)); +CREATE INDEX ibexa_oauth2_token_scope_token_id_idx ON ibexa_oauth2_token_scope (token_id); +CREATE INDEX ibexa_oauth2_token_scope_scope_idx ON ibexa_oauth2_token_scope (token_scope); +CREATE UNIQUE INDEX ibexa_oauth2_token_scope_unique_idx ON ibexa_oauth2_token_scope (token_id, token_scope); +CREATE TABLE ibexa_oauth2_refresh_access_token (id SERIAL NOT NULL, access_token_id INT NOT NULL, refresh_token_id INT NOT NULL, PRIMARY KEY(id)); +CREATE INDEX ibexa_oauth2_refresh_access_token_access_token_id_idx ON ibexa_oauth2_refresh_access_token (access_token_id); +CREATE INDEX ibexa_oauth2_refresh_access_token_refresh_token_id_idx ON ibexa_oauth2_refresh_access_token (refresh_token_id); +CREATE UNIQUE INDEX ibexa_oauth2_refresh_access_token_unique_idx ON ibexa_oauth2_refresh_access_token (access_token_id, refresh_token_id); +CREATE TABLE ibexa_oauth2_consent (id SERIAL NOT NULL, user_identifier VARCHAR(150) NOT NULL, client_identifier VARCHAR(32) NOT NULL, created INT DEFAULT 0 NOT NULL, updated INT DEFAULT 0 NOT NULL, PRIMARY KEY(id)); +CREATE INDEX IDX_40497C0FD0494586 ON ibexa_oauth2_consent (user_identifier); +CREATE INDEX IDX_40497C0FE77ABE2B ON ibexa_oauth2_consent (client_identifier); +CREATE INDEX ibexa_oauth2_consent_consent_idx ON ibexa_oauth2_consent (user_identifier, client_identifier); +CREATE UNIQUE INDEX ibexa_oauth2_consent_unique_idx ON ibexa_oauth2_consent (user_identifier, client_identifier); +CREATE TABLE ibexa_oauth2_consent_scope (id SERIAL NOT NULL, consent_id INT NOT NULL, consent_scope VARCHAR(255) NOT NULL, PRIMARY KEY(id)); +CREATE INDEX ibexa_oauth2_consent_scope_consent_id_idx ON ibexa_oauth2_consent_scope (consent_id); +CREATE INDEX ibexa_oauth2_consent_scope_consent_scope_idx ON ibexa_oauth2_consent_scope (consent_scope); +CREATE UNIQUE INDEX ibexa_oauth2_consent_scope_unique_idx ON ibexa_oauth2_consent_scope (consent_id, consent_scope); +ALTER TABLE ibexa_oauth2_client_redirect_uri ADD CONSTRAINT ibexa_oauth2_client_redirect_uri_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_client_grant ADD CONSTRAINT ibexa_oauth2_client_grant_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_client_token ADD CONSTRAINT ibexa_oauth2_client_token_client_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_client_token ADD CONSTRAINT ibexa_oauth2_client_token_token_fk FOREIGN KEY (token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_client_scope ADD CONSTRAINT ibexa_oauth2_client_scope_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_token_scope ADD CONSTRAINT ibexa_oauth2_token_scope_fk FOREIGN KEY (token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_refresh_access_token ADD CONSTRAINT ibexa_oauth2_refresh_access_token_access_token_fk FOREIGN KEY (access_token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_refresh_access_token ADD CONSTRAINT ibexa_oauth2_refresh_access_token_refresh_token_fk FOREIGN KEY (refresh_token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_consent ADD CONSTRAINT ibexa_oauth2_consent_user_fk FOREIGN KEY (user_identifier) REFERENCES ezuser (login) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_consent ADD CONSTRAINT ibexa_oauth2_consent_client_fk FOREIGN KEY (client_identifier) REFERENCES ibexa_oauth2_client (client_identifier) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +ALTER TABLE ibexa_oauth2_consent_scope ADD CONSTRAINT ibexa_oauth2_consent_scope_fk FOREIGN KEY (consent_id) REFERENCES ibexa_oauth2_consent (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; From dce245c56e9fdf37518f422840f87cca50e5c394 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Fri, 6 Mar 2026 10:12:29 +0100 Subject: [PATCH 2/4] Generated MySQL with correct charset --- docs/users/sql/install_mysql.sql | 66 ++++++++++---------------------- 1 file changed, 20 insertions(+), 46 deletions(-) diff --git a/docs/users/sql/install_mysql.sql b/docs/users/sql/install_mysql.sql index 920c063a36..e98dbf0fb0 100644 --- a/docs/users/sql/install_mysql.sql +++ b/docs/users/sql/install_mysql.sql @@ -1,46 +1,20 @@ -CREATE TABLE ibexa_oauth2_client (id SERIAL NOT NULL, client_name VARCHAR(128) NOT NULL, client_identifier VARCHAR(32) NOT NULL, client_secret VARCHAR(128) DEFAULT NULL, client_active BOOLEAN DEFAULT 'false' NOT NULL, client_plain_pkce BOOLEAN DEFAULT 'false' NOT NULL, PRIMARY KEY(id)); -CREATE UNIQUE INDEX ibexa_oauth2_client_identifier_idx ON ibexa_oauth2_client (client_identifier); -CREATE TABLE ibexa_oauth2_client_redirect_uri (id SERIAL NOT NULL, client_id INT NOT NULL, client_redirect_uri VARCHAR(255) NOT NULL, PRIMARY KEY(id)); -CREATE INDEX ibexa_oauth2_client_redirect_uri_client_id_idx ON ibexa_oauth2_client_redirect_uri (client_id); -CREATE INDEX ibexa_oauth2_client_redirect_uri_client_redirect_uri_idx ON ibexa_oauth2_client_redirect_uri (client_redirect_uri); -CREATE UNIQUE INDEX ibexa_oauth2_client_redirect_uri_unique_idx ON ibexa_oauth2_client_redirect_uri (client_id, client_redirect_uri); -CREATE TABLE ibexa_oauth2_client_grant (id SERIAL NOT NULL, client_id INT NOT NULL, client_grant VARCHAR(255) NOT NULL, PRIMARY KEY(id)); -CREATE INDEX ibexa_oauth2_client_grant_client_id_idx ON ibexa_oauth2_client_grant (client_id); -CREATE INDEX ibexa_oauth2_client_grant_client_grant_idx ON ibexa_oauth2_client_grant (client_grant); -CREATE UNIQUE INDEX ibexa_oauth2_client_grant_unique_idx ON ibexa_oauth2_client_grant (client_id, client_grant); -CREATE TABLE ibexa_oauth2_client_token (id SERIAL NOT NULL, client_id INT NOT NULL, token_id INT NOT NULL, PRIMARY KEY(id)); -CREATE INDEX ibexa_oauth2_client_token_client_id_idx ON ibexa_oauth2_client_token (client_id); -CREATE INDEX ibexa_oauth2_client_token_token_id_idx ON ibexa_oauth2_client_token (token_id); -CREATE UNIQUE INDEX ibexa_oauth2_client_token_unique_idx ON ibexa_oauth2_client_token (client_id, token_id); -CREATE TABLE ibexa_oauth2_client_scope (id SERIAL NOT NULL, client_id INT NOT NULL, client_scope VARCHAR(255) NOT NULL, PRIMARY KEY(id)); -CREATE INDEX ibexa_oauth2_client_scope_client_id_idx ON ibexa_oauth2_client_scope (client_id); -CREATE INDEX ibexa_oauth2_client_scope_client_scope_idx ON ibexa_oauth2_client_scope (client_scope); -CREATE UNIQUE INDEX ibexa_oauth2_client_scope_unique_idx ON ibexa_oauth2_client_scope (client_id, client_scope); -CREATE TABLE ibexa_oauth2_token_scope (id SERIAL NOT NULL, token_id INT NOT NULL, token_scope VARCHAR(255) NOT NULL, PRIMARY KEY(id)); -CREATE INDEX ibexa_oauth2_token_scope_token_id_idx ON ibexa_oauth2_token_scope (token_id); -CREATE INDEX ibexa_oauth2_token_scope_scope_idx ON ibexa_oauth2_token_scope (token_scope); -CREATE UNIQUE INDEX ibexa_oauth2_token_scope_unique_idx ON ibexa_oauth2_token_scope (token_id, token_scope); -CREATE TABLE ibexa_oauth2_refresh_access_token (id SERIAL NOT NULL, access_token_id INT NOT NULL, refresh_token_id INT NOT NULL, PRIMARY KEY(id)); -CREATE INDEX ibexa_oauth2_refresh_access_token_access_token_id_idx ON ibexa_oauth2_refresh_access_token (access_token_id); -CREATE INDEX ibexa_oauth2_refresh_access_token_refresh_token_id_idx ON ibexa_oauth2_refresh_access_token (refresh_token_id); -CREATE UNIQUE INDEX ibexa_oauth2_refresh_access_token_unique_idx ON ibexa_oauth2_refresh_access_token (access_token_id, refresh_token_id); -CREATE TABLE ibexa_oauth2_consent (id SERIAL NOT NULL, user_identifier VARCHAR(150) NOT NULL, client_identifier VARCHAR(32) NOT NULL, created INT DEFAULT 0 NOT NULL, updated INT DEFAULT 0 NOT NULL, PRIMARY KEY(id)); -CREATE INDEX IDX_40497C0FD0494586 ON ibexa_oauth2_consent (user_identifier); -CREATE INDEX IDX_40497C0FE77ABE2B ON ibexa_oauth2_consent (client_identifier); -CREATE INDEX ibexa_oauth2_consent_consent_idx ON ibexa_oauth2_consent (user_identifier, client_identifier); -CREATE UNIQUE INDEX ibexa_oauth2_consent_unique_idx ON ibexa_oauth2_consent (user_identifier, client_identifier); -CREATE TABLE ibexa_oauth2_consent_scope (id SERIAL NOT NULL, consent_id INT NOT NULL, consent_scope VARCHAR(255) NOT NULL, PRIMARY KEY(id)); -CREATE INDEX ibexa_oauth2_consent_scope_consent_id_idx ON ibexa_oauth2_consent_scope (consent_id); -CREATE INDEX ibexa_oauth2_consent_scope_consent_scope_idx ON ibexa_oauth2_consent_scope (consent_scope); -CREATE UNIQUE INDEX ibexa_oauth2_consent_scope_unique_idx ON ibexa_oauth2_consent_scope (consent_id, consent_scope); -ALTER TABLE ibexa_oauth2_client_redirect_uri ADD CONSTRAINT ibexa_oauth2_client_redirect_uri_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; -ALTER TABLE ibexa_oauth2_client_grant ADD CONSTRAINT ibexa_oauth2_client_grant_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; -ALTER TABLE ibexa_oauth2_client_token ADD CONSTRAINT ibexa_oauth2_client_token_client_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; -ALTER TABLE ibexa_oauth2_client_token ADD CONSTRAINT ibexa_oauth2_client_token_token_fk FOREIGN KEY (token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; -ALTER TABLE ibexa_oauth2_client_scope ADD CONSTRAINT ibexa_oauth2_client_scope_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; -ALTER TABLE ibexa_oauth2_token_scope ADD CONSTRAINT ibexa_oauth2_token_scope_fk FOREIGN KEY (token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; -ALTER TABLE ibexa_oauth2_refresh_access_token ADD CONSTRAINT ibexa_oauth2_refresh_access_token_access_token_fk FOREIGN KEY (access_token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; -ALTER TABLE ibexa_oauth2_refresh_access_token ADD CONSTRAINT ibexa_oauth2_refresh_access_token_refresh_token_fk FOREIGN KEY (refresh_token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; -ALTER TABLE ibexa_oauth2_consent ADD CONSTRAINT ibexa_oauth2_consent_user_fk FOREIGN KEY (user_identifier) REFERENCES ezuser (login) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; -ALTER TABLE ibexa_oauth2_consent ADD CONSTRAINT ibexa_oauth2_consent_client_fk FOREIGN KEY (client_identifier) REFERENCES ibexa_oauth2_client (client_identifier) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; -ALTER TABLE ibexa_oauth2_consent_scope ADD CONSTRAINT ibexa_oauth2_consent_scope_fk FOREIGN KEY (consent_id) REFERENCES ibexa_oauth2_consent (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; +CREATE TABLE ibexa_oauth2_client (id INT AUTO_INCREMENT NOT NULL, client_name VARCHAR(128) NOT NULL, client_identifier VARCHAR(32) NOT NULL, client_secret VARCHAR(128) DEFAULT NULL, client_active TINYINT(1) DEFAULT '0' NOT NULL, client_plain_pkce TINYINT(1) DEFAULT '0' NOT NULL, UNIQUE INDEX ibexa_oauth2_client_identifier_idx (client_identifier), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; +CREATE TABLE ibexa_oauth2_client_redirect_uri (id INT AUTO_INCREMENT NOT NULL, client_id INT NOT NULL, client_redirect_uri VARCHAR(255) NOT NULL, INDEX ibexa_oauth2_client_redirect_uri_client_id_idx (client_id), INDEX ibexa_oauth2_client_redirect_uri_client_redirect_uri_idx (client_redirect_uri), UNIQUE INDEX ibexa_oauth2_client_redirect_uri_unique_idx (client_id, client_redirect_uri), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; +CREATE TABLE ibexa_oauth2_client_grant (id INT AUTO_INCREMENT NOT NULL, client_id INT NOT NULL, client_grant VARCHAR(255) NOT NULL, INDEX ibexa_oauth2_client_grant_client_id_idx (client_id), INDEX ibexa_oauth2_client_grant_client_grant_idx (client_grant), UNIQUE INDEX ibexa_oauth2_client_grant_unique_idx (client_id, client_grant), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; +CREATE TABLE ibexa_oauth2_client_token (id INT AUTO_INCREMENT NOT NULL, client_id INT NOT NULL, token_id INT NOT NULL, INDEX ibexa_oauth2_client_token_client_id_idx (client_id), INDEX ibexa_oauth2_client_token_token_id_idx (token_id), UNIQUE INDEX ibexa_oauth2_client_token_unique_idx (client_id, token_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; +CREATE TABLE ibexa_oauth2_client_scope (id INT AUTO_INCREMENT NOT NULL, client_id INT NOT NULL, client_scope VARCHAR(255) NOT NULL, INDEX ibexa_oauth2_client_scope_client_id_idx (client_id), INDEX ibexa_oauth2_client_scope_client_scope_idx (client_scope), UNIQUE INDEX ibexa_oauth2_client_scope_unique_idx (client_id, client_scope), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; +CREATE TABLE ibexa_oauth2_token_scope (id INT AUTO_INCREMENT NOT NULL, token_id INT NOT NULL, token_scope VARCHAR(255) NOT NULL, INDEX ibexa_oauth2_token_scope_token_id_idx (token_id), INDEX ibexa_oauth2_token_scope_scope_idx (token_scope), UNIQUE INDEX ibexa_oauth2_token_scope_unique_idx (token_id, token_scope), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; +CREATE TABLE ibexa_oauth2_refresh_access_token (id INT AUTO_INCREMENT NOT NULL, access_token_id INT NOT NULL, refresh_token_id INT NOT NULL, INDEX ibexa_oauth2_refresh_access_token_access_token_id_idx (access_token_id), INDEX ibexa_oauth2_refresh_access_token_refresh_token_id_idx (refresh_token_id), UNIQUE INDEX ibexa_oauth2_refresh_access_token_unique_idx (access_token_id, refresh_token_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; +CREATE TABLE ibexa_oauth2_consent (id INT AUTO_INCREMENT NOT NULL, user_identifier VARCHAR(150) NOT NULL, client_identifier VARCHAR(32) NOT NULL, created INT DEFAULT 0 NOT NULL, updated INT DEFAULT 0 NOT NULL, INDEX IDX_40497C0FD0494586 (user_identifier), INDEX IDX_40497C0FE77ABE2B (client_identifier), INDEX ibexa_oauth2_consent_consent_idx (user_identifier, client_identifier), UNIQUE INDEX ibexa_oauth2_consent_unique_idx (user_identifier, client_identifier), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; +CREATE TABLE ibexa_oauth2_consent_scope (id INT AUTO_INCREMENT NOT NULL, consent_id INT NOT NULL, consent_scope VARCHAR(255) NOT NULL, INDEX ibexa_oauth2_consent_scope_consent_id_idx (consent_id), INDEX ibexa_oauth2_consent_scope_consent_scope_idx (consent_scope), UNIQUE INDEX ibexa_oauth2_consent_scope_unique_idx (consent_id, consent_scope), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; +ALTER TABLE ibexa_oauth2_client_redirect_uri ADD CONSTRAINT ibexa_oauth2_client_redirect_uri_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE; +ALTER TABLE ibexa_oauth2_client_grant ADD CONSTRAINT ibexa_oauth2_client_grant_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE; +ALTER TABLE ibexa_oauth2_client_token ADD CONSTRAINT ibexa_oauth2_client_token_client_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE; +ALTER TABLE ibexa_oauth2_client_token ADD CONSTRAINT ibexa_oauth2_client_token_token_fk FOREIGN KEY (token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE; +ALTER TABLE ibexa_oauth2_client_scope ADD CONSTRAINT ibexa_oauth2_client_scope_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE; +ALTER TABLE ibexa_oauth2_token_scope ADD CONSTRAINT ibexa_oauth2_token_scope_fk FOREIGN KEY (token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE; +ALTER TABLE ibexa_oauth2_refresh_access_token ADD CONSTRAINT ibexa_oauth2_refresh_access_token_access_token_fk FOREIGN KEY (access_token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE; +ALTER TABLE ibexa_oauth2_refresh_access_token ADD CONSTRAINT ibexa_oauth2_refresh_access_token_refresh_token_fk FOREIGN KEY (refresh_token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE; +ALTER TABLE ibexa_oauth2_consent ADD CONSTRAINT ibexa_oauth2_consent_user_fk FOREIGN KEY (user_identifier) REFERENCES ezuser (login) ON UPDATE CASCADE ON DELETE CASCADE; +ALTER TABLE ibexa_oauth2_consent ADD CONSTRAINT ibexa_oauth2_consent_client_fk FOREIGN KEY (client_identifier) REFERENCES ibexa_oauth2_client (client_identifier) ON UPDATE CASCADE ON DELETE CASCADE; +ALTER TABLE ibexa_oauth2_consent_scope ADD CONSTRAINT ibexa_oauth2_consent_scope_fk FOREIGN KEY (consent_id) REFERENCES ibexa_oauth2_consent (id) ON UPDATE CASCADE ON DELETE CASCADE; From a382117d8633e43771da9473868b6287f09c9fe3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Fri, 6 Mar 2026 10:18:57 +0100 Subject: [PATCH 3/4] Run formatting --- docs/users/sql/install_mysql.sql | 140 ++++++++++++++++++++++++-- docs/users/sql/install_postgresql.sql | 122 ++++++++++++++++++++-- 2 files changed, 244 insertions(+), 18 deletions(-) diff --git a/docs/users/sql/install_mysql.sql b/docs/users/sql/install_mysql.sql index e98dbf0fb0..e06fbd4d4a 100644 --- a/docs/users/sql/install_mysql.sql +++ b/docs/users/sql/install_mysql.sql @@ -1,20 +1,142 @@ -CREATE TABLE ibexa_oauth2_client (id INT AUTO_INCREMENT NOT NULL, client_name VARCHAR(128) NOT NULL, client_identifier VARCHAR(32) NOT NULL, client_secret VARCHAR(128) DEFAULT NULL, client_active TINYINT(1) DEFAULT '0' NOT NULL, client_plain_pkce TINYINT(1) DEFAULT '0' NOT NULL, UNIQUE INDEX ibexa_oauth2_client_identifier_idx (client_identifier), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; -CREATE TABLE ibexa_oauth2_client_redirect_uri (id INT AUTO_INCREMENT NOT NULL, client_id INT NOT NULL, client_redirect_uri VARCHAR(255) NOT NULL, INDEX ibexa_oauth2_client_redirect_uri_client_id_idx (client_id), INDEX ibexa_oauth2_client_redirect_uri_client_redirect_uri_idx (client_redirect_uri), UNIQUE INDEX ibexa_oauth2_client_redirect_uri_unique_idx (client_id, client_redirect_uri), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; -CREATE TABLE ibexa_oauth2_client_grant (id INT AUTO_INCREMENT NOT NULL, client_id INT NOT NULL, client_grant VARCHAR(255) NOT NULL, INDEX ibexa_oauth2_client_grant_client_id_idx (client_id), INDEX ibexa_oauth2_client_grant_client_grant_idx (client_grant), UNIQUE INDEX ibexa_oauth2_client_grant_unique_idx (client_id, client_grant), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; -CREATE TABLE ibexa_oauth2_client_token (id INT AUTO_INCREMENT NOT NULL, client_id INT NOT NULL, token_id INT NOT NULL, INDEX ibexa_oauth2_client_token_client_id_idx (client_id), INDEX ibexa_oauth2_client_token_token_id_idx (token_id), UNIQUE INDEX ibexa_oauth2_client_token_unique_idx (client_id, token_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; -CREATE TABLE ibexa_oauth2_client_scope (id INT AUTO_INCREMENT NOT NULL, client_id INT NOT NULL, client_scope VARCHAR(255) NOT NULL, INDEX ibexa_oauth2_client_scope_client_id_idx (client_id), INDEX ibexa_oauth2_client_scope_client_scope_idx (client_scope), UNIQUE INDEX ibexa_oauth2_client_scope_unique_idx (client_id, client_scope), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; -CREATE TABLE ibexa_oauth2_token_scope (id INT AUTO_INCREMENT NOT NULL, token_id INT NOT NULL, token_scope VARCHAR(255) NOT NULL, INDEX ibexa_oauth2_token_scope_token_id_idx (token_id), INDEX ibexa_oauth2_token_scope_scope_idx (token_scope), UNIQUE INDEX ibexa_oauth2_token_scope_unique_idx (token_id, token_scope), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; -CREATE TABLE ibexa_oauth2_refresh_access_token (id INT AUTO_INCREMENT NOT NULL, access_token_id INT NOT NULL, refresh_token_id INT NOT NULL, INDEX ibexa_oauth2_refresh_access_token_access_token_id_idx (access_token_id), INDEX ibexa_oauth2_refresh_access_token_refresh_token_id_idx (refresh_token_id), UNIQUE INDEX ibexa_oauth2_refresh_access_token_unique_idx (access_token_id, refresh_token_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; -CREATE TABLE ibexa_oauth2_consent (id INT AUTO_INCREMENT NOT NULL, user_identifier VARCHAR(150) NOT NULL, client_identifier VARCHAR(32) NOT NULL, created INT DEFAULT 0 NOT NULL, updated INT DEFAULT 0 NOT NULL, INDEX IDX_40497C0FD0494586 (user_identifier), INDEX IDX_40497C0FE77ABE2B (client_identifier), INDEX ibexa_oauth2_consent_consent_idx (user_identifier, client_identifier), UNIQUE INDEX ibexa_oauth2_consent_unique_idx (user_identifier, client_identifier), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; -CREATE TABLE ibexa_oauth2_consent_scope (id INT AUTO_INCREMENT NOT NULL, consent_id INT NOT NULL, consent_scope VARCHAR(255) NOT NULL, INDEX ibexa_oauth2_consent_scope_consent_id_idx (consent_id), INDEX ibexa_oauth2_consent_scope_consent_scope_idx (consent_scope), UNIQUE INDEX ibexa_oauth2_consent_scope_unique_idx (consent_id, consent_scope), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; +CREATE TABLE + ibexa_oauth2_client ( + id INT AUTO_INCREMENT NOT NULL, + client_name VARCHAR(128) NOT NULL, + client_identifier VARCHAR(32) NOT NULL, + client_secret VARCHAR(128) DEFAULT NULL, + client_active TINYINT (1) DEFAULT '0' NOT NULL, + client_plain_pkce TINYINT (1) DEFAULT '0' NOT NULL, + UNIQUE INDEX ibexa_oauth2_client_identifier_idx (client_identifier), + PRIMARY KEY (id) + ) DEFAULT CHARACTER +SET + utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; + +CREATE TABLE + ibexa_oauth2_client_redirect_uri ( + id INT AUTO_INCREMENT NOT NULL, + client_id INT NOT NULL, + client_redirect_uri VARCHAR(255) NOT NULL, + INDEX ibexa_oauth2_client_redirect_uri_client_id_idx (client_id), + INDEX ibexa_oauth2_client_redirect_uri_client_redirect_uri_idx (client_redirect_uri), + UNIQUE INDEX ibexa_oauth2_client_redirect_uri_unique_idx (client_id, client_redirect_uri), + PRIMARY KEY (id) + ) DEFAULT CHARACTER +SET + utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; + +CREATE TABLE + ibexa_oauth2_client_grant ( + id INT AUTO_INCREMENT NOT NULL, + client_id INT NOT NULL, + client_grant VARCHAR(255) NOT NULL, + INDEX ibexa_oauth2_client_grant_client_id_idx (client_id), + INDEX ibexa_oauth2_client_grant_client_grant_idx (client_grant), + UNIQUE INDEX ibexa_oauth2_client_grant_unique_idx (client_id, client_grant), + PRIMARY KEY (id) + ) DEFAULT CHARACTER +SET + utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; + +CREATE TABLE + ibexa_oauth2_client_token ( + id INT AUTO_INCREMENT NOT NULL, + client_id INT NOT NULL, + token_id INT NOT NULL, + INDEX ibexa_oauth2_client_token_client_id_idx (client_id), + INDEX ibexa_oauth2_client_token_token_id_idx (token_id), + UNIQUE INDEX ibexa_oauth2_client_token_unique_idx (client_id, token_id), + PRIMARY KEY (id) + ) DEFAULT CHARACTER +SET + utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; + +CREATE TABLE + ibexa_oauth2_client_scope ( + id INT AUTO_INCREMENT NOT NULL, + client_id INT NOT NULL, + client_scope VARCHAR(255) NOT NULL, + INDEX ibexa_oauth2_client_scope_client_id_idx (client_id), + INDEX ibexa_oauth2_client_scope_client_scope_idx (client_scope), + UNIQUE INDEX ibexa_oauth2_client_scope_unique_idx (client_id, client_scope), + PRIMARY KEY (id) + ) DEFAULT CHARACTER +SET + utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; + +CREATE TABLE + ibexa_oauth2_token_scope ( + id INT AUTO_INCREMENT NOT NULL, + token_id INT NOT NULL, + token_scope VARCHAR(255) NOT NULL, + INDEX ibexa_oauth2_token_scope_token_id_idx (token_id), + INDEX ibexa_oauth2_token_scope_scope_idx (token_scope), + UNIQUE INDEX ibexa_oauth2_token_scope_unique_idx (token_id, token_scope), + PRIMARY KEY (id) + ) DEFAULT CHARACTER +SET + utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; + +CREATE TABLE + ibexa_oauth2_refresh_access_token ( + id INT AUTO_INCREMENT NOT NULL, + access_token_id INT NOT NULL, + refresh_token_id INT NOT NULL, + INDEX ibexa_oauth2_refresh_access_token_access_token_id_idx (access_token_id), + INDEX ibexa_oauth2_refresh_access_token_refresh_token_id_idx (refresh_token_id), + UNIQUE INDEX ibexa_oauth2_refresh_access_token_unique_idx (access_token_id, refresh_token_id), + PRIMARY KEY (id) + ) DEFAULT CHARACTER +SET + utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; + +CREATE TABLE + ibexa_oauth2_consent ( + id INT AUTO_INCREMENT NOT NULL, + user_identifier VARCHAR(150) NOT NULL, + client_identifier VARCHAR(32) NOT NULL, + created INT DEFAULT 0 NOT NULL, + updated INT DEFAULT 0 NOT NULL, + INDEX IDX_40497C0FD0494586 (user_identifier), + INDEX IDX_40497C0FE77ABE2B (client_identifier), + INDEX ibexa_oauth2_consent_consent_idx (user_identifier, client_identifier), + UNIQUE INDEX ibexa_oauth2_consent_unique_idx (user_identifier, client_identifier), + PRIMARY KEY (id) + ) DEFAULT CHARACTER +SET + utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; + +CREATE TABLE + ibexa_oauth2_consent_scope ( + id INT AUTO_INCREMENT NOT NULL, + consent_id INT NOT NULL, + consent_scope VARCHAR(255) NOT NULL, + INDEX ibexa_oauth2_consent_scope_consent_id_idx (consent_id), + INDEX ibexa_oauth2_consent_scope_consent_scope_idx (consent_scope), + UNIQUE INDEX ibexa_oauth2_consent_scope_unique_idx (consent_id, consent_scope), + PRIMARY KEY (id) + ) DEFAULT CHARACTER +SET + utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; + ALTER TABLE ibexa_oauth2_client_redirect_uri ADD CONSTRAINT ibexa_oauth2_client_redirect_uri_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE; + ALTER TABLE ibexa_oauth2_client_grant ADD CONSTRAINT ibexa_oauth2_client_grant_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE; + ALTER TABLE ibexa_oauth2_client_token ADD CONSTRAINT ibexa_oauth2_client_token_client_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE; + ALTER TABLE ibexa_oauth2_client_token ADD CONSTRAINT ibexa_oauth2_client_token_token_fk FOREIGN KEY (token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE; + ALTER TABLE ibexa_oauth2_client_scope ADD CONSTRAINT ibexa_oauth2_client_scope_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE; + ALTER TABLE ibexa_oauth2_token_scope ADD CONSTRAINT ibexa_oauth2_token_scope_fk FOREIGN KEY (token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE; + ALTER TABLE ibexa_oauth2_refresh_access_token ADD CONSTRAINT ibexa_oauth2_refresh_access_token_access_token_fk FOREIGN KEY (access_token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE; + ALTER TABLE ibexa_oauth2_refresh_access_token ADD CONSTRAINT ibexa_oauth2_refresh_access_token_refresh_token_fk FOREIGN KEY (refresh_token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE; + ALTER TABLE ibexa_oauth2_consent ADD CONSTRAINT ibexa_oauth2_consent_user_fk FOREIGN KEY (user_identifier) REFERENCES ezuser (login) ON UPDATE CASCADE ON DELETE CASCADE; + ALTER TABLE ibexa_oauth2_consent ADD CONSTRAINT ibexa_oauth2_consent_client_fk FOREIGN KEY (client_identifier) REFERENCES ibexa_oauth2_client (client_identifier) ON UPDATE CASCADE ON DELETE CASCADE; + ALTER TABLE ibexa_oauth2_consent_scope ADD CONSTRAINT ibexa_oauth2_consent_scope_fk FOREIGN KEY (consent_id) REFERENCES ibexa_oauth2_consent (id) ON UPDATE CASCADE ON DELETE CASCADE; diff --git a/docs/users/sql/install_postgresql.sql b/docs/users/sql/install_postgresql.sql index 920c063a36..0020aa394c 100644 --- a/docs/users/sql/install_postgresql.sql +++ b/docs/users/sql/install_postgresql.sql @@ -1,46 +1,150 @@ -CREATE TABLE ibexa_oauth2_client (id SERIAL NOT NULL, client_name VARCHAR(128) NOT NULL, client_identifier VARCHAR(32) NOT NULL, client_secret VARCHAR(128) DEFAULT NULL, client_active BOOLEAN DEFAULT 'false' NOT NULL, client_plain_pkce BOOLEAN DEFAULT 'false' NOT NULL, PRIMARY KEY(id)); +CREATE TABLE + ibexa_oauth2_client ( + id SERIAL NOT NULL, + client_name VARCHAR(128) NOT NULL, + client_identifier VARCHAR(32) NOT NULL, + client_secret VARCHAR(128) DEFAULT NULL, + client_active BOOLEAN DEFAULT 'false' NOT NULL, + client_plain_pkce BOOLEAN DEFAULT 'false' NOT NULL, + PRIMARY KEY (id) + ); + CREATE UNIQUE INDEX ibexa_oauth2_client_identifier_idx ON ibexa_oauth2_client (client_identifier); -CREATE TABLE ibexa_oauth2_client_redirect_uri (id SERIAL NOT NULL, client_id INT NOT NULL, client_redirect_uri VARCHAR(255) NOT NULL, PRIMARY KEY(id)); + +CREATE TABLE + ibexa_oauth2_client_redirect_uri ( + id SERIAL NOT NULL, + client_id INT NOT NULL, + client_redirect_uri VARCHAR(255) NOT NULL, + PRIMARY KEY (id) + ); + CREATE INDEX ibexa_oauth2_client_redirect_uri_client_id_idx ON ibexa_oauth2_client_redirect_uri (client_id); + CREATE INDEX ibexa_oauth2_client_redirect_uri_client_redirect_uri_idx ON ibexa_oauth2_client_redirect_uri (client_redirect_uri); + CREATE UNIQUE INDEX ibexa_oauth2_client_redirect_uri_unique_idx ON ibexa_oauth2_client_redirect_uri (client_id, client_redirect_uri); -CREATE TABLE ibexa_oauth2_client_grant (id SERIAL NOT NULL, client_id INT NOT NULL, client_grant VARCHAR(255) NOT NULL, PRIMARY KEY(id)); + +CREATE TABLE + ibexa_oauth2_client_grant ( + id SERIAL NOT NULL, + client_id INT NOT NULL, + client_grant VARCHAR(255) NOT NULL, + PRIMARY KEY (id) + ); + CREATE INDEX ibexa_oauth2_client_grant_client_id_idx ON ibexa_oauth2_client_grant (client_id); + CREATE INDEX ibexa_oauth2_client_grant_client_grant_idx ON ibexa_oauth2_client_grant (client_grant); + CREATE UNIQUE INDEX ibexa_oauth2_client_grant_unique_idx ON ibexa_oauth2_client_grant (client_id, client_grant); -CREATE TABLE ibexa_oauth2_client_token (id SERIAL NOT NULL, client_id INT NOT NULL, token_id INT NOT NULL, PRIMARY KEY(id)); + +CREATE TABLE + ibexa_oauth2_client_token ( + id SERIAL NOT NULL, + client_id INT NOT NULL, + token_id INT NOT NULL, + PRIMARY KEY (id) + ); + CREATE INDEX ibexa_oauth2_client_token_client_id_idx ON ibexa_oauth2_client_token (client_id); + CREATE INDEX ibexa_oauth2_client_token_token_id_idx ON ibexa_oauth2_client_token (token_id); + CREATE UNIQUE INDEX ibexa_oauth2_client_token_unique_idx ON ibexa_oauth2_client_token (client_id, token_id); -CREATE TABLE ibexa_oauth2_client_scope (id SERIAL NOT NULL, client_id INT NOT NULL, client_scope VARCHAR(255) NOT NULL, PRIMARY KEY(id)); + +CREATE TABLE + ibexa_oauth2_client_scope ( + id SERIAL NOT NULL, + client_id INT NOT NULL, + client_scope VARCHAR(255) NOT NULL, + PRIMARY KEY (id) + ); + CREATE INDEX ibexa_oauth2_client_scope_client_id_idx ON ibexa_oauth2_client_scope (client_id); + CREATE INDEX ibexa_oauth2_client_scope_client_scope_idx ON ibexa_oauth2_client_scope (client_scope); + CREATE UNIQUE INDEX ibexa_oauth2_client_scope_unique_idx ON ibexa_oauth2_client_scope (client_id, client_scope); -CREATE TABLE ibexa_oauth2_token_scope (id SERIAL NOT NULL, token_id INT NOT NULL, token_scope VARCHAR(255) NOT NULL, PRIMARY KEY(id)); + +CREATE TABLE + ibexa_oauth2_token_scope ( + id SERIAL NOT NULL, + token_id INT NOT NULL, + token_scope VARCHAR(255) NOT NULL, + PRIMARY KEY (id) + ); + CREATE INDEX ibexa_oauth2_token_scope_token_id_idx ON ibexa_oauth2_token_scope (token_id); + CREATE INDEX ibexa_oauth2_token_scope_scope_idx ON ibexa_oauth2_token_scope (token_scope); + CREATE UNIQUE INDEX ibexa_oauth2_token_scope_unique_idx ON ibexa_oauth2_token_scope (token_id, token_scope); -CREATE TABLE ibexa_oauth2_refresh_access_token (id SERIAL NOT NULL, access_token_id INT NOT NULL, refresh_token_id INT NOT NULL, PRIMARY KEY(id)); + +CREATE TABLE + ibexa_oauth2_refresh_access_token ( + id SERIAL NOT NULL, + access_token_id INT NOT NULL, + refresh_token_id INT NOT NULL, + PRIMARY KEY (id) + ); + CREATE INDEX ibexa_oauth2_refresh_access_token_access_token_id_idx ON ibexa_oauth2_refresh_access_token (access_token_id); + CREATE INDEX ibexa_oauth2_refresh_access_token_refresh_token_id_idx ON ibexa_oauth2_refresh_access_token (refresh_token_id); + CREATE UNIQUE INDEX ibexa_oauth2_refresh_access_token_unique_idx ON ibexa_oauth2_refresh_access_token (access_token_id, refresh_token_id); -CREATE TABLE ibexa_oauth2_consent (id SERIAL NOT NULL, user_identifier VARCHAR(150) NOT NULL, client_identifier VARCHAR(32) NOT NULL, created INT DEFAULT 0 NOT NULL, updated INT DEFAULT 0 NOT NULL, PRIMARY KEY(id)); + +CREATE TABLE + ibexa_oauth2_consent ( + id SERIAL NOT NULL, + user_identifier VARCHAR(150) NOT NULL, + client_identifier VARCHAR(32) NOT NULL, + created INT DEFAULT 0 NOT NULL, + updated INT DEFAULT 0 NOT NULL, + PRIMARY KEY (id) + ); + CREATE INDEX IDX_40497C0FD0494586 ON ibexa_oauth2_consent (user_identifier); + CREATE INDEX IDX_40497C0FE77ABE2B ON ibexa_oauth2_consent (client_identifier); + CREATE INDEX ibexa_oauth2_consent_consent_idx ON ibexa_oauth2_consent (user_identifier, client_identifier); + CREATE UNIQUE INDEX ibexa_oauth2_consent_unique_idx ON ibexa_oauth2_consent (user_identifier, client_identifier); -CREATE TABLE ibexa_oauth2_consent_scope (id SERIAL NOT NULL, consent_id INT NOT NULL, consent_scope VARCHAR(255) NOT NULL, PRIMARY KEY(id)); + +CREATE TABLE + ibexa_oauth2_consent_scope ( + id SERIAL NOT NULL, + consent_id INT NOT NULL, + consent_scope VARCHAR(255) NOT NULL, + PRIMARY KEY (id) + ); + CREATE INDEX ibexa_oauth2_consent_scope_consent_id_idx ON ibexa_oauth2_consent_scope (consent_id); + CREATE INDEX ibexa_oauth2_consent_scope_consent_scope_idx ON ibexa_oauth2_consent_scope (consent_scope); + CREATE UNIQUE INDEX ibexa_oauth2_consent_scope_unique_idx ON ibexa_oauth2_consent_scope (consent_id, consent_scope); + ALTER TABLE ibexa_oauth2_client_redirect_uri ADD CONSTRAINT ibexa_oauth2_client_redirect_uri_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; + ALTER TABLE ibexa_oauth2_client_grant ADD CONSTRAINT ibexa_oauth2_client_grant_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; + ALTER TABLE ibexa_oauth2_client_token ADD CONSTRAINT ibexa_oauth2_client_token_client_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; + ALTER TABLE ibexa_oauth2_client_token ADD CONSTRAINT ibexa_oauth2_client_token_token_fk FOREIGN KEY (token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; + ALTER TABLE ibexa_oauth2_client_scope ADD CONSTRAINT ibexa_oauth2_client_scope_fk FOREIGN KEY (client_id) REFERENCES ibexa_oauth2_client (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; + ALTER TABLE ibexa_oauth2_token_scope ADD CONSTRAINT ibexa_oauth2_token_scope_fk FOREIGN KEY (token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; + ALTER TABLE ibexa_oauth2_refresh_access_token ADD CONSTRAINT ibexa_oauth2_refresh_access_token_access_token_fk FOREIGN KEY (access_token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; + ALTER TABLE ibexa_oauth2_refresh_access_token ADD CONSTRAINT ibexa_oauth2_refresh_access_token_refresh_token_fk FOREIGN KEY (refresh_token_id) REFERENCES ibexa_token (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; + ALTER TABLE ibexa_oauth2_consent ADD CONSTRAINT ibexa_oauth2_consent_user_fk FOREIGN KEY (user_identifier) REFERENCES ezuser (login) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; + ALTER TABLE ibexa_oauth2_consent ADD CONSTRAINT ibexa_oauth2_consent_client_fk FOREIGN KEY (client_identifier) REFERENCES ibexa_oauth2_client (client_identifier) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; + ALTER TABLE ibexa_oauth2_consent_scope ADD CONSTRAINT ibexa_oauth2_consent_scope_fk FOREIGN KEY (consent_id) REFERENCES ibexa_oauth2_consent (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; From 92a1c3534b157469ac362a65ca135338e47fb0f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Mon, 9 Mar 2026 10:39:58 +0100 Subject: [PATCH 4/4] Formatting --- docs/users/oauth_server.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/users/oauth_server.md b/docs/users/oauth_server.md index c1c84caec3..65ffffc3d4 100644 --- a/docs/users/oauth_server.md +++ b/docs/users/oauth_server.md @@ -22,14 +22,14 @@ Add the tables needed by the bundle: === "MySQL" - ```bash - [[= include_file('docs/users/sql/install_mysql.sql') =]] + ``` sql + [[= include_file('docs/users/sql/install_mysql.sql', glue=' ') =]] ``` === "PostgreSQL" - ```bash - [[= include_file('docs/users/sql/install_postgresql.sql') =]] + ``` sql + [[= include_file('docs/users/sql/install_postgresql.sql', glue=' ') =]] ``` Then, in `config/bundles.php`, at the end of an array with a list of bundles, add the following two lines :