summaryrefslogtreecommitdiff
path: root/LedgerSMB/DBObject/User.pm
diff options
context:
space:
mode:
Diffstat (limited to 'LedgerSMB/DBObject/User.pm')
-rw-r--r--LedgerSMB/DBObject/User.pm52
1 files changed, 52 insertions, 0 deletions
diff --git a/LedgerSMB/DBObject/User.pm b/LedgerSMB/DBObject/User.pm
new file mode 100644
index 00000000..62ae4e0b
--- /dev/null
+++ b/LedgerSMB/DBObject/User.pm
@@ -0,0 +1,52 @@
+package LedgerSMB::DBObject::User;
+
+use base qw/LedgerSMB::DBObject/;
+
+sub save {
+
+ my $self = shift @_;
+
+ my $user = $self->get();
+
+ if ($user->{id} && $self->{is_a_user}) {
+
+ # doesn't check for the password - that's done in the sproc.
+ $self->{id} = @{ $self->exec_method(procname=>'admin_save_user',
+ args=>[$user->{id}, $self->{username}, $self->{password}] ) }[0];
+ else {
+
+ return 0;
+ }
+ }
+ elsif ($user && !$self->{is_a_user}) {
+
+ # there WAS a user, and we've decided we want that user to go away now.
+
+ $self->{id} = $user->{id};
+ return $self->remove();
+
+ }
+ return 1;
+}
+
+sub get {
+
+ my $self = shift @_;
+
+ my ($user_id, $username) = @{ $self->exec_method(procname=>'admin_get_user',
+ args=>[$self->{id}])};
+
+ return {id=>$user_id, username=>$username};
+}
+
+sub remove {
+
+ my $self = shift;
+
+ my $code = $self->exec_method(procname=>"admin_delete_user", args=>[$self->{id}, $self->{username}]);
+ $self->{id} = undef; # never existed..
+
+ return $code->[0];
+}
+
+1; \ No newline at end of file