[freeside-commits] branch master updated. d54ade7b3c18794d5ab79f707fc35f0da061306a

Ivan ivan at 420.am
Tue Jun 16 23:31:44 PDT 2015


The branch, master has been updated
       via  d54ade7b3c18794d5ab79f707fc35f0da061306a (commit)
      from  395b48e2a32e90ae0edf2e45a31758dc78181f04 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit d54ade7b3c18794d5ab79f707fc35f0da061306a
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Tue Jun 16 23:31:15 2015 -0700

    web access logging to DB

diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index 2d98963..70d7c5a 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -5734,6 +5734,18 @@ sub tables_hashref {
       'index'  => [],
     },
 
+    'access_user_log' => {
+      'columns'      => [
+        'lognum',  'serial', '',        '', '', '',
+        'usernum',    'int', '',        '', '', '',
+        'path',   'varchar', '', 2*$char_d, '', '',
+        '_date',         @date_type,        '', '',
+      ],
+      'primary_key'  => 'lognum',
+      'unique'       => [],
+      'index'        => [ ['usernum'], ['path'], ['_date'] ],
+    },
+
     'sched_item' => {
       'columns' => [
         'itemnum',   'serial',      '', '', '', '', 
diff --git a/FS/FS/access_user_log.pm b/FS/FS/access_user_log.pm
new file mode 100644
index 0000000..884d250
--- /dev/null
+++ b/FS/FS/access_user_log.pm
@@ -0,0 +1,136 @@
+package FS::access_user_log;
+use base qw( FS::Record );
+
+use strict;
+#use FS::Record qw( qsearch qsearchs );
+use FS::CurrentUser;
+
+=head1 NAME
+
+FS::access_user_log - Object methods for access_user_log records
+
+=head1 SYNOPSIS
+
+  use FS::access_user_log;
+
+  $record = new FS::access_user_log \%hash;
+  $record = new FS::access_user_log { 'column' => 'value' };
+
+  $error = $record->insert;
+
+  $error = $new_record->replace($old_record);
+
+  $error = $record->delete;
+
+  $error = $record->check;
+
+=head1 DESCRIPTION
+
+An FS::access_user_log object represents a backoffice web server log entry.
+  FS::access_user_log inherits from FS::Record.  The following fields are
+currently supported:
+
+=over 4
+
+=item lognum
+
+primary key
+
+=item usernum
+
+usernum
+
+=item path
+
+path
+
+=item _date
+
+_date
+
+
+=back
+
+=head1 METHODS
+
+=over 4
+
+=item new HASHREF
+
+Creates a new log entry.  To add the log entry to the database, see L<"insert">.
+
+Note that this stores the hash reference, not a distinct copy of the hash it
+points to.  You can ask the object for a copy with the I<hash> method.
+
+=cut
+
+sub table { 'access_user_log'; }
+
+=item insert_new_path PATH
+
+Adds a log entry for PATH for the current user and timestamp.
+
+=cut
+
+sub insert_new_path {
+  my( $class, $path ) = @_;
+
+  my $self = $class->new( {
+    'usernum' => $FS::CurrentUser::CurrentUser->usernum,
+    'path'    => $path,
+    '_date'   => time,
+  } );
+
+  my $error = $self->insert;
+  die $error if $error;
+
+}
+
+=item insert
+
+Adds this record to the database.  If there is an error, returns the error,
+otherwise returns false.
+
+=item delete
+
+Delete this record from the database.
+
+=item replace OLD_RECORD
+
+Replaces the OLD_RECORD with this one in the database.  If there is an error,
+returns the error, otherwise returns false.
+
+=item check
+
+Checks all fields to make sure this is a valid log entry.  If there is
+an error, returns the error, otherwise returns false.  Called by the insert
+and replace methods.
+
+=cut
+
+sub check {
+  my $self = shift;
+
+  my $error = 
+    $self->ut_numbern('lognum')
+    || $self->ut_foreign_key('usernum', 'access_user', 'usernum')
+    || $self->ut_text('path')
+    || $self->ut_number('_date')
+  ;
+  return $error if $error;
+
+  $self->SUPER::check;
+}
+
+=back
+
+=head1 BUGS
+
+=head1 SEE ALSO
+
+L<FS::Record>
+
+=cut
+
+1;
+
diff --git a/FS/MANIFEST b/FS/MANIFEST
index 422f69c..899270b 100644
--- a/FS/MANIFEST
+++ b/FS/MANIFEST
@@ -846,3 +846,5 @@ FS/cust_pkg_reason_fee.pm
 t/cust_pkg_reason_fee.t
 FS/part_svc_link.pm
 t/part_svc_link.t
+FS/access_user_log.pm
+t/access_user_log.t
diff --git a/FS/t/access_user_log.t b/FS/t/access_user_log.t
new file mode 100644
index 0000000..582b32c
--- /dev/null
+++ b/FS/t/access_user_log.t
@@ -0,0 +1,5 @@
+BEGIN { $| = 1; print "1..1\n" }
+END {print "not ok 1\n" unless $loaded;}
+use FS::access_user_log;
+$loaded=1;
+print "ok 1\n";
diff --git a/htetc/handler.pl b/htetc/handler.pl
index 18108ab..45afafb 100644
--- a/htetc/handler.pl
+++ b/htetc/handler.pl
@@ -7,6 +7,7 @@ use warnings;
 use FS::Mason qw( mason_interps );
 use FS::Trace;
 use FS::Conf;
+use FS::access_user_log;
 
 $FS::Conf::conf_cache_enabled = 1; # enable FS::Conf caching for performance
 
@@ -107,7 +108,6 @@ sub handler
       return -1 if defined( $r->content_type )
                 && $r->content_type !~ m!(^text/|\bxml\b)!io;
 
-
       local $SIG{__WARN__};
       local $SIG{__DIE__};
 
@@ -139,6 +139,8 @@ sub handler
 
     }
 
+    FS::access_user_log->insert_new_path( $r->uri );
+
     FS::Trace->log('handling request');
     my %session;
     my $status;

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/Schema.pm                           |   12 +++
 FS/FS/access_user_log.pm                  |  136 +++++++++++++++++++++++++++++
 FS/MANIFEST                               |    2 +
 FS/t/{AccessRight.t => access_user_log.t} |    2 +-
 htetc/handler.pl                          |    4 +-
 5 files changed, 154 insertions(+), 2 deletions(-)
 create mode 100644 FS/FS/access_user_log.pm
 copy FS/t/{AccessRight.t => access_user_log.t} (80%)




More information about the freeside-commits mailing list