Class: Mumukit::Login::Mucookie

Inherits:
Object
  • Object
show all
Defined in:
lib/mumukit/login/mucookie.rb

Defined Under Namespace

Modules: Encryptor

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(controller) ⇒ Mucookie



4
5
6
# File 'lib/mumukit/login/mucookie.rb', line 4

def initialize(controller)
  @controller = controller
end

Class Method Details



48
49
50
51
52
53
54
# File 'lib/mumukit/login/mucookie.rb', line 48

def self.cookie_same_site
  if %w(RACK_ENV RAILS_ENV).any? { |it| ENV[it] == 'production' }
    :none
  else
    :lax
  end
end

Instance Method Details

#decode_and_read(key) ⇒ Object



32
33
34
# File 'lib/mumukit/login/mucookie.rb', line 32

def decode_and_read(key)
  Base64.decode64 read(key)
end

#decrypt_and_read(key) ⇒ Object



28
29
30
# File 'lib/mumukit/login/mucookie.rb', line 28

def decrypt_and_read(key)
  Encryptor.decrypt read(key)
end

#delete!(key) ⇒ Object



36
37
38
# File 'lib/mumukit/login/mucookie.rb', line 36

def delete!(key)
  @controller.delete_cookie! cookie_name(key), Mumukit::.config.mucookie_domain
end

#encode_and_write!(key, value, options = {}) ⇒ Object



20
21
22
# File 'lib/mumukit/login/mucookie.rb', line 20

def encode_and_write!(key, value, options={})
  write! key, Base64.encode64(value), options
end

#encrypt_and_write!(key, value, options = {}) ⇒ Object



16
17
18
# File 'lib/mumukit/login/mucookie.rb', line 16

def encrypt_and_write!(key, value, options={})
  write! key, Encryptor.encrypt(value), options
end

#read(key) ⇒ Object



24
25
26
# File 'lib/mumukit/login/mucookie.rb', line 24

def read(key)
  @controller.read_cookie cookie_name(key)
end

#specObject



40
41
42
43
44
45
46
# File 'lib/mumukit/login/mucookie.rb', line 40

def spec
  {
    path: '/',
    expires: Mumukit::.config.mucookie_duration.days.since,
    domain: Mumukit::.config.mucookie_domain
  }
end

#write!(key, value, options = {}) ⇒ Object



8
9
10
11
12
13
14
# File 'lib/mumukit/login/mucookie.rb', line 8

def write!(key, value, options={})
  @controller.write_cookie! cookie_name(key),
                            spec.merge(
                              value: value.to_s,
                              httponly: !!options[:httponly],
                              same_site: self.class.cookie_same_site)
end