#!/usr/bin/perl -w
# $Id$
# This script (sophomorix-usermod) is maintained by Rüdiger Beck
# It is Free Software (License GPLv3)
# If you find errors, contact the author
# jeffbeck@web.de  or  jeffbeck@gmx.de


# Bibliotheken
use strict;
use Getopt::Long;
Getopt::Long::Configure ("bundling");
use Sophomorix::SophomorixConfig;
use Sophomorix::SophomorixBase;
use Sophomorix::SophomorixAPI;
use DBI;
use Net::LDAP;

use Sophomorix::SophomorixPgLdap qw(show_modulename
                                    check_connections
                                    update_user_db_entry
                                    adduser_to_project
                                    deleteuser_from_project
                                   );


my @arguments = @ARGV;


# ===========================================================================
# Variablen
# ==========================================================================

my $help=0;
my $login="";
my $skiplock=0;

my $enable="";
my $disable="";

my $adduser="";
my $deleteuser="";
my $group="";

$Conf::log_level=1;


# ===========================================================================
# Optionen verarbeiten
# ==========================================================================


# Parsen der Optionen
my $testopt=GetOptions(
           "help|h" => \$help,
           "enable|J=s" => \$enable,
           "disable|I=s" => \$disable,
           "adduser=s" => \$adduser,
           "deleteuser=s" => \$deleteuser,
           "group=s" => \$group,
           "skiplock" => \$skiplock,
          );

# Prüfen, ob Optionen erkannt wurden, sonst Abbruch
&check_options($testopt);
&check_connections();

# --help
if ($help==1) {
   # Scriptname ermitteln
   my @list = split(/\//,$0);
   my $scriptname = pop @list;
   # Befehlsbeschreibung
   print('
sophomorix-usermod modifies a user in the sophomorix database (and ldap)
(see also sophomorix-passwd)

Options
  -h  / --help
  --skiplock

For samba users:
  -I user  (disable a user in samba)
  -J user  (enable a user in samba)

Adding a user to a group:
  --adduser <login> --group <group> 

Deleting a user from a group:
  --deleteuser <login> --group <group> 

Please see the sophomorix-usermod(8) man pages for full documentation
');
   print "\n";
   exit;
}


&log_script_start(@arguments);


# --enable
if ($enable ne ""){
     print "Enabling user $enable in samba\n";
     &update_user_db_entry($enable,"Enable=Yes");
}




# --disable
if ($disable ne ""){
     print "Disabling user $disable in samba\n";
     &update_user_db_entry($disable,"Disable=Yes");
}




## --adduser --group
if ($adduser ne "" and $group ne ""){
    print "Adding user $adduser to secondary group $group\n";
    # 3rd argument: 0 -> no project member option
    # 4th argument: 0 -> no subclasses in ldap
    &adduser_to_project($adduser,$group,0,0);
}




# --deleteuser --group
if ($deleteuser ne "" and $group ne ""){
    print "Deleting user $deleteuser from secondary group $group\n";
    # 4th argument 1: do not add p_ prefix (like in an adminclass)
    &deleteuser_from_project($deleteuser,$group,0,1); 
}




&log_script_end(@arguments);
