Changeset 11942


Ignore:
Timestamp:
2006-06-20T10:53:18+12:00 (18 years ago)
Author:
mdewsnip
Message:

ZipCollectionConfigurations now includes only those collections that the user has access to.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/gli/src/org/greenstone/gatherer/remote/ZipCollectionConfigurations.java

    r10726 r11942  
    1212    static public void main(String[] args)
    1313    {
    14     if (args.length != 2) {
    15         System.err.println("Usage: ZipCollectionConfigurations <zip-file> <collect-directory-path>");
     14    if (args.length != 4) {
     15        System.err.println("Usage: ZipCollectionConfigurations <zip-file> <collect-directory-path> <user-name> <user-groups>");
    1616        return;
    1717    }
     
    1919    String zip_file_path = args[0];
    2020    String collect_directory_path = args[1];
     21    String user_name = args[2];
     22    String user_groups = args[3];
    2123
    2224    if (!collect_directory_path.endsWith(File.separator)) {
     
    3032        ZipTools.ZipFilter collection_metadata_zip_filter = new CollectionMetadataZipFilter();
    3133
    32         // Add the etc and metadata directories from each of the collections
     34        // Add the etc and metadata directories from each of the collections the user has access to
    3335        File[] collection_directories = collect_directory.listFiles();
    3436        for (int i = 0; i < collection_directories.length; i++) {
    3537        if (collection_directories[i].isDirectory()) {
    36             String etc_relative_path = collection_directories[i].getName() + File.separator + "etc";
    37             ZipTools.addFileToZip(zos, collect_directory_path, etc_relative_path, collection_etc_zip_filter);
    38 
    39             String metadata_relative_path = collection_directories[i].getName() + File.separator + "metadata";
    40             ZipTools.addFileToZip(zos, collect_directory_path, metadata_relative_path, collection_metadata_zip_filter);
     38            String collection_name = collection_directories[i].getName();
     39            if (checkAccess(collection_name, user_name, user_groups)) {
     40            String etc_relative_path = collection_directories[i].getName() + File.separator + "etc";
     41            ZipTools.addFileToZip(zos, collect_directory_path, etc_relative_path, collection_etc_zip_filter);
     42            String metadata_relative_path = collection_directories[i].getName() + File.separator + "metadata";
     43            ZipTools.addFileToZip(zos, collect_directory_path, metadata_relative_path, collection_metadata_zip_filter);
     44            }
    4145        }
    4246        }
    4347
     48        zos.putNextEntry(new ZipEntry(".gli"));
    4449        zos.close();
    4550    }
     
    4752        exception.printStackTrace();
    4853    }
     54    }
     55
     56
     57    static private boolean checkAccess(String collection_name, String user_name, String user_groups)
     58    {
     59    String[] user_groups_array = user_groups.split(",");
     60    for (int i = 0; i < user_groups_array.length; i++) {
     61        if (user_groups_array[i].equals("all-collections-editor")) {
     62        return true;
     63        }
     64        if (user_groups_array[i].equals("personal-collections-editor") && collection_name.startsWith(user_name + "-")) {
     65        return true;
     66        }
     67        if (user_groups_array[i].equals(collection_name + "-collection-editor")) {
     68        return true;
     69        }
     70    }
     71
     72    return false;
    4973    }
    5074
  • trunk/gsdl/cgi-bin/gliserver.pl

    r11941 r11942  
    409409
    410410    # Users can be in any group to perform this action
    411     &authenticate_user($gsdl_cgi, $username, "");
     411    my $user_groups = &authenticate_user($gsdl_cgi, $username, "");
    412412
    413413    my $gsdlhome = $ENV{'GSDLHOME'};
     
    419419    my $java_classpath = &util::filename_cat($gsdlhome, "bin", "java", "GLIServer.jar");
    420420    my $zip_file_path = &util::filename_cat($collect_directory, $username . "-" . "collection-configurations.zip");
    421     my $java_args = "\"$zip_file_path\" \"$collect_directory\"";
     421    my $java_args = "\"$zip_file_path\" \"$collect_directory\" \"$username\" \"$user_groups\"";
    422422    my $java_command = "$java -classpath \"$java_classpath\" org.greenstone.gatherer.remote.ZipCollectionConfigurations $java_args";
    423423
Note: See TracChangeset for help on using the changeset viewer.