Commit 4921dc6e489722f12e61591dc6d0fb7805c5b225

Authored by Victor Costa
Committed by Rodrigo Souto
1 parent 5a875c90

api: set session cookie

lib/noosfero/api/api.rb
@@ -10,6 +10,7 @@ module Noosfero @@ -10,6 +10,7 @@ module Noosfero
10 before { setup_multitenancy } 10 before { setup_multitenancy }
11 before { detect_stuff_by_domain } 11 before { detect_stuff_by_domain }
12 after { end_log } 12 after { end_log }
  13 + after { set_session_cookie }
13 14
14 version 'v1' 15 version 'v1'
15 prefix "api" 16 prefix "api"
lib/noosfero/api/helpers.rb
@@ -9,7 +9,7 @@ module Noosfero @@ -9,7 +9,7 @@ module Noosfero
9 end 9 end
10 10
11 def current_user 11 def current_user
12 - private_token = (params[PRIVATE_TOKEN_PARAM] || headers['Private-Token']).to_s if params 12 + private_token = (params[PRIVATE_TOKEN_PARAM] || headers['Private-Token'] || cookies['_noosfero_api_session']).to_s if params
13 @current_user ||= User.find_by_private_token(private_token) 13 @current_user ||= User.find_by_private_token(private_token)
14 @current_user = nil if !@current_user.nil? && @current_user.private_token_expired? 14 @current_user = nil if !@current_user.nil? && @current_user.private_token_expired?
15 @current_user 15 @current_user
@@ -146,7 +146,11 @@ module Noosfero @@ -146,7 +146,11 @@ module Noosfero
146 render_api_error!(messages.join(','), 400) 146 render_api_error!(messages.join(','), 400)
147 end 147 end
148 protected 148 protected
149 - 149 +
  150 + def set_session_cookie
  151 + cookies['_noosfero_api_session'] = { value: @current_user.private_token, httponly: true } if @current_user.present?
  152 + end
  153 +
150 def start_log 154 def start_log
151 logger.info "Started #{request.path} #{request.params.except('password')}" 155 logger.info "Started #{request.path} #{request.params.except('password')}"
152 end 156 end
lib/noosfero/api/session.rb
@@ -16,6 +16,7 @@ module Noosfero @@ -16,6 +16,7 @@ module Noosfero
16 16
17 return unauthorized! unless user 17 return unauthorized! unless user
18 user.generate_private_token! 18 user.generate_private_token!
  19 + @current_user = user
19 present user, :with => Entities::UserLogin 20 present user, :with => Entities::UserLogin
20 end 21 end
21 22