X-Git-Url: https://git.sesse.net/?p=itkacl;a=blobdiff_plain;f=itkacl-web-1.0%2Fweb%2Fview.pl;fp=itkacl-web-1.0%2Fweb%2Fview.pl;h=a79320c98835fc67edd99d63e3868d8411f1b63f;hp=0000000000000000000000000000000000000000;hb=e7130e30ca2a76082de68a72fb2a52b4510f7bf1;hpb=b9014762b8051b457c68d8de11a08d64401026fa
diff --git a/itkacl-web-1.0/web/view.pl b/itkacl-web-1.0/web/view.pl
new file mode 100755
index 0000000..a79320c
--- /dev/null
+++ b/itkacl-web-1.0/web/view.pl
@@ -0,0 +1,265 @@
+#! /usr/bin/perl -T
+use strict;
+use warnings;
+use HTML::Entities;
+use utf8;
+
+use lib '../include';
+use itkaclcommon;
+
+itkaclcommon::print_header();
+my $entry = $itkaclcommon::cgi->param('entry');
+itkaclcommon::print_tree(0, $entry);
+
+my $ref = $itkaclcommon::dbh->selectrow_hashref('SELECT * FROM objects WHERE id=?', undef, $entry);
+
+print "\n";
+print "\n";
+print "
$ref->{'description'}
\n";
+
+# Follow the tree up to the root to find the full path
+my $path = "/" . $ref->{'name'};
+my @ids = ();
+while (defined($ref->{'parent'})) {
+ $ref = $itkaclcommon::dbh->selectrow_hashref('SELECT * FROM objects WHERE id=?', undef, $ref->{'parent'});
+ $path = "/" . $ref->{'name'} . $path;
+ push @ids, $ref->{'id'};
+}
+
+print "$path
\n";
+
+#
+# Now, fetch all ACL entries to find inherited rights; since ACLs are
+# applied starting from the root, we traverse the tree from the root as
+# well.
+#
+
+my $num_inherited = 0;
+my $curpath = "";
+for my $id (reverse @ids) {
+ $ref = $itkaclcommon::dbh->selectrow_hashref('SELECT * FROM objects WHERE id=?', undef, $id);
+ $curpath .= "/" . $ref->{'name'};
+
+ my $aes = $itkaclcommon::dbh->selectall_arrayref('SELECT entity_type,entity,allow FROM aclentries WHERE object=? ORDER BY entity_type ASC, allow DESC',
+ undef, $id);
+
+ for my $ae (@{$aes}) {
+ if ($num_inherited == 0) {
+ # This is the first entry, we'll have to make
+ # the table borders and such
+ print <<"EOF";
+Arvede rettigheter
+
+
+
+ # |
+ Till. |
+ Type |
+ Hvem |
+ Arvet fra |
+
+EOF
+ }
+
+ my ($entity_type, $entity, $allow) = @{$ae};
+ my $et_text;
+ if ($entity_type eq 'group') {
+ $et_text = 'Gruppe';
+ } else {
+ $et_text = 'Bruker';
+ }
+ my $e_text = HTML::Entities::encode_entities($entity);
+
+ ++$num_inherited;
+ print <<"EOF";
+
+ $num_inherited |
+ |
+ $et_text |
+ $e_text |
+ $curpath |
+
+EOF
+ }
+}
+
+if ($num_inherited != 0) {
+ print "
\n";
+}
+
+#
+# Same, for non-inherited rights. Yes, it's a bit of code duplication,
+# but it really won't be that much cleaner implementing it as a
+# function, unfortunately.
+#
+
+print "Rettigheter
\n";
+
+my $num_rights = 0;
+$ref = $itkaclcommon::dbh->selectrow_hashref('SELECT * FROM objects WHERE id=?', undef, $entry);
+my $aes = $itkaclcommon::dbh->selectall_arrayref('SELECT entity_type,entity,allow,comment FROM aclentries WHERE object=? ORDER BY entity_type ASC, allow DESC',
+ undef, $entry);
+
+for my $ae (@{$aes}) {
+ if ($num_rights == 0) {
+ # This is the first entry, we'll have to make
+ # the table borders and such
+ print <<"EOF";
+
+
+
+ # |
+ Till. |
+ Type |
+ Hvem |
+ Slett |
+ Kommentar |
+
+EOF
+ }
+
+ my ($entity_type, $entity, $allow, $comment) = @{$ae};
+ my $et_text;
+ if ($entity_type eq 'group') {
+ $et_text = 'Gruppe';
+ } else {
+ $et_text = 'Bruker';
+ }
+ my $e_text = HTML::Entities::encode_entities($entity);
+ my $c_text = HTML::Entities::encode_entities($comment // '');
+
+ ++$num_rights;
+ print <<"EOF";
+
+ $num_rights |
+ |
+ $et_text |
+ $e_text |
+
+
+
+
+ |
+ $c_text |
+
+EOF
+}
+
+if ($num_rights != 0) {
+ print "
\n";
+} else {
+ print "Ingen rettigheter er satt ennå for dette objektet.
\n";
+}
+
+#
+# I'm a bit unsure if we want to have this all in one page, but OK, here
+# goes...
+#
+print <<"EOF";
+
+Legg til nye rettigheter
+
+Du kan legge til nye rettigheter på dette objektet. Merk at verdiene
+ dine ikke vil sjekkes for gyldighet (du kan mao. fint gi tilganger til
+ en ikke-eksisterende bruker eller gruppe, men det kan gi uforutsigbare
+ resultater ved ACL-sjekking seinere).
+
+Den spesielle gruppen "<everyone>" inneholder alle brukere.
+
+
+
+Legg til nye tilgangsområder
+
+Du kan legge til nye tilgangsområder under denne noden. Merk at du
+ er begrenset til store og små bokstaver (kun små anbefales, områder
+ er case-sensitive) samt tall og bindestrek.
+
+
+
+Slett dette området
+
+EOF
+
+$ref = $itkaclcommon::dbh->selectrow_hashref('SELECT COUNT(*) AS num_aclentries FROM aclentries WHERE object=?', undef, $entry);
+if ($ref->{'num_aclentries'} > 0) {
+ print <<"EOF";
+Du kan ikke slette dette området ettersom det har tilordnet tilganger. Dersom du ønsker å
+ slette det må du først slette alle tilganger og eventuelle underområder.
+EOF
+} else {
+ $ref = $itkaclcommon::dbh->selectrow_hashref('SELECT COUNT(*) AS num_children FROM objects WHERE parent=?', undef, $entry);
+ if ($ref->{'num_children'} > 0) {
+ print <<"EOF";
+Du kan ikke slette dette området ettersom det har underområder. Dersom du ønsker å slette
+ det må du først slette alle underområdene.
+EOF
+ } else {
+ print <<"EOF";
+Dersom du ønsker, kan du slette dette området. All tilgangskontroll mot det i fremtiden vil
+ feile, så sjekk grundig før du sletter det at det ikke fortsatt er i bruk.
+
+
+EOF
+ }
+}
+
+itkaclcommon::print_footer();