Class: SimpleAuth::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_auth/session.rb

Defined Under Namespace

Classes: Errors

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Session

Returns a new instance of Session.



103
104
105
106
107
108
109
110
111
# File 'lib/simple_auth/session.rb', line 103

def initialize(options = {})
  options ||= {}

  @credential = options[:credential]
  @password = options[:password]
  @controller = SimpleAuth::Config.controller
  @model = SimpleAuth::Config.model_class
  @errors = Errors.new
end

Instance Attribute Details

#controllerObject

Returns the value of attribute controller.



6
7
8
# File 'lib/simple_auth/session.rb', line 6

def controller
  @controller
end

#credentialObject

Returns the value of attribute credential.



3
4
5
# File 'lib/simple_auth/session.rb', line 3

def credential
  @credential
end

#errorsObject

Returns the value of attribute errors.



8
9
10
# File 'lib/simple_auth/session.rb', line 8

def errors
  @errors
end

#modelObject

Returns the value of attribute model.



5
6
7
# File 'lib/simple_auth/session.rb', line 5

def model
  @model
end

#passwordObject

Returns the value of attribute password.



4
5
6
# File 'lib/simple_auth/session.rb', line 4

def password
  @password
end

#recordObject

Returns the value of attribute record.



7
8
9
# File 'lib/simple_auth/session.rb', line 7

def record
  @record
end

Class Method Details

.backup(&block) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/simple_auth/session.rb', line 46

def self.backup(&block)
  backup = controller.session.to_hash.reject do |name, value|
    rejected = [:session_id, session_key].include?(name.to_sym) || SimpleAuth::Config.wipeout_session && name.to_s =~ /^#{SimpleAuth::Config.model}_/
    controller.session.delete(name) if rejected
    rejected
  end

  yield

  backup.each do |name, value|
    controller.session[name.to_sym] = value
  end
end

.controllerObject



84
85
86
# File 'lib/simple_auth/session.rb', line 84

def self.controller
  SimpleAuth::Config.controller
end

.create(options = {}) ⇒ Object



72
73
74
75
76
# File 'lib/simple_auth/session.rb', line 72

def self.create(options = {})
  new(options).tap do |session|
    session.save
  end
end

.create!(options = {}) ⇒ Object



78
79
80
81
82
# File 'lib/simple_auth/session.rb', line 78

def self.create!(options = {})
  new(options).tap do |session|
    session.save!
  end
end

.destroy!Object



88
89
90
91
92
93
94
95
96
97
# File 'lib/simple_auth/session.rb', line 88

def self.destroy!
  [:session_id, session_key].each {|name| controller.session.delete(name) }

  controller.instance_variable_set("@current_user", nil)
  controller.instance_variable_set("@current_session", nil)

  backup { controller.reset_session }

  true
end

.findObject



60
61
62
63
64
65
66
67
68
69
70
# File 'lib/simple_auth/session.rb', line 60

def self.find
  return unless controller && record_id
  session = new
  session.record = session.model.find_by_id(record_id)

  if session.record
    session
  else
    nil
  end
end

.model_nameObject



99
100
101
# File 'lib/simple_auth/session.rb', line 99

def self.model_name
  ActiveModel::Name.new(self)
end

.record_idObject



42
43
44
# File 'lib/simple_auth/session.rb', line 42

def self.record_id
  controller && controller.session[session_key]
end

.session_keyObject



38
39
40
# File 'lib/simple_auth/session.rb', line 38

def self.session_key
  "#{SimpleAuth::Config.model.to_s}_id".to_sym
end

Instance Method Details

#destroyObject



154
155
156
157
158
159
# File 'lib/simple_auth/session.rb', line 154

def destroy
  @record = nil
  @credential = nil
  @password = nil
  self.class.destroy!
end

#new_record?Boolean

Returns:

  • (Boolean)


117
118
119
# File 'lib/simple_auth/session.rb', line 117

def new_record?
  record.nil?
end

#persisted?Boolean

Returns:

  • (Boolean)


121
122
123
# File 'lib/simple_auth/session.rb', line 121

def persisted?
  !new_record?
end

#saveObject



139
140
141
142
143
144
# File 'lib/simple_auth/session.rb', line 139

def save
  self.class.destroy!

  controller.session[self.class.session_key] = record.id if valid?
  controller.session[self.class.session_key] != nil
end

#save!Object



146
147
148
149
150
151
152
# File 'lib/simple_auth/session.rb', line 146

def save!
  if valid?
    save
  else
    raise SimpleAuth::NotAuthorized
  end
end

#to_keyObject



113
114
115
# File 'lib/simple_auth/session.rb', line 113

def to_key
  nil
end

#valid?Boolean

Returns:

  • (Boolean)


125
126
127
128
129
130
131
132
133
# File 'lib/simple_auth/session.rb', line 125

def valid?
  if record && controller.send(:authorized?)
    true
  else
    errors.add_to_base I18n.translate("simple_auth.sessions.invalid_credentials")
    self.class.destroy!
    false
  end
end