also ich hab mir da mals sowas gebastelt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
use strict;
use warnings;
use Tk;
use Tk::DialogBox;
use Tk::LabEntry;
use prj::cfile;
package prj::login;
sub new
{
my $this = shift;
my $thisref = ref($this) || $this;
my $self;
$self->{'parent'} = $_[0];
$self->{'username'} = "";
$self->{'password'} = "";
# create Login-Dialog
$self->{'window'} = $self->{'parent'}->DialogBox(-title =>'Login', -default_button => 'OK', -buttons => ['OK', 'Abbrechen'] );
$self->{window}->add('LabEntry', -textvariable => \$self->{'username'}, -width => 20,
label => 'Benutzer')->pack(-side =>"top");
$self->{window}->add('LabEntry', -textvariable => \$self->{'password'}, -width => 20,
label => 'Passwort', -show =>'*')->pack(-side =>"top");
bless ($self, $thisref);
return $self;
}
sub getpass
{
my $self = shift;
my @heads = ('id', 'name', 'pass', 'grants', 'local', 'server');
my $userdb = prj::cfile->new(@heads, 'dat\\users.dat');
my $result = $self->{'window'}->Show();
$self->{'window'}->bind("<Return>", sub{$result = 'OK';});
$self->{'window'}->bind("<Escape>", sub{print "abbruch!\n"; $result = 'Abbrechen';});
if ('OK' eq $result)
{
my %find = ( 'name' => $self->{'username'}, 'pass' => $self->{'password'});
my @datarray = @{$userdb->get(\%find)};
my %data = %{$datarray[0]};
if (@datarray == 1)
{
return \%data;
}
}
return 0;
}
return 1;
die cfile ist eine Klasse, die mir den Datenzugriff erleichtert. Die kann ich leider nicht so ohne weiteres rausgeben :( Hier weiter zu arbeiten sollte aber kein problem sein