summaryrefslogtreecommitdiff
path: root/scripts/admin.pl
blob: 29cf03c2414b5d128b95d68c37550b31f18e055e (plain)
  1. #!/usr/bin/perl
  2. package LedgerSMB::Scripts::admin;
  3. require 'lsmb-request.pl';
  4. use LedgerSMB::Template;
  5. use LedgerSMB::DBObject::Admin;
  6. use LedgerSMB::DBObject::User;
  7. use Data::Dumper;
  8. sub new_user {
  9. # uses the same page as create_user, only pre-populated.
  10. #my ($request) = @_;
  11. my $request = shift @_;
  12. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  13. my $sal = $admin->get_salutations();
  14. my $groups = $admin->get_roles();
  15. if ($request->type() eq 'POST') {
  16. # do the save stuff
  17. my $entity = $admin->save_new_user();
  18. my $template = LedgerSMB::Template->new( user => $user,
  19. template => 'Admin/edit_user', language => $user->{ language },
  20. format => 'HTML', path=>'UI');
  21. $template->render(
  22. {
  23. user=>$entity,
  24. salutations=>$sal,
  25. roles=>$groups
  26. }
  27. );
  28. } else {
  29. my $template = LedgerSMB::Template->new(
  30. user => $user,
  31. template => 'Admin/edit_user',
  32. language => $user->{language},
  33. format => 'HTML',
  34. path=>'UI'
  35. );
  36. $template->render(
  37. {
  38. salutations=>$sal,
  39. roles=>$groups
  40. }
  41. );
  42. }
  43. }
  44. sub edit_user {
  45. # uses the same page as create_user, only pre-populated.
  46. my ($request) = @_;
  47. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'user_id');
  48. my $all_roles = $admin->get_roles();
  49. my $template = LedgerSMB::Template->new(
  50. user => $user,
  51. template => 'Admin/edit_user',
  52. language => $user->{language},
  53. format => 'HTML',
  54. path=>'UI'
  55. );
  56. if ($request->type() eq 'POST') {
  57. $admin->save_user();
  58. $admin->save_roles();
  59. $template->render(
  60. {
  61. user=>$admin->get_entire_user(),
  62. roles=>$all_roles,
  63. user_roles=>$admin->get_user_roles($request->{username})
  64. }
  65. );
  66. }
  67. else {
  68. my $edited_user = $admin->get_entire_user($request->{user});
  69. $template->render(
  70. {
  71. user=>$edited_user,
  72. roles=>$all_roles,
  73. user_roles=>$admin->get_user_roles($request->{user})
  74. }
  75. );
  76. }
  77. }
  78. sub edit_group {
  79. my ($request) = @_;
  80. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  81. my $all_roles = $admin->role_list();
  82. my $template = LedgerSMB::Template->new(
  83. user => $user,
  84. template => 'Admin/edit_group',
  85. language => $user->{language},
  86. format => 'HTML',
  87. path=>'UI'
  88. );
  89. if ($request->type() eq "POST") {
  90. my $role = $admin->save_role();
  91. return $template->render(
  92. {
  93. user=> $request->{role},
  94. roles=>$all_roles,
  95. user_roles=>$admin->get_user_roles($request->{role})
  96. }
  97. );
  98. }
  99. else {
  100. return $template->render(
  101. {
  102. roles=>$all_roles
  103. }
  104. );
  105. }
  106. }
  107. sub create_group {
  108. my ($request) = @_;
  109. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  110. my $all_roles = $admin->get_roles();
  111. my $template = LedgerSMB::Template->new(
  112. user => $user,
  113. template => 'Admin/edit_group',
  114. language => $user->{language},
  115. format => 'HTML',
  116. path=>'UI'
  117. );
  118. if ($request->type() eq "POST") {
  119. my $role = $admin->save_role();
  120. return $template->render(
  121. {
  122. user=> $role, roles=>$all_roles
  123. }
  124. );
  125. }
  126. else {
  127. return $template->render({roles=>$all_roles});
  128. }
  129. }
  130. sub delete_group {
  131. my ($request) = @_;
  132. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  133. # requires the field modifying_user to be set.
  134. my $status = $admin->delete_group($request->{modifying_user});
  135. # status can either be 1, or an error.
  136. # if there's an error, $status->throw() is called by admin.pm. Or possibly
  137. # in the template itself.
  138. my $template = LedgerSMB::Template->new ( user=>$user,
  139. template=>'Admin/delete_group', language=>$user->{language},
  140. format=>'HTML', path=>'UI');
  141. $template->render($status);
  142. }
  143. sub delete_user {
  144. my ($request) = @_;
  145. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  146. # requires the field modifying_user to be set.
  147. my $status = $admin->delete_user($request->{modifying_user});
  148. # status can either be 1, or an error.
  149. # if there's an error, $status->throw() is called by admin.pm. Or possibly
  150. # in the template itself.
  151. my $template = LedgerSMB::Template->new ( user=>$user,
  152. template=>'Admin/delete_user', language=>$user->{language},
  153. format=>'HTML', path=>'UI');
  154. $template->render($status);
  155. }
  156. sub new_group {
  157. my ($request) = @_;
  158. my $template = LedgerSMB::Template->new( user=>$user,
  159. template=>'Admin/new_group', language=>$user->{language},
  160. format=>'HTML', path=>'UI');
  161. $template->render();
  162. }
  163. sub cancel {
  164. &main(@_);
  165. }
  166. sub __default {
  167. &main(@_);
  168. }
  169. sub main {
  170. my ($request) = @_;
  171. my $template;
  172. my $user = LedgerSMB::DBObject::User->new(base=>$request, copy=>'all');
  173. my $ret = $user->get_all_users();
  174. $template = LedgerSMB::Template->new(
  175. user=>$user,
  176. template=>'Admin/main',
  177. language=>$user->{language},
  178. format=>'HTML',
  179. path=>'UI'
  180. );
  181. $template->render( { users=>$user->{users} } );
  182. }
  183. #eval { do "scripts/custom/admin.pl"};
  184. 1;