[Bio] / WebApplication / scripts / grant_user_genome_rights_to_group.pl Repository:
ViewVC logotype

View of /WebApplication/scripts/grant_user_genome_rights_to_group.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.7 - (download) (as text) (annotate)
Wed Jul 8 14:42:01 2009 UTC (10 years, 6 months ago) by paczian
Branch: MAIN
CVS Tags: mgrast_dev_08112011, mgrast_dev_08022011, rast_rel_2014_0912, mgrast_dev_03052011, mobedac_release_05302012, mgrast_dev_05262011, mgrast_dev_04082011, rast_rel_2010_0928, mgrast_version_3_2, mgrast_dev_12152011, mgrast_dev_06072011, rast_rel_2009_0925, rast_rel_2010_0526, rast_rel_2014_0729, mgrast_dev_02212011, rast_rel_2010_1206, mgrast_release_3_0, mgrast_dev_03252011, rast_rel_2010_0118, rast_rel_2011_0119, mgrast_release_3_0_4, mgrast_release_3_0_2, mgrast_release_3_0_3, mgrast_release_3_0_1, mgrast_dev_03312011, mgrast_release_3_1_2, mgrast_release_3_1_1, mgrast_release_3_1_0, mgrast_dev_04132011, mgrast_dev_04012011, rast_rel_2009_07_09, rast_rel_2010_0827, myrast_33, rast_rel_2011_0928, mgrast_dev_04052011, mgrast_dev_02222011, mgrast_dev_10262011, HEAD
Changes since 1.6: +1 -1 lines
fixed usage

#!/usr/bin/env perl

use strict;
use warnings;

use WebApplicationDBHandle;

use FIG;

use Getopt::Long;

sub usage {
  print "grant_user_genome_rights_to_group.pl >>> grants the rights to access genomes a user has to a group\n";
  print "grant_user_genome_rights_to_group.pl -login <login> -group <group name> [ -edit <edit> ]\n";
}

# read in parameters
my $group_name = '';
my $login = '';
my $edit = '';
my $ingroup = '';

GetOptions ( 'group=s' => \$group_name,
	     'login=s' => \$login,
	     'edit=s' => \$edit,
	     'ingroup=s' => \$ingroup,
	   );


unless ($group_name and ($login or $ingroup)) {
  &usage;
  exit 0;
}

# initialize db-master
my ($dbmaster, $error) = WebApplicationDBHandle->new();

# check if we got a dbmaster
if ($error) {
  print $error."\n";
  exit 0;
}

my $userscope;
if ($ingroup) {
  $userscope = $dbmaster->Scope->init( { 'name' => $ingroup,
					 'application' => undef } );
  unless (ref($userscope)) {
    print "Group $ingroup not found in database, aborting.\n";
    exit 0;
  }
} else {

  # get user
  my $user = $dbmaster->User->init( { 'login' => $login } );
  unless (ref $user) {
    print "User $login not found in database, aborting.\n";
    exit 0;
  }
  $userscope = $user->get_user_scope();
}

# get group
my $group = $dbmaster->Scope->init( { 'name' => $group_name,
				      'application' => undef } );
unless (ref($group)) {
  print "Group $group_name not found in database, aborting.\n";
  exit 0;
}

# get view genome rights of that user
my $rights = $dbmaster->Rights->get_objects( { name => 'view',
					       data_type => 'genome',
					       scope => $userscope } );

unless (scalar(@$rights)) {
  print "No genome rights found for user, aborting.\n";
  exit 0;
}

foreach my $right (@$rights) {
  # check if the group already has the right
  my $existing = $dbmaster->Rights->get_objects( { name => 'view',
						   data_type => 'genome',
						   data_id => $right->data_id(),
						   scope => $group,
						   granted => 1 } );

  if (scalar(@$existing)) {
    print "Right for ".$right->data_id()." already exists, skipping.\n";
  } else {
    
    my $created = $dbmaster->Rights->create( { name => 'view',
					       data_type => 'genome',
					       data_id => $right->data_id(),
					       scope => $group,
					       granted => 1,
					       delegated => 1 } );
    if ($created) {
      print "right for ".$group->name()." to genome ".$right->data_id()." created.\n";
    } else {
      print "creation of right for ".$group->name()." to genome ".$right->data_id()." failed.\n";
    }
  }
}

if ($edit) {
  $rights = $dbmaster->Rights->get_objects( { name => 'edit',
					      data_type => 'genome',
					      scope => $userscope } );
  foreach my $right (@$rights) {
    # check if the group already has the right
    my $existing = $dbmaster->Rights->get_objects( { name => 'edit',
						     data_type => 'genome',
						     data_id => $right->data_id(),
						     scope => $group,
						     granted => 1 } );
    
    if (scalar(@$existing)) {
      print "Right for ".$right->data_id()." already exists, skipping.\n";
    } else {
      
      my $created = $dbmaster->Rights->create( { name => 'edit',
						 data_type => 'genome',
						 data_id => $right->data_id(),
						 scope => $group,
						 granted => 1,
						 delegated => 1 } );
      if ($created) {
	print "edit right for ".$group->name()." to genome ".$right->data_id()." created.\n";
      } else {
	print "creation of right for ".$group->name()." to genome ".$right->data_id()." failed.\n";
      }
    }
  }
}

print "done.\n";

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3