OSDN Git Service

Plugin::AntiCsrf: add 'csrf_token' helper
authorhylom <hylom@users.sourceforge.jp>
Fri, 22 Jun 2018 10:48:05 +0000 (19:48 +0900)
committerhylom <hylom@users.sourceforge.jp>
Fri, 22 Jun 2018 10:48:05 +0000 (19:48 +0900)
src/newslash_web/lib/Newslash/Plugin/AntiCsrf.pm
src/newslash_web/templates/submission/create.html.tt2
src/newslash_web/templates/user/base.html.tt2

index 9c5ea13..5ecb276 100644 (file)
@@ -81,20 +81,17 @@ sub register {
                    return $next->();
                });
 
-    # add 'csrf_token' function to Template NS object
-    if ($app->config->{TT2Renderer}) {
-        my $tt2r = $app->config->{TT2Renderer}->{self};
-        $tt2r->add_NS_function('csrf_token', sub {
-                                   my ($c, $rc_str) = @_;
-                                   my $session = $c->session('session');
-                                   # TODO: non-login user don't have a session token
-                                   my $token = $self->get_token($rc_str, $session->{token});
-                                   if ($token) {
-                                       return $token;
-                                   }
-                                   return '';
-                               });
-    }
+    # add 'csrf_token' helper
+    $app->helper('csrf_token', sub {
+                     my ($c, $rc_str) = @_;
+                     my $session = $c->session('session');
+                     # TODO: non-login user don't have a session token
+                     my $token = $self->get_token($rc_str, $session->{token});
+                     if ($token) {
+                         return $token;
+                     }
+                     return;
+                 });
 }
 
 sub get_token {
index ab19552..5e419ef 100644 (file)
@@ -6,7 +6,7 @@
   <div class="post submission main-contents" id="submission-editor">
     <h2>タレコミの編集</h2>
     <div id="post-preview">
-      <article-item :item="item" :show-editor="true" csrf-token="[% NS.csrf_token('submission') %]"></article-item>
+      <article-item :item="item" :show-editor="true" csrf-token="[% helpers.csrf_token('submission') %]"></article-item>
     </div>
   </div>
 [%- INCLUDE common/captcha/recaptcha -%]
index 384e3e9..7b3f0ce 100644 (file)
@@ -43,7 +43,7 @@
 
 [%- IF user.uid != the_user.uid && user.is_login -%]
 <script src="/js/user-profile.js"></script>
-<script>userProfile.run({el: "#user-info", secToken: "[% NS.csrf_token('relation'); %]", theUID: [% the_user.uid %], relation: [% IF relation; relation; ELSE; 0; END %] });</script>
+<script>userProfile.run({el: "#user-info", secToken: "[% helpers.csrf_token('relation'); %]", theUID: [% the_user.uid %], relation: [% IF relation; relation; ELSE; 0; END %] });</script>
 [%- END -%]
 
 [%- END -%]