Class: SwitchUser::Provider::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/switch_user/provider/base.rb

Instance Method Summary collapse

Instance Method Details

#clear_original_userObject



55
56
57
# File 'lib/switch_user/provider/base.rb', line 55

def clear_original_user
  @controller.session.delete(:original_user_scope_identifier)
end

#current_user?(user, scope = :user) ⇒ Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/switch_user/provider/base.rb', line 59

def current_user?(user, scope = :user)
  current_user(scope) == user
end

#current_users_without_scopeObject



6
7
8
9
10
11
# File 'lib/switch_user/provider/base.rb', line 6

def current_users_without_scope
  SwitchUser.available_scopes.each_with_object([]) do |scope, users|
    user = current_user(scope)
    users << user if user
  end
end

#login_exclusive(user, args) ⇒ Object



13
14
15
16
17
18
# File 'lib/switch_user/provider/base.rb', line 13

def (user, args)
  requested_scope = args.fetch(:scope, :user).to_sym

  logout_all
  (user, requested_scope)
end

#login_inclusive(user, args) ⇒ Object



20
21
22
23
24
25
# File 'lib/switch_user/provider/base.rb', line 20

def (user, args)
  requested_scope = args.fetch(:scope, :user).to_sym

  logout(requested_scope)
  (user, requested_scope)
end

#logout_allObject



27
28
29
30
31
# File 'lib/switch_user/provider/base.rb', line 27

def logout_all
  SwitchUser.available_scopes.each do |scope|
    logout(scope)
  end
end

#original_userObject



33
34
35
36
37
# File 'lib/switch_user/provider/base.rb', line 33

def original_user
  user_identifier = @controller.session[:original_user_scope_identifier]

  UserLoader.prepare(scope_identifier: user_identifier).user if user_identifier
end

#original_user=(user) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/switch_user/provider/base.rb', line 39

def original_user=(user)
  user_type = user.class.to_s.underscore
  column_name = SwitchUser.available_users_identifiers[user_type.to_sym]
  user_identifier = "#{user_type}_#{user.send(column_name)}"

  @controller.session[:original_user_scope_identifier] = user_identifier
end

#remember_current_user(remember) ⇒ Object



47
48
49
50
51
52
53
# File 'lib/switch_user/provider/base.rb', line 47

def remember_current_user(remember)
  if remember
    self.original_user = current_user
  else
    clear_original_user
  end
end