#!/usr/bin/perl -X

use CGI qw(:standard escapeHTML -no_xhtml);
use CGI::Carp qw(fatalsToBrowser);
use locale;
use strict;

if ( !$ARGV[0] or !$ARGV[1] )
{
	exit print "usage:\nsp_add_admin.pl login password [--silent]\n";
}

#   VirtualHost
unless ( -e './sp.conf' )
{
	chdir '/var/www/cgi-bin/sp/';
}

require "common.pl";
require "misc.pl";
require "reg.pl";

#  
our (%gconf, $gdsn, $gdb);
our ($gdate,$ggid);

OnStart();                 #    

my $log = $ARGV[0];
my $pas = $ARGV[1];
$ARGV[2] ||='';
my $silent = $ARGV[2] eq '--silent';

my $name = ($log eq 'root') ? '' : '';
my $gid  = ($log eq 'root') ? '0'            : '1';

my $tmp_uid;

if ( $tmp_uid = sqlff( qq[select uid from sp_users where LOG = '$log'] ) )
{
	#  
	print "User '$log' (uid:$tmp_uid) already exists.\n";

	sqlb(
		"update SP_USERS
		set PAS = ?
		where UID = $tmp_uid",
		$pas
	);

	create_dc_user($tmp_uid);

	print "SP password changed.\n";

	exit;
}

my $uid = sqlff ("select next_value from get_next_value('HUMAN')");
sql (qq[
INSERT INTO HUMAN (HUMAN_ID,CLASS,FIRST_NAME,MIDDLE_NAME,LAST_NAME,BIRTH_DAY,BIRTH_PLACE,SEX,SOCIAL_STATUS,NOTE) VALUES
($uid,10,' ',' ','$name','3-NOV-1991 00:00:00',' ',1,1,NULL);
]);

sql (qq[INSERT INTO SP_USERS (UID,GID,LOG,PAS) VALUES ($uid, $gid, '$log', '$pas')]);
sql (qq[INSERT INTO SP_USERS_ACL (UID, GID) VALUES ($uid, 6)]);

unless ( $silent )
{
	print "ok\n";
	print join (':', ($uid,$log,$pas) );
	print "\n";
}
