#!/usr/bin/perl
# $Id: stock_user_group.pl,v 3.2 2004/01/10 02:49:58 lachoy Exp $
# stock_user_group.pl
#
# Create sample users, groups and relationships using the SQL
# definitions and objects found in SPOPS/eg
use strict;
use Data::Dumper qw( Dumper );
use Log::Log4perl;
Log::Log4perl::init( 'log4perl.conf' );
require My::Security;
require My::User;
my @USER_FIELD = qw( email last_name first_name password login_name );
my @USER_DATA = (
[ 'superuser@myco.com', 'user', 'super', 'password', 'superuser' ],
( map { [ "$_\@myco.com", "$_", 'User', "password$_", "User$_" ] } qw( A B ) ),
( map { [ "$_\@myco.com", "$_", 'Manager', "password$_", "Manager$_" ] } qw( C D ) ),
( map { [ "$_\@myco.com", "$_", 'Admin', "password$_", "Admin$_" ] } qw( E F ) ),
);
my @GROUP_FIELD = qw( group_id name notes );
my @GROUP_DATA = (
[ 1, 'admin', 'The all-powerful group' ],
[ 2, 'public', 'All users should belong' ],
[ 3, 'managers', 'PHB' ],
);
{
# Install users
foreach my $data ( @USER_DATA ) {
my $user = My::User->new;
for ( my $i = 0; $i < scalar @USER_FIELD; $i++ ) {
$user->{ $USER_FIELD[ $i ] } = $data->[ $i ];
}
$user->save({ skip_cache => 1 });
print "Created user with ID: ", $user->id, "\n";
}
# Next the groups
foreach my $data ( @GROUP_DATA ) {
my $group = My::Group->new;
for ( my $i = 0; $i < scalar @GROUP_FIELD; $i++ ) {
$group->{ $GROUP_FIELD[ $i ] } = $data->[ $i ];
}
$group->save({ skip_cache => 1 });
print "Created group with ID: ", $group->id, "\n";
}
# Finally the memberships
my $public_group = My::Group->fetch_by_name( 'public',
{ return_single => 1 } );
my $admin_group = My::Group->fetch_by_name( 'admin',
{ return_single => 1 } );
my $mgr_group = My::Group->fetch_by_name( 'managers',
{ return_single => 1 } );
my $user_list = My::User->fetch_group({ skip_security => 1 });
foreach my $user ( @{ $user_list } ) {
eval {
$user->group_add( $public_group->id );
if ( $user->{login_name} =~ /^Admin/ ) {
$user->group_add( $admin_group->id );
}
if ( $user->{login_name} =~ /^Manager/ ) {
$user->group_add( $mgr_group->id );
}
};
if ( $@ ) {
die "Error creating relationships:\n$@\n";
}
}
}