Class: Conjoin::AuthToken::Middleware::Responder

Inherits:
Object
  • Object
show all
Defined in:
lib/conjoin/auth_token.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, env) ⇒ Responder

Returns a new instance of Responder.



49
50
51
52
# File 'lib/conjoin/auth_token.rb', line 49

def initialize(app, env)
  @app      = app
  @env      = env
end

Instance Method Details

#respondObject



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/conjoin/auth_token.rb', line 54

def respond
  if req.params['auth_token'] and (auth_token = req.params['auth_token']) and\
     req.params['iv'] and (iv = Base64.decode64(req.params['iv']))

    salt = Base64.decode64(req.params['salt']) if req.params['salt']
    salt ||= nil

    obj = AuthToken.decrypt auth_token, iv, salt

    if Time.now < Time.parse(obj['expires_at'])
      user = AuthToken.settings.klass.constantize.find_by_username obj['username']
      case AuthToken.settings.type.to_sym
      when :warden
        req.env['warden'].set_user(user, scope: :user) if user
      when :shield
        req.session.clear
        req.session[AuthToken.settings.klass] = user.id if user
      end

      res.redirect 'login?return=%2F&sso_error=1' unless user
    end
  end

  res.finish
end