From 5701bbdb47154033ce68ebbede14e7ae40c7ad91 Mon Sep 17 00:00:00 2001 From: Sean Murthy Date: Sun, 10 Jun 2018 11:28:38 -0400 Subject: [PATCH 1/6] Add server role ClassDB_Team Create server role ClassDB_Team and grant the new role to ClassDB role --- src/server/core/initalizeServerCore.sql | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/server/core/initalizeServerCore.sql b/src/server/core/initalizeServerCore.sql index 3f96c1b..7220837 100644 --- a/src/server/core/initalizeServerCore.sql +++ b/src/server/core/initalizeServerCore.sql @@ -71,8 +71,10 @@ BEGIN PERFORM pg_temp.createGroupRole('classdb_student'); PERFORM pg_temp.createGroupRole('classdb_instructor'); PERFORM pg_temp.createGroupRole('classdb_dbmanager'); + PERFORM pg_temp.createGroupRole('classdb_team'); - GRANT ClassDB_Student, ClassDB_Instructor, ClassDB_DBManager TO ClassDB; + GRANT ClassDB_Student, ClassDB_Instructor, ClassDB_DBManager, ClassDB_Team + TO ClassDB; END $$; From 31d2e53a3ae617c1eb58f1f49c9eee9d388efa51 Mon Sep 17 00:00:00 2001 From: Sean Murthy Date: Sun, 10 Jun 2018 11:28:50 -0400 Subject: [PATCH 2/6] Drop server role ClassDB_Team --- src/server/removeAllFromServer.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/removeAllFromServer.sql b/src/server/removeAllFromServer.sql index cafcdf6..8995545 100644 --- a/src/server/removeAllFromServer.sql +++ b/src/server/removeAllFromServer.sql @@ -50,6 +50,7 @@ SET LOCAL client_min_messages TO WARNING; DROP ROLE IF EXISTS ClassDB_Instructor; DROP ROLE IF EXISTS ClassDB_DBManager; DROP ROLE IF EXISTS ClassDB_Student; +DROP ROLE IF EXISTS ClassDB_Team; DROP ROLE IF EXISTS ClassDB; RESET client_min_messages; From 2ce8bf1be689be2219a9957959633464619bea9d Mon Sep 17 00:00:00 2001 From: Sean Murthy Date: Sun, 10 Jun 2018 11:29:36 -0400 Subject: [PATCH 3/6] Check if server role ClassDB_Team exists --- src/db/core/initializeDBCore.sql | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/db/core/initializeDBCore.sql b/src/db/core/initializeDBCore.sql index c9cedd1..586ccf9 100644 --- a/src/db/core/initializeDBCore.sql +++ b/src/db/core/initializeDBCore.sql @@ -24,6 +24,9 @@ START TRANSACTION; +--Suppress NOTICE messages for this script: won't apply to functions created here +-- hides unimportant but possibly confusing msgs generated as the script executes +SET LOCAL client_min_messages TO WARNING; --Make sure the current user has sufficient privilege to run this script -- privilege required: superuser @@ -50,11 +53,11 @@ BEGIN SELECT COUNT(*) FROM pg_catalog.pg_roles WHERE rolname IN ('classdb', 'classdb_instructor', - 'classdb_dbmanager', 'classdb_student' + 'classdb_dbmanager', 'classdb_student', 'classdb_team' ) INTO classDBRoleCount; - IF classDBRoleCount <> 4 THEN + IF classDBRoleCount <> 5 THEN RAISE EXCEPTION 'Missing roles: one or more expected of the expected ClassDB roles ' 'are undefined'; From 01e8cc65e74840f33f6195c38ce3986af647fe93 Mon Sep 17 00:00:00 2001 From: Sean Murthy Date: Sun, 10 Jun 2018 11:30:03 -0400 Subject: [PATCH 4/6] Add role ClassDB_Team to list of ClassDB roles --- src/db/core/addHelpersCore.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/db/core/addHelpersCore.sql b/src/db/core/addHelpersCore.sql index 6e96c3f..dd7a761 100644 --- a/src/db/core/addHelpersCore.sql +++ b/src/db/core/addHelpersCore.sql @@ -155,7 +155,8 @@ CREATE OR REPLACE FUNCTION RETURNS BOOLEAN AS $$ SELECT ClassDB.foldPgID($1) - IN ('classdb_instructor', 'classdb_student', 'classdb_dbmanager'); + IN ('classdb_instructor', 'classdb_student', + 'classdb_dbmanager', 'classdb_team'); $$ LANGUAGE sql IMMUTABLE RETURNS NULL ON NULL INPUT; From b53bfb90abc5ef52b41fef5490e951c15bc2e23a Mon Sep 17 00:00:00 2001 From: Sean Murthy Date: Sun, 10 Jun 2018 11:41:15 -0400 Subject: [PATCH 5/6] Add role ClassDB_Team to list of ClassDB roles Accounted for function ClassDB.hasClassDBRole --- src/db/core/addHelpersCore.sql | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/db/core/addHelpersCore.sql b/src/db/core/addHelpersCore.sql index dd7a761..435dd1d 100644 --- a/src/db/core/addHelpersCore.sql +++ b/src/db/core/addHelpersCore.sql @@ -213,8 +213,7 @@ $$ SELECT * FROM pg_catalog.pg_roles WHERE pg_catalog.pg_has_role(ClassDB.foldPgID($1), oid, 'member') AND - rolname IN - ('classdb_instructor', 'classdb_student', 'classdb_dbmanager') + ClassDB.isClassDBRoleName(rolname::ClassDB.IDNameDomain) ); $$ LANGUAGE sql STABLE From c2a64c30ae4ce1dd911b69200dc1a40ab49add7c Mon Sep 17 00:00:00 2001 From: Sean Murthy Date: Wed, 13 Jun 2018 15:35:23 -0400 Subject: [PATCH 6/6] Add 'classdb_team' to a comment --- src/db/core/addHelpersCore.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/db/core/addHelpersCore.sql b/src/db/core/addHelpersCore.sql index 435dd1d..bfd19c6 100644 --- a/src/db/core/addHelpersCore.sql +++ b/src/db/core/addHelpersCore.sql @@ -149,7 +149,7 @@ ALTER FUNCTION ClassDB.getSchemaOwnerName(ClassDB.IDNameDomain) OWNER TO ClassDB --Define a function to test if a role name is a ClassDB role name -- tests if the name supplied is one of the following strings: --- 'classdb_student', 'classdb_instructor', 'classdb_manager' +-- 'classdb_student', 'classdb_instructor', 'classdb_manager', 'classdb_team' CREATE OR REPLACE FUNCTION ClassDB.isClassDBRoleName(roleName ClassDB.IDNameDomain) RETURNS BOOLEAN AS