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

+ + + + + + + + + +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"; + + + + + + + +EOF + } +} + +if ($num_inherited != 0) { + print "
#Till.TypeHvemArvet fra
$num_inherited$ae->[2]$et_text$e_text$curpath
\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"; + + + + + + + + + + +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"; + + + + + + + + +EOF +} + +if ($num_rights != 0) { + print "
#Till.TypeHvemSlettKommentar
$num_rights$ae->[2]$et_text$e_text + + Slett + + $c_text
\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.

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Tillatelse: + +
Type: + +
Bruker-/gruppenavn:
Kommentar:
+ +
+
+ +

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.

+ +
+ + + + + + + + + + + + + +
Sti: + $path/ +
Beskrivelse + +
+ +
+
+ +

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();