view 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 source

-- 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';