+#
+# читает файлы прав доступа в дереве форума, и возвращает
+# статус текущего пользователя (undef - аноним, banned, normal,
+# moderator или admin
+
+sub getrights {
+ my ($cgi,$forum) = @_;
+ if (!$forum->{authenticated}) {
+ return undef;
+ }
+ my $user = $forum->{authenticated}{user};
+ my $dir = $ENV{'PATH_TRANSLATED'};
+ $dir =~s/\/[^\/]+$// if (!-d $dir);
+ my $f;
+ my $user_status = "normal";
+ LEVEL:
+ while (length($dir)) {
+ if (-f "$dir/perms.txt") {
+ open $f,"<","$dir/perms.txt";
+ my $status = undef;
+ while (<$f>) {
+ if (/^\[\s*(admins|moderators|banned)\s*\]/) {
+ $status = $1;
+ } else {
+ chomp;
+ if ($user eq $_ && defined $status) {
+ if ($status eq "banned") {
+ return $status;
+ }
+ if ($status eq "admins" ) {
+ return "admin";
+ }
+ $user_status = "moderator";
+ }
+ }
+ }
+ close $f;
+ last LEVEL if -f "$dir/.forum";
+ # Strip last path component.
+ $dir =~s/\/[^\/]+$//
+ }
+ }
+ return $user_status;
+
+}
+
+