about summary refs log tree commit diff
path: root/web/panettone/src/authentication.lisp
diff options
context:
space:
mode:
authorGriffin Smith <grfn@gws.fyi>2022-05-28T18·17-0400
committerclbot <clbot@tvl.fyi>2022-05-28T18·30+0000
commit1fbed8e3178c2c2bc2f093374e0035a1fe567377 (patch)
tree72212b2e5ba42339d1ad8e1b77856d6d5d642e7e /web/panettone/src/authentication.lisp
parentb39ca017c0453c7420da64d062a2aa00e27d1fd3 (diff)
fix(web/panettone): Don't add extra padding when already padded r/4182
Because of math being upsetting, we were adding 4 padding characters to
an already-properly-padded base64 string, which broke tazjin.

This also breaks this function out into panettone.util, and adds a test
for it.

Change-Id: I7bc8a440ad9d0917272dd9f2e341081ea14693da
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5782
Autosubmit: grfn <grfn@gws.fyi>
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
Diffstat (limited to 'web/panettone/src/authentication.lisp')
-rw-r--r--web/panettone/src/authentication.lisp8
1 files changed, 1 insertions, 7 deletions
diff --git a/web/panettone/src/authentication.lisp b/web/panettone/src/authentication.lisp
index 5c6d82e020..3ce07aa8d7 100644
--- a/web/panettone/src/authentication.lisp
+++ b/web/panettone/src/authentication.lisp
@@ -78,12 +78,6 @@ the user, however email addresses are temporarily not available."
      ;; TODO(tazjin): Figure out actual displayName mapping in tokens.
      :displayname username)))
 
-(defun add-missing-base64-padding (s)
-  "Add any missing padding characters to the (un-padded) base64 string `S', such
-that it can be successfully decoded by the `BASE64' package"
-  ;; I apologize
-  (format nil "~A~v@{~A~:*~}" s (- 4 (mod (length s) 4)) "="))
-
 (defun fetch-token (code)
   "Fetches the access token on completion of user authentication through
 the OAuth2 endpoint and returns the resulting user object."
@@ -117,5 +111,5 @@ the OAuth2 endpoint and returns the resulting user object."
                            ;; lisp base64 library doesn't know how to deal with
                            ;; that - we need to add those extra padding
                            ;; characters here.
-                           (add-missing-base64-padding payload)))))
+                           (panettone.util:add-missing-base64-padding payload)))))
             (claims-to-user claims))))))