Revision 6ca9244c
Von Moritz Bunkus vor mehr als 11 Jahren hinzugefügt
SL/Controller/LoginScreen.pm | ||
---|---|---|
65 | 65 |
# if we get an error back, bale out |
66 | 66 |
my $result = User->new(login => $::myconfig{login})->login($::form); |
67 | 67 |
|
68 |
# Database update available? |
|
69 |
::end_of_request() if -2 == $result; |
|
70 |
|
|
71 | 68 |
# Auth DB needs update? If so log the user out forcefully. |
72 |
if (-3 == $result) {
|
|
69 |
if (User::LOGIN_AUTH_DBUPDATE_AVAILABLE() == $result) {
|
|
73 | 70 |
$::auth->destroy_session; |
74 | 71 |
return $self->render('login_screen/auth_db_needs_update'); |
75 | 72 |
} |
76 | 73 |
|
74 |
# Basic client tables available? If not tell the user to create them |
|
75 |
# and log the user out forcefully. |
|
76 |
if (User::LOGIN_BASIC_TABLES_MISSING() == $result) { |
|
77 |
$::auth->destroy_session; |
|
78 |
return $self->render('login_screen/basic_tables_missing'); |
|
79 |
} |
|
80 |
|
|
81 |
# Database update available? |
|
82 |
::end_of_request() if User::LOGIN_DBUPDATE_AVAILABLE() == $result; |
|
83 |
|
|
77 | 84 |
# Other login errors. |
78 |
if (0 > $result) {
|
|
85 |
if (User::LOGIN_OK() != $result) {
|
|
79 | 86 |
$::auth->punish_wrong_login; |
80 | 87 |
return $self->show_login_form(error => $error); |
81 | 88 |
} |
SL/User.pm | ||
---|---|---|
48 | 48 |
|
49 | 49 |
use strict; |
50 | 50 |
|
51 |
use constant LOGIN_OK => 0; |
|
52 |
use constant LOGIN_BASIC_TABLES_MISSING => -1; |
|
53 |
use constant LOGIN_DBUPDATE_AVAILABLE => -2; |
|
54 |
use constant LOGIN_AUTH_DBUPDATE_AVAILABLE => -3; |
|
55 |
use constant LOGIN_GENERAL_ERROR => -4; |
|
56 |
|
|
51 | 57 |
sub new { |
52 | 58 |
$main::lxdebug->enter_sub(); |
53 | 59 |
|
... | ... | |
96 | 102 |
sub login { |
97 | 103 |
my ($self, $form) = @_; |
98 | 104 |
|
99 |
return -3 if !$self->{login} || !$::auth->client;
|
|
105 |
return LOGIN_GENERAL_ERROR() if !$self->{login} || !$::auth->client;
|
|
100 | 106 |
|
101 | 107 |
my %myconfig = $main::auth->read_user(login => $self->{login}); |
102 | 108 |
|
109 |
# Auth DB upgrades available? |
|
110 |
my $dbupdater_auth = SL::DBUpgrade2->new(form => $form, auth => 1)->parse_dbupdate_controls; |
|
111 |
return LOGIN_AUTH_DBUPDATE_AVAILABLE() if $dbupdater_auth->unapplied_upgrade_scripts($::auth->dbconnect); |
|
112 |
|
|
103 | 113 |
# check if database is down |
104 | 114 |
my $dbh = $form->dbconnect_noauto; |
105 | 115 |
|
106 | 116 |
# we got a connection, check the version |
107 | 117 |
my ($dbversion) = $dbh->selectrow_array(qq|SELECT version FROM defaults|); |
118 |
if (!$dbversion) { |
|
119 |
$dbh->disconnect; |
|
120 |
return LOGIN_BASIC_TABLES_MISSING(); |
|
121 |
} |
|
108 | 122 |
|
109 | 123 |
$self->create_schema_info_table($form, $dbh); |
110 | 124 |
|
111 |
# Auth DB upgrades available? |
|
112 |
my $dbupdater_auth = SL::DBUpgrade2->new(form => $form, auth => 1)->parse_dbupdate_controls; |
|
113 |
return -3 if $dbupdater_auth->unapplied_upgrade_scripts($::auth->dbconnect); |
|
114 |
|
|
115 |
my $dbupdater = SL::DBUpgrade2->new(form => $form)->parse_dbupdate_controls; |
|
116 |
|
|
125 |
my $dbupdater = SL::DBUpgrade2->new(form => $form)->parse_dbupdate_controls; |
|
117 | 126 |
my $update_available = $dbupdater->update2_available($dbh); |
118 | 127 |
$dbh->disconnect; |
119 | 128 |
|
120 |
return 0 if !$update_available;
|
|
129 |
return LOGIN_OK() if !$update_available;
|
|
121 | 130 |
|
122 | 131 |
$form->{$_} = $::auth->client->{$_} for qw(dbname dbhost dbport dbuser dbpasswd); |
123 | 132 |
$form->{$_} = $myconfig{$_} for qw(datestyle); |
... | ... | |
147 | 156 |
|
148 | 157 |
print $form->parse_html_template("dbupgrade/footer"); |
149 | 158 |
|
150 |
return -2;
|
|
159 |
return LOGIN_DBUPDATE_AVAILABLE();
|
|
151 | 160 |
} |
152 | 161 |
|
153 | 162 |
sub dbconnect_vars { |
locale/de/all | ||
---|---|---|
1973 | 1973 |
'The base unit does not exist or it is about to be deleted in row %d.' => 'Die Basiseinheit in Zeile %d existiert nicht oder soll gelöscht werden.', |
1974 | 1974 |
'The base unit does not exist.' => 'Die Basiseinheit existiert nicht.', |
1975 | 1975 |
'The base unit relations must not contain loops (e.g. by saying that unit A\'s base unit is B, B\'s base unit is C and C\'s base unit is A) in row %d.' => 'Die Beziehungen der Einheiten dürfen keine Schleifen beinhalten (z.B. wenn gesagt wird, dass Einheit As Basiseinheit B, Bs Basiseinheit C und Cs Basiseinheit A ist) in Zeile %d.', |
1976 |
'The basic client tables have not been created for this client\'s database yet.' => 'Die grundlegenden Mandantentabellen wurden in der für diesen Mandanten konfigurierten Datenbank noch nicht angelegt.', |
|
1976 | 1977 |
'The business has been created.' => 'Der Kunden-/Lieferantentyp wurde erfasst.', |
1977 | 1978 |
'The business has been deleted.' => 'Der Kunden-/Lieferantentyp wurde gelöscht.', |
1978 | 1979 |
'The business has been saved.' => 'Der Kunden-/Lieferantentyp wurde gespeichert.', |
... | ... | |
2126 | 2127 |
'The wrong taxkeys for AP and AR transactions have been fixed.' => 'Die Probleme mit falschen Steuerschlüssel bei Kreditoren- und Debitorenbuchungen wurden behoben.', |
2127 | 2128 |
'The wrong taxkeys for inventory transactions for sales and purchase invoices have been fixed.' => 'Die falschen Steuerschlüssel für Warenbestandsbuchungen bei Einkaufs- und Verkaufsrechnungen wurden behoben.', |
2128 | 2129 |
'The wrong taxkeys have been fixed.' => 'Die Steuerschlüssel wurden nach Ihrer Auswahl korrigiert.', |
2130 |
'Then go to the database administration and chose "create database".' => 'Dann gehen Sie in den Datenbankverwaltung, und wählen Sie dort "Datenbank anlegen" aus.', |
|
2129 | 2131 |
'There are #1 more open invoices for this customer with other currencies.' => 'Es gibt #1 weitere offene Rechnungen für diesen Kunden, die in anderen Währungen ausgestellt wurden.', |
2130 | 2132 |
'There are #1 more open invoices from this vendor with other currencies.' => 'Es gibt #1 weitere offene Rechnungen von diesem Lieferanten, die in anderen Währungen ausgestellt wurden.', |
2131 | 2133 |
'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.', |
... | ... | |
2152 | 2154 |
'There is not enough left of \'#1\' in bin \'#2\' for the removal of #3.' => 'In Lagerplatz \'#2\' ist nicht genug von \'#1\' vorhanden, um #3 zu entnehmen.', |
2153 | 2155 |
'There was an error executing the background job.' => 'Bei der Ausführung des Hintergrund-Jobs trat ein Fehler auf.', |
2154 | 2156 |
'There was an error parsing the csv file: #1 in line #2.' => 'Es gab einen Fehler beim Parsen der CSV Datei: "#1" in der Zeile "#2"', |
2157 |
'There you can let kivitendo create the basic tables for you, even in an already existing database.' => 'Dort können Sie kivitendo diese grundlegenden Tabellen erstellen lassen, selbst in einer bereits existierenden Datenbank.', |
|
2155 | 2158 |
'Therefore several settings that had to be made for each user in the past have been consolidated into the client configuration.' => 'Dazu wurden gewisse Einstellungen, die vorher bei jedem Benutzer vorgenommen werden mussten, in die Konfiguration eines Mandanten verschoben.', |
2156 | 2159 |
'Therefore the definition of "kg" with the base unit "g" and a factor of 1000 is valid while defining "g" with a base unit of "kg" and a factor of "0.001" is not.' => 'So ist die Definition von "kg" mit der Basiseinheit "g" und dem Faktor 1000 zulässig, die Definition von "g" mit der Basiseinheit "kg" und dem Faktor "0,001" hingegen nicht.', |
2157 | 2160 |
'These wrong entries cannot be fixed automatically.' => 'Diese Einträge können nicht automatisch bereinigt werden.', |
templates/webpages/login_screen/basic_tables_missing.html | ||
---|---|---|
1 |
[%- USE LxERP %] |
|
2 |
|
|
3 |
<p><b>[% LxERP.t8('Error!') %]</b></p> |
|
4 |
|
|
5 |
<p> |
|
6 |
[% LxERP.t8('The basic client tables have not been created for this client\'s database yet.') %] |
|
7 |
[% LxERP.t8('Please log in to the administration panel.') %] |
|
8 |
[% LxERP.t8('Then go to the database administration and chose "create database".') %] |
|
9 |
[% LxERP.t8('There you can let kivitendo create the basic tables for you, even in an already existing database.') %] |
|
10 |
</p> |
|
11 |
|
|
12 |
<hr> |
|
13 |
<p> |
|
14 |
[% LxERP.t8('For further information read this: ') %] <a href="doc/html/index.html" target="_blank">kivitendo Installation</a><br> |
|
15 |
[% LxERP.t8('Or download the whole Installation Documentation as PDF (350kB) for off-line study (currently in German Language): ') %] <a href="doc/kivitendo-Dokumentation.pdf" target="_blank">kivitendo-Dokumentation.pdf</a> |
|
16 |
</p> |
|
17 |
|
|
18 |
<hr> |
|
19 |
|
|
20 |
<p> |
|
21 |
<a href="controller.pl?action=LoginScreen/user_login" target="_top">[% LxERP.t8('Login') %]</a> | |
|
22 |
<a href="controller.pl?action=Admin/login" target="_top">[% LxERP.t8('Administration') %]</a> |
|
23 |
</p> |
Auch abrufbar als: Unified diff
Wenn DB existiert aber Basistabellen fehlen anständige Fehlermeldung anzeigen