Repository URL to install this package:
Version:
2.1.0 ▾
|
# frozen_string_literal: true
require 'delegate'
require 'gem_config'
require 'sinatra/base'
require 'sinatra/impersonate/impersonator'
require 'sinatra/impersonate/version'
# Sinatra module
module Sinatra
# Allow impersonation of users by other users
module Impersonate
include GemConfig::Base
with_configuration do
has :permission, classes: Symbol
end
def self.registered(app) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
app.get '/impersonate/stop' do
@logged_in_user.stop_impersonating
redirect back
end
app.post '/impersonate' do
raise http_status(403) if params[:username].nil?
unless @logged_in_user.can_impersonate? params[:username]
raise http_status(403, 'You do not have permission to impersonate that user')
end
@logged_in_user.impersonate params[:username]
redirect back
end
end
end
register Impersonate
end