Commit 71129f1093d0aa17600fcf38c23d0ec3f71c2f36
1 parent
9c7cf5bc
Exists in
theme-brasil-digital-from-staging
and in
4 other branches
Fix merge
Showing
2 changed files
with
21 additions
and
4 deletions
Show diff stats
lib/noosfero/api/entities.rb
... | ... | @@ -183,15 +183,14 @@ module Noosfero |
183 | 183 | class User < Entity |
184 | 184 | root 'users', 'user' |
185 | 185 | |
186 | - attrs = [:id,:login,:email,:activated?] | |
187 | - aliases = {:activated? => :activated} | |
186 | + attrs = [:id,:login,:email] | |
188 | 187 | |
189 | 188 | attrs.each do |attribute| |
190 | - name = aliases.has_key?(attribute) ? aliases[attribute] : attribute | |
191 | - expose attribute, :as => name, :if => lambda{|user,options| Entities.can_display?(user.person, options, attribute)} | |
189 | + expose attribute, :if => lambda{|user,options| Entities.can_display?(user.person, options, attribute)} | |
192 | 190 | end |
193 | 191 | |
194 | 192 | expose :person, :using => Person |
193 | + expose :activated?, as: :activated | |
195 | 194 | expose :permissions, :if => lambda{|user,options| Entities.can_display?(user.person, options, :permissions, :self)} do |user, options| |
196 | 195 | output = {} |
197 | 196 | user.person.role_assignments.map do |role_assigment| | ... | ... |
lib/noosfero/api/helpers.rb
... | ... | @@ -20,6 +20,16 @@ require_relative '../../find_by_contents' |
20 | 20 | plugins |
21 | 21 | end |
22 | 22 | |
23 | + def current_tmp_user | |
24 | + private_token = (params[PRIVATE_TOKEN_PARAM] || headers['Private-Token']).to_s | |
25 | + @current_tmp_user = Noosfero::API::CaptchaSessionStore.get(private_token) | |
26 | + @current_tmp_user | |
27 | + end | |
28 | + | |
29 | + def logout_tmp_user | |
30 | + @current_tmp_user = nil | |
31 | + end | |
32 | + | |
23 | 33 | def current_user |
24 | 34 | private_token = (params[PRIVATE_TOKEN_PARAM] || headers['Private-Token']).to_s |
25 | 35 | @current_user ||= User.find_by_private_token(private_token) |
... | ... | @@ -273,6 +283,12 @@ require_relative '../../find_by_contents' |
273 | 283 | unauthorized! unless current_user |
274 | 284 | end |
275 | 285 | |
286 | + # Allows the anonymous captcha user authentication | |
287 | + # to pass the check. Used by the articles/vote to allow | |
288 | + # the vote without login | |
289 | + def authenticate_allow_captcha! | |
290 | + unauthorized! unless current_tmp_user || current_user | |
291 | + end | |
276 | 292 | |
277 | 293 | # Checks the occurrences of uniqueness of attributes, each attribute must be present in the params hash |
278 | 294 | # or a Bad Request error is invoked. |
... | ... | @@ -348,6 +364,8 @@ require_relative '../../find_by_contents' |
348 | 364 | |
349 | 365 | def set_session_cookie |
350 | 366 | cookies['_noosfero_api_session'] = { value: @current_user.private_token, httponly: true } if @current_user.present? |
367 | + # Set also the private_token for the current_tmp_user | |
368 | + cookies['_noosfero_api_session'] = { value: @current_tmp_user.private_token, httponly: true } if @current_tmp_user.present? | |
351 | 369 | end |
352 | 370 | |
353 | 371 | def setup_multitenancy | ... | ... |