- customizable passenger activation ticket timeout.
authorMaciej Pasternacki <maciej@pasternacki.net>
Thu, 18 Dec 2008 00:50:37 +0000 (18 01:50 +0100)
committerMaciej Pasternacki <maciej@pasternacki.net>
Thu, 18 Dec 2008 00:50:37 +0000 (18 01:50 +0100)
doc/TRANE-PASSENGERS.html
src/passengers.lisp

index c7e36f6..6853db9 100644 (file)
@@ -5,9 +5,12 @@
 
 Thin wrapper on CONFIRM-ACTIVATION-TICKET, returns passenger DAO
 instead of numerical ID, and signals UNAUTHORIZED-ERROR on invalid
-TICKET.</blockquote><p>(<b>confirm-activation-ticket</b> class ticket &optional activation-info)&nbsp;&nbsp;&nbsp;<i>function</i></p>
+TICKET.</blockquote><p>(<b>confirm-activation-ticket</b> class ticket &key activation-info ticket-timeout)&nbsp;&nbsp;&nbsp;<i>function</i></p>
 <blockquote>Confirm activation ticket TICKET for passenger class CLASS.
 
+ACTIVATION-INFO is additional information stored in the database.
+TICKET-TIMEOUT is number of days, after which activation ticket becomes invalid.
+
 Returns valiated user ID (integer), or NIL if ticket is
 invalid (i.e. nonexistent, already used, or more than 5 days old).</blockquote><p>(<b>cookie-passenger</b> cookie class)&nbsp;&nbsp;&nbsp;<i>function</i></p>
 <blockquote>Authorize passenger of CLASS, based on authentication cookie COOKIE.</blockquote><p>(<b>create-activation-ticket</b> passenger &optional count)&nbsp;&nbsp;&nbsp;<i>function</i></p>
index 88a99a2..3bac513 100644 (file)
@@ -116,9 +116,12 @@ Returns ticket's passenger ID (integer), or NIL."
                                    (:- (:now) (:raw "interval '5 days'")))))
          :single))
 
-(defun confirm-activation-ticket (class ticket &optional activation-info)
+(defun confirm-activation-ticket (class ticket &key activation-info (ticket-timeout 62))
   "Confirm activation ticket TICKET for passenger class CLASS.
 
+ACTIVATION-INFO is additional information stored in the database.
+TICKET-TIMEOUT is number of days, after which activation ticket becomes invalid.
+
 Returns valiated user ID (integer), or NIL if ticket is
 invalid (i.e. nonexistent, already used, or more than 5 days old)."
   (let ((uid (query (:update (:raw (passenger-class-activation-table class))
@@ -126,7 +129,7 @@ invalid (i.e. nonexistent, already used, or more than 5 days old)."
                              :where (:and (:is-null 'used)
                                           (:= ticket 'ticket)
                                           (:> 'timestamp
-                                              (:- (:now) (:raw "interval '5 days'"))))
+                                              (:- (:now) (:raw (format nil "interval '~D days'" ticket-timeout)))))
                              :returning 'passenger-id)
                     (format nil "~A GMT: ~A"
                             (simple-date:universal-time-to-timestamp