summaryrefslogtreecommitdiff
path: root/scripts/login.pl
blob: c51b3fbdf8183399fef731e81988cc30cc6897a4 (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. if (!$request->{company}){
  26. $request->{company} = $LedgerSMB::Sysconfig::default_db;
  27. }
  28. $request->_db_init;
  29. }
  30. my $path = $ENV{SCRIPT_NAME};
  31. $path =~ s|[^/]*$||;
  32. if ($request->{dbh} || $request->{log_out}){
  33. print "Content-Type: text/html\n";
  34. print "Set-Cookie: LedgerSMB=Login; path=$path\n";
  35. print "Status: 200 Success\n\n";
  36. if ($request->{log_out}){
  37. exit;
  38. }
  39. }
  40. else {
  41. print "WWW-Authenticate: Basic realm=\"LedgerSMB\"\n";
  42. print "Status: 401 Unauthorized\n\n";
  43. print "Please enter your credentials.\n";
  44. exit;
  45. }
  46. }
  47. sub login {
  48. my ($request) = @_;
  49. if (!$request->{_user}){
  50. __default($request);
  51. }
  52. require "scripts/menu.pl";
  53. LedgerSMB::Scripts::menu::root_doc($request);
  54. }
  55. sub logout {
  56. my ($request) = @_;
  57. $request->{callback} = "";
  58. $request->{endsession} = 1;
  59. Session::session_destroy($request);
  60. print "Location: login.pl\n";
  61. print "Content-type: text/html\n\n";
  62. exit;
  63. }
  64. 1;