Skip to content

Commit

Permalink
Disable cached_representer on user payload
Browse files Browse the repository at this point in the history
  • Loading branch information
oliverguenther committed Mar 15, 2021
1 parent a7e870b commit 0dbfe08
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 16 deletions.
2 changes: 2 additions & 0 deletions lib/api/v3/users/user_payload_representer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ module V3
module Users
class UserPayloadRepresenter < UserRepresenter
include ::API::Utilities::PayloadRepresenter

cached_representer disabled: true
end
end
end
Expand Down
40 changes: 24 additions & 16 deletions lib/api/v3/users/user_representer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ module V3
module Users
class UserRepresenter < ::API::V3::Principals::PrincipalRepresenter
include AvatarHelper
extend ::API::V3::Utilities::CustomFieldInjector::RepresenterClass

cached_representer key_parts: %i(auth_source),
dependencies: ->(*) { avatar_cache_dependencies }
Expand All @@ -49,7 +50,7 @@ class UserRepresenter < ::API::V3::Principals::PrincipalRepresenter
end

link :updateImmediately,
cache_skip_render: -> { current_user_is_admin } do
cache_if: -> { current_user_is_admin? } do
{
href: api_v3_paths.user(represented.id),
title: "Update #{represented.login}",
Expand All @@ -58,7 +59,7 @@ class UserRepresenter < ::API::V3::Principals::PrincipalRepresenter
end

link :lock,
cache_skip_render: -> { current_user_is_admin } do
cache_if: -> { current_user_is_admin? } do
next unless represented.lockable?

{
Expand All @@ -69,7 +70,7 @@ class UserRepresenter < ::API::V3::Principals::PrincipalRepresenter
end

link :unlock,
cache_skip_render: -> { current_user_is_admin } do
cache_if: -> { current_user_is_admin? } do
next unless represented.activatable?

{
Expand All @@ -80,7 +81,7 @@ class UserRepresenter < ::API::V3::Principals::PrincipalRepresenter
end

link :delete,
cache_skip_render: -> { current_user_can_delete_represented? } do
cache_if: -> { current_user_can_delete_represented? } do
{
href: api_v3_paths.user(represented.id),
title: "Delete #{represented.login}",
Expand All @@ -89,7 +90,7 @@ class UserRepresenter < ::API::V3::Principals::PrincipalRepresenter
end

link :auth_source,
cache_skip_render: -> { current_user_is_admin } do
cache_if: -> { current_user_is_admin? } do
next unless represented.auth_source

{
Expand All @@ -103,7 +104,7 @@ class UserRepresenter < ::API::V3::Principals::PrincipalRepresenter
render_nil: false,
getter: ->(*) { represented.login },
setter: ->(fragment:, represented:, **) { represented.login = fragment },
skip_render: ->(*) { !current_user_can_manage? }
cache_if: -> { current_user_can_manage? }

property :admin,
exec_context: :decorator,
Expand All @@ -112,27 +113,31 @@ class UserRepresenter < ::API::V3::Principals::PrincipalRepresenter
represented.admin?
},
setter: ->(fragment:, represented:, **) { represented.admin = fragment },
skip_render: ->(*) { !current_user_is_admin? }
cache_if: -> { current_user_is_admin? }

property :firstName,
property :firstname,
as: :firstName,
exec_context: :decorator,
getter: ->(*) { represented.firstname },
setter: ->(fragment:, represented:, **) { represented.firstname = fragment },
setter: ->(fragment:, represented:, **) do
represented.firstname = fragment
end,
render_nil: false,
skip_render: ->(*) { !current_user_can_manage? }
cache_if: -> { current_user_can_manage? }

property :lastName,
property :lastname,
as: :lastName,
exec_context: :decorator,
getter: ->(*) { represented.lastname },
setter: ->(fragment:, represented:, **) { represented.lastname = fragment },
render_nil: false,
skip_render: ->(*) { !current_user_can_manage? }
cache_if: -> { current_user_can_manage? }

property :email,
getter: ->(*) { represented.mail },
setter: ->(fragment:, represented:, **) { represented.mail = fragment },
exec_context: :decorator,
skip_render: ->(*) { !(current_user_can_manage? || represented.new_record?) && represented.pref.hide_mail }
cache_if: -> { !represented.pref.hide_mail || represented.new_record? }

property :avatar,
exec_context: :decorator,
Expand All @@ -144,22 +149,25 @@ class UserRepresenter < ::API::V3::Principals::PrincipalRepresenter
setter: ->(fragment:, represented:, **) { represented.status = User.statuses[fragment.to_sym] },
exec_context: :decorator,
render_nil: true,
skip_render: ->(*) { !current_user_can_manage? }
cache_if: -> {
binding.pry
current_user_can_manage?
}

property :identity_url,
exec_context: :decorator,
as: 'identityUrl',
getter: ->(*) { represented.identity_url },
setter: ->(fragment:, represented:, **) { represented.identity_url = fragment },
render_nil: true,
skip_render: ->(*) { !current_user_can_manage? }
cache_if: -> { current_user_can_manage? }

property :language,
exec_context: :decorator,
render_nil: false,
getter: ->(*) { represented.language },
setter: ->(fragment:, represented:, **) { represented.language = fragment },
skip_render: ->(*) { !current_user_can_manage? }
cache_if: -> { current_user_can_manage? }

# Write-only properties

Expand Down

0 comments on commit 0dbfe08

Please sign in to comment.