Skip to content

Commit

Permalink
adding the ability to have non expiring token's
Browse files Browse the repository at this point in the history
  • Loading branch information
locojay committed Nov 17, 2013
1 parent 5902105 commit 1f10350
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@ Cookie = termit:encode_base64(termit:expiring(Term, 10), <<"cekpet">>).
Token = termit:issue_token([{user, <<"dvv">>}, {scope, <<"admin.*">>}], <<"ThanksBob!">>, 24 * 60 * 60).
{ok, Data} = termit:verify_token(Token, <<"ThanksBob!">>).
{error, forged} = termit:verify_token(Token, <<"ThanksBob?">>).


% generate non expiring token
Term = {a, b, c, [d, "e", <<"foo">>]},
Secret = <<"TopSecRet">>,
Token = termit:issue_token(Term, Secret),
{ok, Term} = verify_token(Token, Secret).
```

Thanks
Expand Down
19 changes: 16 additions & 3 deletions src/termit.erl
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
encode_base64/2,
expires_by/2,
expiring/2,
issue_token/2,
issue_token/3,
verify_token/2
]).
Expand Down Expand Up @@ -231,6 +232,15 @@ check_expired(_, _) ->
issue_token(Term, Secret, Ttl) ->
encode_base64(expiring(Term, Ttl), Secret).

-spec issue_token(
Term :: any(),
Secret :: binary()) ->
Token :: binary().

issue_token(Term, Secret) ->
encode_base64(Term, Secret).


-spec verify_token(
Token :: binary(),
Secret :: binary()) ->
Expand All @@ -241,7 +251,8 @@ issue_token(Term, Secret, Ttl) ->

verify_token(Token, Secret) ->
case decode_base64(Token, Secret) of
{ok, Decoded} -> check_expired(Decoded);
{ok, {expires, _ExpiresAt, _Data}=Decoded} -> check_expired(Decoded);
{ok, Decoded} -> {ok, Decoded};
Error -> Error
end.

Expand Down Expand Up @@ -309,7 +320,9 @@ token_test() ->
verify_token(issue_token(Term, Secret, 10), Secret)),
?assertEqual({error, forged},
verify_token(issue_token(Term, Secret, 10), << Secret/binary, "1" >>)),
?assertEqual({error, badarg},
verify_token(encode_base64(Term, Secret), Secret)).
?assertEqual({ok, Term},
verify_token(encode_base64(Term, Secret), Secret)),
?assertEqual({ok, Term},
verify_token(issue_token(Term, Secret), Secret)).

-endif.

0 comments on commit 1f10350

Please sign in to comment.