@@ -1671,41 +1671,12 @@ defmodule Plug.Conn do
16711671 def put_resp_cookie ( % Conn { } = conn , key , value , opts \\ [ ] )
16721672 when is_binary ( key ) and is_list ( opts ) do
16731673 % { resp_cookies: resp_cookies , scheme: scheme } = conn
1674- { to_send_value , opts } = maybe_sign_or_encrypt_cookie ( conn , key , value , opts )
1674+ { to_send_value , opts } = Plug.Conn.Cookies . sign_or_encrypt ( conn , key , value , opts )
16751675 cookie = [ { :value , to_send_value } | opts ] |> Map . new ( ) |> maybe_secure_cookie ( scheme )
16761676 resp_cookies = Map . put ( resp_cookies , key , cookie )
16771677 update_cookies ( % { conn | resp_cookies: resp_cookies } , & Map . put ( & 1 , key , value ) )
16781678 end
16791679
1680- @ doc false
1681- def maybe_sign_or_encrypt_cookie ( % Conn { } = conn , key , value , opts ) do
1682- { sign? , opts } = Keyword . pop ( opts , :sign , false )
1683- { encrypt? , opts } = Keyword . pop ( opts , :encrypt , false )
1684-
1685- case { sign? , encrypt? } do
1686- { true , true } ->
1687- raise ArgumentError ,
1688- ":encrypt automatically implies :sign. Please pass only one or the other"
1689-
1690- { true , false } ->
1691- { Plug.Crypto . sign ( conn . secret_key_base , key <> "_cookie" , value , max_age ( opts ) ) , opts }
1692-
1693- { false , true } ->
1694- { Plug.Crypto . encrypt ( conn . secret_key_base , key <> "_cookie" , value , max_age ( opts ) ) , opts }
1695-
1696- { false , false } when is_binary ( value ) ->
1697- { value , opts }
1698-
1699- { false , false } ->
1700- raise ArgumentError , "cookie value must be a binary unless the cookie is signed/encrypted"
1701- end
1702- end
1703-
1704- defp max_age ( opts ) do
1705- max_age = Keyword . get ( opts , :max_age ) || 86400
1706- [ keys: Plug.Keys , max_age: max_age ]
1707- end
1708-
17091680 defp maybe_secure_cookie ( cookie , :https ) , do: Map . put_new ( cookie , :secure , true )
17101681 defp maybe_secure_cookie ( cookie , _ ) , do: cookie
17111682
0 commit comments