Class: Reactor::Session

Inherits:
Object
  • Object
show all
Includes:
Observable
Defined in:
lib/reactor/session.rb,
lib/reactor/session/user.rb,
lib/reactor/session/observers.rb

Defined Under Namespace

Modules: Observers Classes: State, User

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(state = State.new) ⇒ Session

Returns a new instance of Session.



21
22
23
# File 'lib/reactor/session.rb', line 21

def initialize(state=State.new)
  self.initialize_and_notify(state)
end

Class Method Details

.for(user_name) ⇒ Object



37
38
39
# File 'lib/reactor/session.rb', line 37

def self.for(user_name)
  self.new(State.new(user_name, nil))
end

.instanceObject



33
34
35
# File 'lib/reactor/session.rb', line 33

def self.instance
  self.for(Reactor::Configuration.xml_access[:username])
end

Instance Method Details

#destroyObject



47
48
49
# File 'lib/reactor/session.rb', line 47

def destroy
  self.session_id = self.user_name = nil
end

#logged_in?(session_id) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/reactor/session.rb', line 51

def logged_in?(session_id)
  self.session_id.present? && self.user? && self.session_id == session_id
end

#login(session_id) ⇒ Object



41
42
43
44
45
# File 'lib/reactor/session.rb', line 41

def (session_id)
  if !logged_in?(session_id)
    self.user_name = authenticate(session_id)
  end
end

#marshal_dumpObject



69
70
71
# File 'lib/reactor/session.rb', line 69

def marshal_dump
  self.state.serialize
end

#marshal_load(array) ⇒ Object



73
74
75
# File 'lib/reactor/session.rb', line 73

def marshal_load(array)
  self.initialize_and_notify(State.deserialize(array))
end

#session_idObject



29
30
31
# File 'lib/reactor/session.rb', line 29

def session_id
  self.state.session_id
end

#userObject



59
60
61
# File 'lib/reactor/session.rb', line 59

def user
  Reactor::Cache::User.instance.get(self.user_name)
end

#user?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/reactor/session.rb', line 55

def user?
  self.user_name.present?
end

#user_nameObject



25
26
27
# File 'lib/reactor/session.rb', line 25

def user_name
  self.state.user_name
end

#user_name=(new_user_name) ⇒ Object



63
64
65
66
67
# File 'lib/reactor/session.rb', line 63

def user_name=(new_user_name)
  self.state.user_name = new_user_name
  self.proper_notify_observers(new_user_name, true)
  new_user_name
end