<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Oct 13, 2015 at 7:00 AM,  <span dir="ltr"><<a href="mailto:dancer-users-request@dancer.pm" target="_blank">dancer-users-request@dancer.pm</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow:hidden">I see Dancer2::Plugin::REST, is that the recommended one? It looks good? any<br> 
experiences with it?</div></blockquote></div><br></div><div class="gmail_extra">My code serves REST without the use of that plugin.  It was good, but it did not seem to help me much.<br><br></div><div class="gmail_extra">I have been writing a simple decorator plugin to help with JWT JSON Web Tokens. So my route can look like this:<br> <span style="font-family:monospace,monospace"><br>check_auth ['post', 'put'] => '/cr_user' => sub {<br>    my ($jwt_sub) = @_;<br>    my $dir = _connect_dir();<br><br>    my $role_valid ;<br>    my $ret;<br>    if( $jwt_sub) {<br>        my $admin_user = $dir->get_user({ username => $jwt_sub });</span><br> <br></div><div class="gmail_extra">The plugin has this:<br><span style="font-family:monospace,monospace"><br>use Crypt::JWT qw(encode_jwt decode_jwt);<br>...<br>register 'check_auth' => sub {<br>    my ( $dsl, $pattern, @rest ) = @_;<br><br>    my $default_methods = [ 'get', 'post' ];<br><br>    # If the given pattern is an ArrayRef, we override the defaults<br>    # and pass these onto to DSL->any()<br>    if( ref($pattern) eq "ARRAY" ) {<br>        $default_methods = $pattern;<br>        $pattern = shift(@rest);<br>    }<br>    my $code;<br>    for my $e (@rest) { $code = $e if ( ref($e) eq 'CODE' ) }<br><br>    my $content_type = plugin_setting->{content_type} || 'text/xml';<br><br>    my $authenticated_route = sub {<br>        # Default response content type<br>        $dsl->response->header('</span><span style="font-family:monospace,monospace">Content-Type')<br>          or $dsl->response->content_type( $content_type );<br>        # must be authenticated<br>        # get token from header<br>        my $jwt_sub;<br>        my $token = $dsl->request->header('</span><span style="font-family:monospace,monospace">authorization');<br>        if ( $token) {<br>          # check the JWT of this request<br>          my $secret  = plugin_setting->{'jwt_secret'}</span><span style="font-family:monospace,monospace">;<br>          try{<br>            my $data = decode_jwt(token=>$token, key=>$secret);<br></span></div><div class="gmail_extra"><br>Much of this is copied from Dancer2::Plugin::Auth::Tiny by D.A. Golden. Now I should try Yanick's Plugin2.<br><br></div><div dir="ltr">Cheers -- Rick<br><br></div><div class="gmail_extra">
</div></div>