Sha256: a420c152e3f9f22a60cab669489f6d84853acbe4f9d91644cc62a3c212fe6c9d
Contents?: true
Size: 1.12 KB
Versions: 38
Compression:
Stored size: 1.12 KB
Contents
module Actions module Middleware class KeepCurrentUser < Dynflow::Middleware def delay(*args) pass(*args).tap { store_current_user } end def plan(*args) with_current_user do pass(*args).tap { store_current_user } end end def run(*args) restore_curent_user { pass(*args) } end def finalize restore_curent_user { pass } end # Run all execution plan lifecycle hooks as the original user def hook(*args) restore_curent_user { pass(*args) } end private def with_current_user if User.current || action.input[:current_user_id].nil? yield else restore_curent_user { yield } end end def store_current_user action.input[:current_user_id] = User.current.try(:id) end def restore_curent_user old_user = User.current User.current = User.unscoped.find(action.input[:current_user_id]) if action.input[:current_user_id].present? yield ensure User.current = old_user end end end end
Version data entries
38 entries across 38 versions & 1 rubygems