From: Dylan William Hardison Date: Thu, 15 Nov 2018 14:14:33 +0000 (-0500) Subject: Bug 1354589 - schema changes only X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e8e9694726de5495daca031c8a2dd56da56cb242;p=thirdparty%2Fbugzilla.git Bug 1354589 - schema changes only --- diff --git a/Bugzilla/DB/Schema.pm b/Bugzilla/DB/Schema.pm index e1c19fa51..d2b0fbdeb 100644 --- a/Bugzilla/DB/Schema.pm +++ b/Bugzilla/DB/Schema.pm @@ -1826,6 +1826,164 @@ use constant ABSTRACT_SCHEMA => { user_user_request_log_user_id_idx => ['user_id'], ], }, + + # OAuth2 Tables + # ------------- + + oauth2_client => { + FIELDS => [ + id => {TYPE => 'varchar(255)', NOTNULL => 1, PRIMARYKEY => 1}, + description => {TYPE => 'varchar(255)', NOTNULL => 1}, + secret => {TYPE => 'varchar(255)', NOTNULL => 1}, + active => {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'TRUE'}, + last_modified => {TYPE => 'DATETIME'} + ] + }, + + oauth2_scope => { + FIELDS => [ + id => {TYPE => 'INT3', NOTNULL => 1, PRIMARYKEY => 1}, + description => {TYPE => 'varchar(255)', NOTNULL => 1} + ] + }, + + oauth2_client_scope => { + FIELDS => [ + client_id => {TYPE => 'varchar(255)', NOTNULL => 1, + REFERENCES => {TABLE => 'oauth2_client', + COLUMN => 'id', + UPDATE => 'CASCADE', + DELETE => 'CASCADE'}}, + scope_id => {TYPE => 'INT3', NOTNULL => 1, + REFERENCES => {TABLE => 'oauth2_scope', + COLUMN => 'id', + UPDATE => 'CASCADE', + DELETE => 'CASCADE'}}, + allowed => {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'FALSE'} + ], + INDEXES => [ + oauth2_client_scope_idx => {FIELDS => ['client_id', 'scope_id'], + TYPE => 'UNIQUE'}, + ] + }, + + oauth2_auth_code => { + FIELDS => [ + auth_code => {TYPE => 'varchar(255)', NOTNULL => 1, PRIMARYKEY => 1}, + client_id => {TYPE => 'varchar(255)', NOTNULL => 1, + REFERENCES => {TABLE => 'oauth2_client', + COLUMN => 'id', + UPDATE => 'CASCADE', + DELETE => 'CASCADE'}}, + user_id => {TYPE => 'INT3', NOTNULL => 1, + REFERENCES => {TABLE => 'profiles', + COLUMN => 'userid', + UPDATE => 'CASCADE', + DELETE => 'CASCADE'}}, + expires => {TYPE => 'DATETIME', NOTNULL => 1}, + redirect_uri => {TYPE => 'TINYTEXT', NOTNULL => 1}, + verified => {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'FALSE'}, + ] + }, + + oauth2_auth_code_scope => { + FIELDS => [ + auth_code => {TYPE => 'varchar(255)', NOTNULL => 1, + REFERENCES => {TABLE => 'oauth2_auth_code', + COLUMN => 'auth_code', + UPDATE => 'CASCADE', + DELETE => 'CASCADE'}}, + scope_id => {TYPE => 'INT3', NOTNULL => 1, + REFERENCES => {TABLE => 'oauth2_scope', + COLUMN => 'id', + UPDATE => 'CASCADE', + DELETE => 'CASCADE'}}, + allowed => {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'FALSE'}, + ], + INDEXES => [ + oauth2_auth_code_scope_idx => {FIELDS => ['auth_code', 'scope_id'], + TYPE => 'UNIQUE'}, + ] + }, + + oauth2_access_token => { + FIELDS => [ + access_token => {TYPE => 'varchar(255)', NOTNULL => 1, PRIMARYKEY => 1}, + refresh_token => {TYPE => 'varchar(255)'}, + client_id => {TYPE => 'varchar(255)', NOTNULL => 1, + REFERENCES => {TABLE => 'oauth2_client', + COLUMN => 'id', + UPDATE => 'CASCADE', + DELETE => 'CASCADE'}}, + user_id => {TYPE => 'INT3', NOTNULL => 1, + REFERENCES => {TABLE => 'profiles', + COLUMN => 'userid', + UPDATE => 'CASCADE', + DELETE => 'CASCADE'}}, + expires => {TYPE => 'DATETIME', NOTNULL => 1}, + ] + }, + + oauth2_access_token_scope => { + FIELDS => [ + access_token => {TYPE => 'varchar(255)', NOTNULL => 1, + REFERENCES => {TABLE => 'oauth2_access_token', + COLUMN => 'access_token', + UPDATE => 'CASCADE', + DELETE => 'CASCADE'}}, + scope_id => {TYPE => 'INT3', NOTNULL => 1, + REFERENCES => {TABLE => 'oauth2_scope', + COLUMN => 'id', + UPDATE => 'CASCADE', + DELETE => 'CASCADE'}}, + allowed => {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'FALSE'}, + ], + INDEXES => [ + oauth2_access_token_scope_idx => {FIELDS => ['access_token', 'scope_id'], + TYPE => 'UNIQUE'} + ] + }, + + oauth2_refresh_token => { + FIELDS => [ + refresh_token => {TYPE => 'varchar(255)', NOTNULL => 1, PRIMARYKEY => 1}, + access_token => {TYPE => 'varchar(255)', NOTNULL => 1, + REFERENCES => {TABLE => 'oauth2_access_token', + COLUMN => 'access_token', + UPDATE => 'CASCADE', + DELETE => 'CASCADE'}}, + client_id => {TYPE => 'varchar(255)', NOTNULL => 1, + REFERENCES => {TABLE => 'oauth2_client', + COLUMN => 'id', + UPDATE => 'CASCADE', + DELETE => 'CASCADE'}}, + user_id => {TYPE => 'INT3', NOTNULL => 1, + REFERENCES => {TABLE => 'profiles', + COLUMN => 'userid', + UPDATE => 'CASCADE', + DELETE => 'CASCADE'}} + ] + }, + + oauth2_refresh_token_scope => { + FIELDS => [ + refresh_token => {TYPE => 'varchar(255)', NOTNULL => 1, + REFERENCES => {TABLE => 'oauth2_refresh_token', + COLUMN => 'refresh_token', + UPDATE => 'CASCADE', + DELETE => 'CASCADE'}}, + scope_id => {TYPE => 'INT3', NOTNULL => 1, + REFERENCES => {TABLE => 'oauth2_scope', + COLUMN => 'id', + UPDATE => 'CASCADE', + DELETE => 'CASCADE'}}, + allowed => {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'FALSE'}, + ], + INDEXES => [ + oauth2_refresh_token_scope_idx => {FIELDS => ['refresh_token', 'scope_id'], + TYPE => 'UNIQUE'} + ] + } }; # Foreign Keys are added in Bugzilla::DB::bz_add_field_tables diff --git a/Bugzilla/Install/DB.pm b/Bugzilla/Install/DB.pm index 2e5ae5ff2..50c5d97cd 100644 --- a/Bugzilla/Install/DB.pm +++ b/Bugzilla/Install/DB.pm @@ -775,6 +775,9 @@ sub update_table_definitions { {TYPE => 'FULLTEXT', FIELDS => ['realname']}); _migrate_nicknames(); + # Bug 1354589 - dkl@mozilla.com + _populate_oauth2_scopes(); + ################################################################ # New --TABLE-- changes should go *** A B O V E *** this point # ################################################################ @@ -3935,6 +3938,17 @@ sub _migrate_preference_categories { } } +sub _populate_oauth2_scopes { + my $dbh = Bugzilla->dbh; + + # if there are no scopes, then we're creating a database from scratch + my ($scope_count) + = $dbh->selectrow_array('SELECT COUNT(*) FROM oauth2_scope'); + return if $scope_count; + $dbh->do( + "INSERT INTO oauth2_scope (id, description) VALUES (1, 'user:read')"); +} + 1; __END__