=head3 check_perm

C<check_perm( Berechtigung ) [Warnflag] >

Test, ob der aktuelle Benutzer ein bestimmtes Flag im Benutzereintrag
gesetzt hat.

Wenn I<warnflag> gesetzt ist, wird nicht gemeckert.

=cut

use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Globals qw(find_descr bignum);
use Dbase::Help qw(DoFn);
use Loader qw(current_user);
use Fehler qw(fehler problem);

sub check_perm($;$) {
	my($perms,$warn) = @_;
	my $px = DoFn("select pwuse from person where id = ".current_user());

	foreach my $perm(split(/,/,$perms)) {
		my $p = find_descr("pwdomain",$perm);
		unless($p) {
	    	fehler "Berechtigung '$perm' unbekannt.\n";
	    	return undef;
		}
		return 1 if $px & (bignum(1)<<$p);
	}
	problem "Sie dürfen Funktionen für '$perms' nicht nutzen.\n" unless $warn;
	0;
}
1;
