Class: Biovision::Components::UsersComponent

Inherits:
BaseComponent show all
Includes:
Biovision::Components::Users::Authentication, Biovision::Components::Users::Codes, Biovision::Components::Users::FlagHelpers, Biovision::Components::Users::Validation
Defined in:
app/lib/biovision/components/users_component.rb

Overview

Handling users

Constant Summary collapse

CODE_EMAIL_CONFIRMATION =
'email_confirmation'
CODE_INVITATION =
'invitation'
CODE_PHONE_CONFIRMATION =
'phone_confirmation'
CODE_RECOVERY =
'recovery'
METRIC_AUTH_FAILURE =
'users.auth.failure.hit'
METRIC_NEW_USER =
'users.new_user.hit'
METRIC_REGISTRATION_BOT =
'users.registration.bot.hit'
METRIC_USED_INVITATION =
'users.used_invitation.hit'
SETTING_BOUNCE_COUNT =
'bounce_count'
SETTING_BOUNCE_TIMEOUT =
'bounce_timeout'
SETTING_CONFIRM_EMAIL =
'confirm_email'
SETTING_CONFIRM_PHONE =
'confirm_phone'
SETTING_EMAIL_AS_LOGIN =
'email_as_login'
SETTING_INVITE_COUNT =
'invite_count'
SETTING_INVITE_ONLY =
'invite_only'
SETTING_OPEN =
'registration_open'
SETTING_PHONE_AS_LOGIN =
'phone_as_login'
SETTING_REQUIRE_EMAIL =
'require_email'
SETTING_REQUIRE_PHONE =
'require_phone'
SETTING_USE_INVITES =
'use_invites'
SETTING_USE_PHONE =
'use_phone'

Instance Attribute Summary

Attributes inherited from BaseComponent

#component, #name, #slug, #user

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Biovision::Components::Users::FlagHelpers

#confirm_email?, #confirm_phone?, #email_as_login?, #invite_only?, #needs_email_confirmation?, #needs_phone_confirmation?, #phone_as_login?, #registration_open?, #require_email?, #require_phone?, #use_invites?, #use_phone?

Methods included from Biovision::Components::Users::Codes

#activate_email_confirmation, #activate_invitation, #create_email_confirmation, #create_invitations_for_user, #create_phone_confirmation, #send_email_confirmation, #send_phone_confirmation, #valid_code?, #valid_email_confirmation?, #valid_invitation?, #valid_recovery?

Methods included from Biovision::Components::Users::Validation

#validate

Methods included from Biovision::Components::Users::Authentication

#authenticate

Methods inherited from BaseComponent

[], active?, create, #data_value, #find_or_create_code, form_options, handler, handler_class, #initialize, #new_entity, #register_metric, #settings, #settings=, slug, #update_data_value, #update_entity, #use_settings?

Methods included from Base::ComponentSettings

#default_settings, #normalize_settings, #reset_settings, #settings_flags, #settings_numbers, #settings_strings

Methods included from Base::ImageHandling

#upload_image, #use_images?

Methods included from Base::EntityLinks

#entity_link, #rest_entity_link, #text_for_link

Methods included from Base::ComponentParameters

#[], #[]=, #manage_settings?, #receive, #use_files?, #use_parameters?

Methods included from Base::ComponentPrivileges

#create_roles, #model_from_context, #owner?, #permit?, #role?

Constructor Details

This class inherits a constructor from Biovision::Components::BaseComponent

Class Method Details

.created_user(user) ⇒ Object

Parameters:



73
74
75
76
77
78
# File 'app/lib/biovision/components/users_component.rb', line 73

def self.created_user(user)
  BiovisionComponent.active.pluck(:slug).each do |slug|
    handler = Biovision::Components::BaseComponent.handler_class(slug)
    handler.handle_new_user(user) if handler.respond_to?(:handle_new_user)
  end
end

.default_settingsObject



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'app/lib/biovision/components/users_component.rb', line 54

