summaryrefslogtreecommitdiff
path: root/scripts/login.pl
blob: 31d2922f5027be2e5cdecd23479d0b778d1169bd (plain)
  1. package LedgerSMB::Scripts::login;
  2. our $VERSION = 1.0;
  3. use LedgerSMB::Locale;
  4. use LedgerSMB::Form; # Required for now to integrate with menu module.
  5. use LedgerSMB::User;
  6. use strict;
  7. sub __default {
  8. my ($request) = @_;
  9. my $locale;
  10. $locale = LedgerSMB::Locale->get_handle(${LedgerSMB::Sysconfig::language})
  11. or $request->error( __FILE__ . ':' . __LINE__ .
  12. ": Locale not loaded: $!\n" );
  13. my $template = LedgerSMB::Template->new(
  14. user =>$request->{_user},
  15. locale => $locale,
  16. path => 'UI',
  17. template => 'login',
  18. format => 'HTML'
  19. );
  20. $template->render($request);
  21. }
  22. sub authenticate {
  23. my ($request) = @_;
  24. if (!$request->{dbh}){
  25. $request->{company} = 'lsmb13';
  26. $request->_db_init;
  27. }
  28. if ($request->{dbh} || $request->{log_out}){
  29. print "Content-Type: text/html\n";
  30. print "Set-Cookie: LedgerSMB=Login;\n";
  31. print "Status: 200 Success\n\n";
  32. if ($request->{log_out}){
  33. exit;
  34. }
  35. }
  36. else {
  37. print "WWW-Authenticate: Basic realm=\"LedgerSMB\"\n";
  38. print "Status: 401 Unauthorized\n\n";
  39. print "Please enter your credentials.\n";
  40. exit;
  41. }
  42. }
  43. sub login {
  44. my ($request) = @_;
  45. if (!$request->{_user}){
  46. __default($request);
  47. }
  48. require "scripts/menu.pl";
  49. LedgerSMB::Scripts::menu::root_doc($request);
  50. }
  51. sub logout {
  52. my ($request) = @_;
  53. $request->{callback} = "";
  54. $request->{endsession} = 1;
  55. Session::session_destroy($request);
  56. print "Location: login.pl\n";
  57. print "Content-type: text/html\n\n";
  58. exit;
  59. }
  60. 1;