=head1 current_user

Diese Funktion wird verwendet, um die Personen-ID des aktuellen
Benutzers herauszufinden.

In Spezialfällen kann diese ID auch explizit gesetzt werden:

	$Db::current_user = get_person($OWNER);

=cut

use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Help qw(DoFn in_test qquote);
use Dbase::Globals qw(get_person);
use Cf qw($OWNER);

sub current_user() { # Personeneintrag des aktuellen Benutzers ausspucken
	return $Db::current_user if $Db::current_user;

	my $uname;
	for ( qw( REMOTE_USER USER LOGNAME ) ) {
		defined( $uname = $ENV{$_} ) and last;
	}
	my $unuid = getpwuid($<);

	return 1 if not $uname and not $unuid;
	$uname=$unuid unless $uname;
	die "Autorisierungsproblem. Sorry.\n" unless $uname eq $unuid || in_test() || exists $ENV{HTTP_HOST};

	$Db::current_user = DoFn("select person.id from person,kunde where person.user = ${\qquote $uname} and kunde.id = person.kunde and ( kunde.ende is NULL or kunde.ende > UNIX_TIMESTAMP(NOW()) ) ")
			|| get_person($OWNER) || 1;
	## '1' sollte der Mastereintrag sein...

	$Db::current_user;
}

1;