def self.default_settings
  {
    SETTING_OPEN => true,
    SETTING_EMAIL_AS_LOGIN => false,
    SETTING_PHONE_AS_LOGIN => false,
    SETTING_CONFIRM_EMAIL => false,
    SETTING_REQUIRE_EMAIL => false,
    SETTING_USE_PHONE => false,
    SETTING_REQUIRE_PHONE => false,
    SETTING_CONFIRM_PHONE => false,
    SETTING_INVITE_ONLY => false,
    SETTING_USE_INVITES => false,
    SETTING_INVITE_COUNT => 5,
    SETTING_BOUNCE_COUNT => 10,
    SETTING_BOUNCE_TIMEOUT => 3,
  }
end

.dependent_modelsObject



34
35
36
37
38
39
# File 'app/lib/biovision/components/users_component.rb', line 34

def self.dependent_models
  [
    User, Token, LoginAttempt, UserLanguage, BiovisionComponentUser, Code,
    Notification
  ]
end

.handle_new_user(user) ⇒ Object

Parameters:



81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'app/lib/biovision/components/users_component.rb', line 81

def self.handle_new_user(user)
  handler = new(BiovisionComponent[slug], user)

  return unless handler.use_invites?

  parameters = {
    user: user,
    quantity: handler.settings[SETTING_INVITE_COUNT].to_i
  }

  code = handler.component.codes.new(parameters)
  code.code_type = CODE_INVITATION
  code.save
end

.settings_flagsObject



41
42
43
44
45
46
47
48
# File 'app/lib/biovision/components/users_component.rb', line 41

def self.settings_flags
  [
    SETTING_OPEN, SETTING_EMAIL_AS_LOGIN, SETTING_CONFIRM_EMAIL,
    SETTING_CONFIRM_PHONE, SETTING_PHONE_AS_LOGIN, SETTING_REQUIRE_EMAIL,
    SETTING_REQUIRE_PHONE, SETTING_INVITE_ONLY, SETTING_USE_INVITES,
    SETTING_USE_PHONE
  ]
end

.settings_numbersObject



50
51
52
# File 'app/lib/biovision/components/users_component.rb', line 50

def self.settings_numbers
  [SETTING_INVITE_COUNT, SETTING_BOUNCE_COUNT, SETTING_BOUNCE_TIMEOUT]
end

Instance Method Details

#administrative_partsObject



137
138
139
# File 'app/lib/biovision/components/users_component.rb', line 137

def administrative_parts
  %w[users tokens login_attempts codes notifications]
end

#attribute(attribute_name) ⇒ Object

Parameters:

  • attribute_name (String|Symbol)


121
122
123
124
125
# File 'app/lib/biovision/components/users_component.rb', line 121

def attribute(attribute_name)
  return nil if user.nil?

  user.attributes[attribute_name.to_s]
end

#create_user(user_data, profile_data) ⇒ Object

Parameters:

  • user_data (Hash)
  • profile_data (Hash)


105
106
107
108
109
# File 'app/lib/biovision/components/users_component.rb', line 105

def create_user(user_data, profile_data)
  handler = Users::ProfileHandler.new(self)
  handler.create(user_data, profile_data)
  handler.user
end

#crud_table_namesObject



133
134
135
# File 'app/lib/biovision/components/users_component.rb', line 133

def crud_table_names
  super - %w[user_languages biovision_component_users]
end

#register_user(parameters, code = nil) ⇒ Object

Parameters:

  • parameters (Hash)
  • code (Code|nil) (defaults to: nil)


98
99
100
101
# File 'app/lib/biovision/components/users_component.rb', line 98

def register_user(parameters, code = nil)
  handler = Users::RegistrationHandler.new(self)
  handler.handle(parameters, code)
end

#role_treeObject



127
128
129
130
131
# File 'app/lib/biovision/components/users_component.rb', line 127

def role_tree
  result = super
  result['users'] << 'log_in'
  result
end

#update_user(user, user_data, profile_data) ⇒ Object

Parameters:

  • user (User)
  • user_data (Hash)
  • profile_data (Hash)


114
115
116
117
118
# File 'app/lib/biovision/components/users_component.rb', line 114

def update_user(user, user_data, profile_data)
  handler = Users::ProfileHandler.new(self)
  handler.user = user
  handler.update(user_data, profile_data)
end