summaryrefslogtreecommitdiffstats
path: root/archives/extend/attachments/20140306/24422ef2/attachment.html
blob: 62741bf1f4218548830c0154c1d1cd4ac31dc276 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<tt>
&lt;div&nbsp;dir=&quot;ltr&quot;&gt;I&nbsp;also&nbsp;found&nbsp;the&nbsp;answer&nbsp;to&nbsp;my&nbsp;own&nbsp;question:&nbsp;custom&nbsp;middleware&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I&nbsp;just&nbsp;created:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&nbsp;�1&nbsp;-module(authentication_middleware).&lt;/div&gt;&lt;div&gt;&nbsp;�2&lt;/div&gt;&lt;div&gt;&nbsp;�3&nbsp;-behaviour(cowboy_middleware).&lt;/div&gt;<br>
&lt;div&gt;&nbsp;�4&lt;/div&gt;&lt;div&gt;&nbsp;�5&nbsp;-export([execute/2]).&lt;/div&gt;&lt;div&gt;&nbsp;�6&lt;/div&gt;&lt;div&gt;&nbsp;�7&nbsp;execute(Req,&nbsp;Env)&nbsp;-&gt;&lt;/div&gt;&lt;div&gt;&nbsp;�8&lt;/div&gt;&lt;div&gt;&nbsp;�9&nbsp;&nbsp;&nbsp;{Path,&nbsp;Req1}&nbsp;=&nbsp;cowboy_req:path(Req),&lt;/div&gt;&lt;div&gt;&nbsp;10&lt;/div&gt;&lt;div&gt;&nbsp;11&nbsp;&nbsp;&nbsp;case&nbsp;Path&nbsp;of&lt;/div&gt;<br>
&lt;div&gt;&nbsp;12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;&quot;/login.html&quot;&gt;&gt;&nbsp;-&gt;&lt;/div&gt;&lt;div&gt;&nbsp;13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ok,&nbsp;Req1,&nbsp;Env};&lt;/div&gt;&lt;div&gt;&nbsp;14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;&quot;/do_login&quot;&gt;&gt;&nbsp;-&gt;&lt;/div&gt;&lt;div&gt;&nbsp;15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ok,&nbsp;Req1,&nbsp;Env};&lt;/div&gt;<br>
&lt;div&gt;&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_&nbsp;-&gt;&lt;/div&gt;&lt;div&gt;&nbsp;17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;id3as_security:is_request_authenticated(Req1)&nbsp;of&lt;/div&gt;&lt;div&gt;&nbsp;18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{error,&nbsp;eauth,&nbsp;Req2}&nbsp;-&gt;&lt;/div&gt;&lt;div&gt;&nbsp;19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ok,&nbsp;Req4}&nbsp;=&nbsp;cowboy_req:reply(303,&nbsp;[{&lt;&lt;&quot;Location&quot;&gt;&gt;,&nbsp;&lt;&lt;&quot;/login.html&quot;&gt;&gt;}],&nbsp;&quot;&quot;,&nbsp;Req2),&lt;/div&gt;<br>
&lt;div&gt;&nbsp;20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{halt,&nbsp;Req4};&lt;/div&gt;&lt;div&gt;&nbsp;21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{authenticated,&nbsp;_Id,&nbsp;Req2}&nbsp;-&gt;&lt;/div&gt;&lt;div&gt;&nbsp;22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;�{ok,&nbsp;Req2,&nbsp;Env}&lt;/div&gt;&lt;div&gt;&nbsp;23&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&lt;/div&gt;&lt;div&gt;&nbsp;24&nbsp;&nbsp;&nbsp;end.&lt;/div&gt;&lt;/div&gt;<br>
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;And&nbsp;put&nbsp;this&nbsp;between&nbsp;the&nbsp;cowboy_router&nbsp;and&nbsp;cowboy_handler&nbsp;and&nbsp;life&nbsp;is&nbsp;all&nbsp;good.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-Mark&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&nbsp;class=&quot;gmail_extra&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;div&nbsp;class=&quot;gmail_quote&quot;&gt;On&nbsp;Thu,&nbsp;Mar&nbsp;6,&nbsp;2014&nbsp;at&nbsp;12:47&nbsp;AM,&nbsp;Mark&nbsp;Nijhof&nbsp;&lt;span&nbsp;dir=&quot;ltr&quot;&gt;&lt;&lt;a&nbsp;href=&quot;mailto:[email protected]&quot;&nbsp;target=&quot;_blank&quot;&gt;[email protected]&lt;/a&gt;&gt;&lt;/span&gt;&nbsp;wrote:&lt;br&gt;<br>
&lt;blockquote&nbsp;class=&quot;gmail_quote&quot;&nbsp;style=&quot;margin:0&nbsp;0&nbsp;0&nbsp;.8ex;border-left:1px&nbsp;#ccc&nbsp;solid;padding-left:1ex&quot;&gt;&lt;div&nbsp;dir=&quot;ltr&quot;&gt;Hi,&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I&nbsp;want&nbsp;to&nbsp;create&nbsp;a&nbsp;module&nbsp;that&nbsp;basically&nbsp;sits&nbsp;between&nbsp;the&nbsp;incoming&nbsp;request&nbsp;and&nbsp;the&nbsp;http&nbsp;handler&nbsp;for&nbsp;that&nbsp;request&nbsp;to&nbsp;ensure&nbsp;a&nbsp;request&nbsp;is&nbsp;authenticated&nbsp;(using&nbsp;a&nbsp;cookie),&nbsp;if&nbsp;the&nbsp;request&nbsp;is&nbsp;not&nbsp;authenticated&nbsp;then&nbsp;I&nbsp;like&nbsp;to&nbsp;redirect&nbsp;to&nbsp;a&nbsp;specific&nbsp;login&nbsp;page&nbsp;(which&nbsp;should&nbsp;not&nbsp;be&nbsp;filtered).&lt;/div&gt;<br>
<br>
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Is&nbsp;this&nbsp;possible&nbsp;with&nbsp;Cowboy?&nbsp;Should&nbsp;I&nbsp;use&nbsp;the&nbsp;onrequest&nbsp;hook&nbsp;(not&nbsp;sure&nbsp;if&nbsp;I&nbsp;can&nbsp;force&nbsp;redirects&nbsp;from&nbsp;there)&nbsp;for&nbsp;that&nbsp;or&nbsp;is&nbsp;there&nbsp;a&nbsp;better&nbsp;way?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Cheers,&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;<br>
<br>
-Mark&lt;span&nbsp;class=&quot;HOEnZb&quot;&gt;&lt;font&nbsp;color=&quot;#888888&quot;&gt;&lt;br&nbsp;clear=&quot;all&quot;&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;--&nbsp;&lt;br&gt;&lt;div&nbsp;dir=&quot;ltr&quot;&gt;Mark&nbsp;Nijhof&lt;br&gt;&lt;div&gt;&lt;div&gt;t:&nbsp;&nbsp;&lt;a&nbsp;href=&quot;https://twitter.com/MarkNijhof&quot;&nbsp;target=&quot;_blank&quot;&gt;@MarkNijhof&lt;/a&gt;&lt;br&gt;s:&nbsp;�marknijhof&lt;/div&gt;<br>
&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;<br>
&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;<br>
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;br&nbsp;clear=&quot;all&quot;&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;--&nbsp;&lt;br&gt;&lt;div&nbsp;dir=&quot;ltr&quot;&gt;Mark&nbsp;Nijhof&lt;br&gt;&lt;div&gt;&lt;div&gt;t:&nbsp;&nbsp;&lt;a&nbsp;href=&quot;https://twitter.com/MarkNijhof&quot;&nbsp;target=&quot;_blank&quot;&gt;@MarkNijhof&lt;/a&gt;&lt;br&gt;s:&nbsp;�marknijhof&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;<br>
&lt;/div&gt;<br>
&lt;/div&gt;<br>

</tt>