XML basiertes Menue, siehe Bug #771
[kivitendo-erp.git] / bin / mozilla / login.pl
1 #=====================================================================
2 # LX-Office ERP
3 # Copyright (C) 2004
4 # Based on SQL-Ledger Version 2.1.9
5 # Web http://www.lx-office.org
6 #
7 ######################################################################
8 # SQL-Ledger Accounting
9 # Copyright (c) 1998-2002
10 #
11 #  Author: Dieter Simader
12 #   Email: dsimader@sql-ledger.org
13 #     Web: http://www.sql-ledger.org
14 #
15 #
16 # This program is free software; you can redistribute it and/or modify
17 # it under the terms of the GNU General Public License as published by
18 # the Free Software Foundation; either version 2 of the License, or
19 # (at your option) any later version.
20 #
21 # This program is distributed in the hope that it will be useful,
22 # but WITHOUT ANY WARRANTY; without even the implied warranty of
23 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24 # GNU General Public License for more details.
25 # You should have received a copy of the GNU General Public License
26 # along with this program; if not, write to the Free Software
27 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
28 #######################################################################
29
30 use DBI;
31 use SL::User;
32 use SL::Form;
33
34 require "bin/mozilla/common.pl";
35
36 $form = new Form;
37
38 $locale = new Locale $language, "login";
39
40 # customization
41 if (-f "bin/mozilla/custom_$form->{script}") {
42   eval { require "bin/mozilla/custom_$form->{script}"; };
43   $form->error($@) if ($@);
44 }
45
46 # per login customization
47 if (-f "bin/mozilla/$form->{login}_$form->{script}") {
48   eval { require "bin/mozilla/$form->{login}_$form->{script}"; };
49   $form->error($@) if ($@);
50 }
51
52 # window title bar, user info
53 $form->{titlebar} =
54   "Lx-Office " . $locale->text('Version') . " $form->{version}";
55
56 if ($form->{action}) {
57   $form->{titlebar} .= " - $myconfig{name} - $myconfig{dbname}";
58   call_sub($locale->findsub($form->{action}));
59 } else {
60   &login_screen;
61 }
62
63 1;
64
65 sub login_screen {
66   $lxdebug->enter_sub();
67
68   if (-f "css/lx-office-erp.css") {
69     $form->{stylesheet} = "lx-office-erp.css";
70   }
71
72   $form->{fokus} = "loginscreen.login";
73   $form->header;
74
75   print qq|
76
77
78 <body class=login onLoad="fokus()">
79
80 <pre>
81
82 </pre>
83
84 <center>
85 <table class=login border=3 cellpadding=20>
86   <tr>
87     <td class=login align=center><a href="http://www.lx-office.org" target=_top><img src="image/lx-office-erp.png" border=0></a>
88 <h1 class=login align=center>|
89     . $locale->text('Version') . qq| $form->{version}
90 </h1>
91
92 <p>
93
94 <form method=post name=loginscreen action=$form->{script}>
95
96   <input type="hidden" name="show_dbupdate_warning" value="1">
97
98       <table width=100%>
99         <tr>
100           <td align=center>
101             <table>
102               <tr>
103                 <th align=right>| . $locale->text('Login Name') . qq|</th>
104                 <td><input class=login name=login size=30 tabindex="1"></td>
105               </tr>
106               <tr>
107                 <th align=right>| . $locale->text('Password') . qq|</th>
108                 <td><input class=login type=password name=password size=30 tabindex="2"></td>
109               </tr>
110             </table>
111
112             <br>
113             <input type=submit name=action value="| . $locale->text('Login') . qq|" tabindex="3">
114
115           </td>
116         </tr>
117       </table>
118
119 </form>
120
121     </td>
122   </tr>
123 </table>
124
125 </body>
126 </html>
127 |;
128
129   $lxdebug->leave_sub();
130 }
131
132 sub login {
133   $lxdebug->enter_sub();
134
135   $form->error($locale->text('You did not enter a name!'))
136     unless ($form->{login});
137
138   $user = new User $memberfile, $form->{login};
139
140   # if we get an error back, bale out
141   if (($errno = $user->login(\%$form, $userspath)) <= -1) {
142     $errno *= -1;
143     $err[1] = $err[3] = $locale->text('Incorrect username or password!');
144
145     if ($errno == 2) {
146       exit;
147     }
148
149     $form->error($err[$errno]);
150   }
151
152   # made it this far, execute the menu
153   if ($user->{menustyle} eq "v3") {
154     $form->{callback} =
155       "menuv3.pl?login=$form->{login}&password=$form->{password}&action=display";
156   } elsif ($user->{menustyle} eq "neu") {
157     $form->{callback} =
158       "menunew.pl?login=$form->{login}&password=$form->{password}&action=display";
159   } elsif ($user->{menustyle} eq "xml") {
160     $form->{callback} =
161       "menuXML.pl?login=$form->{login}&password=$form->{password}&action=display";
162   } else {
163     $form->{callback} =
164       "menu.pl?login=$form->{login}&password=$form->{password}&action=display";
165   }
166
167   $form->redirect;
168
169   $lxdebug->leave_sub();
170 }
171
172 sub logout {
173   $lxdebug->enter_sub();
174
175   unlink "$userspath/$form->{login}.conf";
176
177   # remove the callback to display the message
178   $form->{callback} = "login.pl?action=&login=";
179   $form->redirect($locale->text('You are logged out!'));
180
181   $lxdebug->leave_sub();
182 }
183
184 sub company_logo {
185   $lxdebug->enter_sub();
186
187   require "$userspath/$form->{login}.conf";
188   $locale = new Locale $myconfig{countrycode}, "login"
189     unless ($language eq $myconfig{countrycode});
190
191   $myconfig{address} =~ s/\\n/<br>/g;
192   $myconfig{dbhost} = $locale->text('localhost') unless $myconfig{dbhost};
193
194   $form->{stylesheet} = $myconfig{stylesheet};
195
196   $form->{title} = $locale->text('About');
197
198   # create the logo screen
199   $form->header unless $form->{noheader};
200
201   print qq|
202 <body>
203 <center>
204 <a href="http://www.lx-office.org" target=_top><img src="image/lx-office-erp.png" border=0></a>
205 <h2 class=login>| . $locale->text('Version') . qq| $form->{version}</h2>
206
207 | . $locale->text('Licensed to') . qq|
208 <p>
209 <b>
210 $myconfig{company}
211 <br>$myconfig{address}
212 </b>
213
214
215 <br>
216 <table border=0>
217   <tr>
218     <th align=left>| . $locale->text('User') . qq|</th>
219     <td>$myconfig{name}</td>
220   </tr>
221   <tr>
222     <th align=left>| . $locale->text('Dataset') . qq|</th>
223     <td>$myconfig{dbname}</td>
224   </tr>
225   <tr>
226     <th align=left>| . $locale->text('Database Host') . qq|</th>
227     <td>$myconfig{dbhost}</td>
228   </tr>
229   <tr>
230   </tr>
231   <tr>
232   </tr>
233   <tr>
234     <th colspan="2" align="center"><a href="http://lx-office.org" target="blank">http://lx-office.org</a></th>
235   </tr>
236   <tr>
237     <th colspan="2" align="center"><a href="mailto:info&#064;lx-office.org" target="blank">info&#064;lx-office.org</a></th>
238   </tr>
239 </table>
240
241 </center>
242
243 </body>
244 </html>
245 |;
246
247   $lxdebug->leave_sub();
248 }