Class: ProxES::Middleware::Security
- Inherits:
-
Object
- Object
- ProxES::Middleware::Security
- Defined in:
- lib/proxes/middleware/security.rb
Instance Attribute Summary collapse
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
Instance Method Summary collapse
- #authorize(request) ⇒ Object
- #call(env) ⇒ Object
- #check_basic(request) ⇒ Object
-
#initialize(app, logger = nil) ⇒ Security
constructor
A new instance of Security.
- #log(request, stage) ⇒ Object
- #policy_scope(request) ⇒ Object
Constructor Details
Instance Attribute Details
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
12 13 14 |
# File 'lib/proxes/middleware/security.rb', line 12 def logger @logger end |
Instance Method Details
#authorize(request) ⇒ Object
43 44 45 |
# File 'lib/proxes/middleware/security.rb', line 43 def (request) Pundit.(request.user, request, request.request_method.downcase + '?') end |
#call(env) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/proxes/middleware/security.rb', line 19 def call(env) request = ProxES::Request.from_env(env) log(request, 'BEFORE') check_basic request request request.index = policy_scope(request) if request.indices? log(request, 'AFTER') @app.call env end |
#check_basic(request) ⇒ Object
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/proxes/middleware/security.rb', line 32 def check_basic(request) auth = Rack::Auth::Basic::Request.new(request.env) return false unless auth.provided? && auth.basic? identity = ::Ditty::Identity.find(username: auth.credentials[0]) identity ||= ::Ditty::Identity.find(username: CGI.unescape(auth.credentials[0])) return false unless identity && identity.authenticate(auth.credentials[1]) request.env['rack.session'] ||= {} request.env['rack.session']['user_id'] = identity.user_id end |
#log(request, stage) ⇒ Object
51 52 53 54 55 56 |
# File 'lib/proxes/middleware/security.rb', line 51 def log(request, stage) logger.debug '============' + stage.ljust(56) + '============' logger.debug '= ' + "Request: #{request.detail}".ljust(76) + ' =' logger.debug '= ' + "Endpoint: #{request.endpoint}".ljust(76) + ' =' logger.debug '================================================================================' end |
#policy_scope(request) ⇒ Object
47 48 49 |
# File 'lib/proxes/middleware/security.rb', line 47 def policy_scope(request) Pundit.policy_scope(request.user, request) end |