Class: Nquery::User

Inherits:
ApplicationRecord show all
Defined in:
app/models/nquery/user.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.find_or_create_from_sso!(host_user) ⇒ Object



39
40
41
42
43
44
45
# File 'app/models/nquery/user.rb', line 39

def self.find_or_create_from_sso!(host_user)
  external_id = host_user.id.to_s
  find_or_create_by!(external_id: external_id) do |user|
    user.email = host_user.try(:email) || "#{external_id}@sso.local"
    user.first_name = host_user.try(:first_name) || host_user.try(:name)
  end.tap(&:ensure_all_users_membership!)
end

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'app/models/nquery/user.rb', line 27

def active?
  deactivated_at.nil?
end

#admin?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'app/models/nquery/user.rb', line 35

def admin?
  Permissions::Resolver.new(self).admin?
end

#deactivate!Object



31
32
33
# File 'app/models/nquery/user.rb', line 31

def deactivate!
  update!(deactivated_at: Time.current)
end

#ensure_all_users_membership!Object



47
48
49
50
# File 'app/models/nquery/user.rb', line 47

def ensure_all_users_membership!
  all_users = Group.find_by!(system_group: "all_users")
  group_memberships.find_or_create_by!(group: all_users)
end

#ensure_personal_collection!Object



52
53
54
55
56
# File 'app/models/nquery/user.rb', line 52

def ensure_personal_collection!
  return personal_collection if personal_collection

  create_personal_collection!(name: "#{name}'s Personal Collection", kind: "personal")
end

#nameObject



23
24
25
# File 'app/models/nquery/user.rb', line 23

def name
  [first_name, last_name].compact_blank.join(" ").presence || email
end