diff scripts/migration/migrate_permissions.sql @ 10:a50cf11e5178

Rewrite LGDataverse completely upgrading to dataverse4.0
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Tue, 08 Sep 2015 17:00:21 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/migration/migrate_permissions.sql	Tue Sep 08 17:00:21 2015 +0200
@@ -0,0 +1,122 @@
+-- reference queries for duplicate roles in vdc_role
+-- (created when user accounts where merged)
+-- NOTE: may need to run multiple times
+
+/*
+select * from _dvn3_vdcrole
+where vdcuser_id || '|' || vdc_id || '|' || role_id in 
+(
+select vdcuser_id || '|' || vdc_id || '|' || role_id from _dvn3_vdcrole
+group by vdcuser_id, vdc_id, role_id
+having count(*) > 1
+)
+order by vdcuser_id, vdc_id, role_id
+
+
+delete from _dvn3_vdcrole where id in 
+( 
+select max(id) from _dvn3_vdcrole
+group by vdcuser_id, vdc_id, role_id
+having count(*) >1
+order by max(id)
+)
+*/
+
+-----------------------
+-- dataverses role assignments
+-----------------------
+
+-- admin (from the vdcnetwork creator)
+insert into roleassignment (	assigneeidentifier, definitionpoint_id, role_id)
+	select 			'@'|| useridentifier, vdcn.id, dr.id
+	from _dvn3_vdcnetwork vdcn, authenticateduser, dataverserole dr
+	where vdcn.creator_id = authenticateduser.id
+	and dr.alias='admin';
+
+-- admin
+insert into roleassignment (	assigneeidentifier, definitionpoint_id, role_id)
+	select 			'@'|| useridentifier, vdc_id, dr.id
+	from _dvn3_vdcrole, authenticateduser, dataverserole dr
+	where _dvn3_vdcrole.vdcuser_id = authenticateduser.id
+	and role_id=3 and dr.alias='admin';
+-- curator
+insert into roleassignment (	assigneeidentifier, definitionpoint_id, role_id)
+	select 			'@'|| useridentifier, vdc_id, dr.id
+	from _dvn3_vdcrole, authenticateduser, dataverserole dr
+	where _dvn3_vdcrole.vdcuser_id = authenticateduser.id
+	and role_id=2 and dr.alias='curator';
+-- contributor
+insert into roleassignment (	assigneeidentifier, definitionpoint_id, role_id)
+	select 			'@'|| useridentifier, vdc_id, dr.id
+	from _dvn3_vdcrole, authenticateduser, dataverserole dr
+	where _dvn3_vdcrole.vdcuser_id = authenticateduser.id
+	and role_id=1 and dr.alias='dsContributor';
+-- member
+insert into roleassignment (	assigneeidentifier, definitionpoint_id, role_id)
+	select 			'@'|| useridentifier, vdc_id, dr.id
+	from _dvn3_vdcrole, authenticateduser, dataverserole dr
+	where _dvn3_vdcrole.vdcuser_id = authenticateduser.id
+	and role_id=4 and dr.alias='member';
+
+-- groups (as members)
+insert into roleassignment (	assigneeidentifier, definitionpoint_id, role_id)
+	select 			'&'|| groupalias, vdcs_id, dr.id
+	from _dvn3_vdc_usergroup, explicitgroup, dataverserole dr
+	where _dvn3_vdc_usergroup.allowedgroups_id = explicitgroup.id
+	and dr.alias='member';
+
+-----------------------
+-- dataset role assignments
+-----------------------
+
+-- contributor (from the study creator)
+insert into roleassignment (	assigneeidentifier, definitionpoint_id, role_id)
+	select 			'@'|| useridentifier, ds.id, dr.id
+	from _dvn3_study s, authenticateduser, dataverserole dr, dataset ds
+	where s.creator_id = authenticateduser.id
+        and ds.authority = s.authority
+        and ds.protocol = s.protocol
+        and ds.identifier = s.studyid 
+	and dr.alias='editor';
+
+-- member
+insert into roleassignment (	assigneeidentifier, definitionpoint_id, role_id)
+	select 			'@'|| useridentifier, ds.id, dr.id
+	from _dvn3_study_vdcuser, _dvn3_study s, authenticateduser, dataverserole dr, dataset ds
+	where _dvn3_study_vdcuser.allowedusers_id = authenticateduser.id
+        and _dvn3_study_vdcuser.studies_id = s.id
+        and ds.authority = s.authority
+        and ds.protocol = s.protocol
+        and ds.identifier = s.studyid 
+	and dr.alias='member';
+
+-- groups (as members)
+insert into roleassignment (	assigneeidentifier, definitionpoint_id, role_id)
+	select 			'&'|| groupalias, ds.id, dr.id
+	from _dvn3_study_usergroup, _dvn3_study s, explicitgroup, dataverserole dr, dataset ds
+	where _dvn3_study_usergroup.allowedgroups_id = explicitgroup.id
+        and _dvn3_study_usergroup.studies_id = s.id
+        and ds.authority = s.authority
+        and ds.protocol = s.protocol
+        and ds.identifier = s.studyid 
+	and dr.alias='member';
+
+-----------------------
+-- file role assignments
+-----------------------
+
+insert into roleassignment (	assigneeidentifier, definitionpoint_id, role_id)
+	select 			'@'|| useridentifier, studyfiles_id, dr.id
+	from _dvn3_studyfile_vdcuser, authenticateduser, dataverserole dr
+	where _dvn3_studyfile_vdcuser.allowedusers_id = authenticateduser.id
+	and _dvn3_studyfile_vdcuser.studyfiles_id in (select id from datafile)
+	and dr.alias='fileDownloader';
+
+insert into roleassignment (	assigneeidentifier, definitionpoint_id, role_id)
+	select 			'&'|| groupalias, studyfiles_id, dr.id
+	from _dvn3_studyfile_usergroup, explicitgroup, dataverserole dr
+	where _dvn3_studyfile_usergroup.allowedgroups_id = explicitgroup.id
+	and _dvn3_studyfile_usergroup.studyfiles_id in (select id from datafile)
+	and dr.alias='fileDownloader';
+
+