bpluser 0.1.18 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +33 -0
  3. data/Rakefile +34 -3
  4. data/app/assets/config/bpluser_manifest.js +1 -0
  5. data/app/assets/javascripts/bpluser/folder_tools.js +26 -0
  6. data/app/controllers/bookmarks_controller.rb +50 -0
  7. data/app/controllers/concerns/bpluser/folders_verify_user.rb +20 -0
  8. data/app/controllers/concerns/bpluser/omniauth_callbacks.rb +27 -0
  9. data/app/controllers/concerns/bpluser/registrations.rb +35 -0
  10. data/app/controllers/concerns/bpluser/saved_searches.rb +62 -0
  11. data/app/controllers/folder_items_actions_controller.rb +77 -0
  12. data/app/controllers/folder_items_controller.rb +97 -0
  13. data/app/controllers/folders_controller.rb +100 -0
  14. data/app/controllers/saved_searches_controller.rb +5 -0
  15. data/app/controllers/users/omniauth_callbacks_controller.rb +7 -0
  16. data/app/controllers/users/registrations_controller.rb +7 -0
  17. data/app/controllers/users/sessions_controller.rb +6 -0
  18. data/app/controllers/users_controller.rb +25 -0
  19. data/app/helpers/bpluser/folders_helper_behavior.rb +11 -0
  20. data/app/helpers/folders_helper.rb +5 -0
  21. data/app/models/bpluser/folder.rb +21 -10
  22. data/app/models/bpluser/folder_item.rb +5 -7
  23. data/app/models/concerns/bpluser/users.rb +71 -0
  24. data/app/models/concerns/bpluser/validatable.rb +34 -0
  25. data/app/views/bookmarks/index.html.erb +58 -0
  26. data/app/views/bookmarks/update.js.erb +1 -0
  27. data/app/views/bpluser/folders/_folder.html.erb +36 -0
  28. data/app/views/catalog/_constraints.html.erb +14 -0
  29. data/app/views/catalog/_folder_item_control.html.erb +52 -0
  30. data/app/views/catalog/_save_search.html.erb +8 -0
  31. data/app/views/devise/confirmations/new.html.erb +14 -0
  32. data/app/views/devise/mailer/reset_password_instructions.html.erb +13 -0
  33. data/app/views/devise/passwords/edit.html.erb +32 -0
  34. data/app/views/devise/passwords/new.html.erb +30 -0
  35. data/app/views/devise/registrations/edit.html.erb +82 -0
  36. data/app/views/devise/registrations/new.html.erb +45 -0
  37. data/app/views/devise/sessions/new.html.erb +72 -0
  38. data/app/views/devise/shared/_links.erb +29 -0
  39. data/app/views/folder_items/create.js.erb +1 -0
  40. data/app/views/folder_items/destroy.js.erb +1 -0
  41. data/app/views/folder_items/item_actions.js.erb +2 -0
  42. data/app/views/folder_items/update.js.erb +1 -0
  43. data/app/views/folders/_in_folder.html.erb +3 -0
  44. data/app/views/folders/_new_edit_form_fields.html.erb +36 -0
  45. data/app/views/folders/edit.html.erb +25 -0
  46. data/app/views/folders/index.html.erb +67 -0
  47. data/app/views/folders/new.html.erb +26 -0
  48. data/app/views/folders/public_list.html.erb +41 -0
  49. data/app/views/folders/show.html.erb +82 -0
  50. data/app/views/saved_searches/index.html.erb +55 -0
  51. data/app/views/search_history/index.html.erb +57 -0
  52. data/app/views/shared/_folder_item_actions.html.erb +54 -0
  53. data/app/views/shared/_folder_tools.html.erb +4 -0
  54. data/app/views/shared/_tools.html.erb +16 -0
  55. data/app/views/shared/_user_util_links.html.erb +42 -0
  56. data/app/views/users/show.html.erb +33 -0
  57. data/config/locales/bpluser.en.yml +129 -0
  58. data/config/routes.rb +23 -2
  59. data/lib/bpluser/controller.rb +61 -0
  60. data/lib/bpluser/devise_guests_override.rb +21 -0
  61. data/lib/bpluser/engine.rb +27 -1
  62. data/lib/bpluser/version.rb +3 -1
  63. data/lib/bpluser.rb +21 -15
  64. data/lib/generators/bpluser/controller_generator.rb +29 -0
  65. data/lib/generators/bpluser/devise_generator.rb +40 -0
  66. data/lib/generators/bpluser/install_generator.rb +62 -0
  67. data/lib/generators/bpluser/templates/config/initializers/{devise.rb → devise.rb.bak} +0 -0
  68. data/lib/generators/bpluser/templates/config/locales/devise.en.yml +53 -0
  69. data/lib/generators/bpluser/templates/config/omniauth-polaris.yml +10 -15
  70. data/lib/generators/bpluser/templates/models/user.rb +3 -4
  71. data/lib/generators/bpluser/user_generator.rb +23 -0
  72. data/lib/tasks/bpluser_tasks.rake +27 -0
  73. metadata +131 -163
  74. data/app/controllers/bpluser/api_controller.rb +0 -8
  75. data/app/controllers/bpluser/users/omniauth_callbacks_controller.rb +0 -48
  76. data/app/controllers/bpluser/users/registrations_controller.rb +0 -35
  77. data/app/controllers/bpluser/users/sessions_controller.rb +0 -23
  78. data/app/models/bpluser/ability.rb +0 -22
  79. data/app/models/bpluser/application_record.rb +0 -5
  80. data/app/models/bpluser/concerns/users.rb +0 -190
  81. data/app/models/bpluser/concerns/validatable.rb +0 -47
  82. data/app/models/bpluser/user.rb~ +0 -213
  83. data/app/models/bpluser/user_institution.rb +0 -6
  84. data/app/models/bpluser/validatable.rb~ +0 -65
  85. data/lib/bpluser/routes.rb +0 -37
  86. data/lib/generators/bpluser/bpluser_generator.rb +0 -183
  87. data/lib/generators/bpluser/templates/config/hydra-ldap.yml +0 -33
  88. data/lib/generators/bpluser/templates/config/omniauth-facebook.yml +0 -14
  89. data/lib/generators/bpluser/templates/controllers/users/omniauth_callbacks_controller.rb +0 -3
  90. data/lib/generators/bpluser/templates/controllers/users/registrations_controller.rb +0 -3
  91. data/lib/generators/bpluser/templates/controllers/users/sessions_controller.rb +0 -3
  92. data/lib/generators/bpluser/templates/migrations/add_fields_to_user.rb +0 -22
  93. data/lib/generators/bpluser/templates/migrations/add_folder_items_to_folder.rb +0 -18
  94. data/lib/generators/bpluser/templates/migrations/add_folders_to_user.rb +0 -14
  95. data/lib/generators/bpluser/templates/migrations/create_institutions_for_users.rb +0 -16
  96. data/lib/generators/bpluser/templates/models/ability.rb +0 -4
  97. data/lib/generators/bpluser/templates/views/devise/registrations/edit.html.erb +0 -0
  98. data/lib/generators/bpluser/templates/views/devise/registrations/new.html.erb +0 -24
  99. data/lib/generators/bpluser/templates/views/devise/sessions/new.html.erb +0 -17
@@ -1,190 +0,0 @@
1
- module Bpluser
2
- module Concerns
3
- module Users
4
- #Changed this to a concern so the modules can resolve better
5
- extend ActiveSupport::Concern
6
- include Validatable
7
- #included
8
- included do
9
- devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :omniauthable, :omniauth_providers => [:ldap, :polaris, :facebook]
10
-
11
- has_many :user_institutions, inverse_of: :user, :class_name => "Bpluser::UserInstitution" #Is this deprecated? Seems like it.
12
-
13
- has_many :folders, inverse_of: :user, :dependent => :destroy, :class_name => "Bpluser::Folder"
14
- has_many :folder_items, through: :folders, class_name: "Bpluser::FolderItem"
15
-
16
- #BEGIN INSTANCE METHODS
17
- def to_s
18
- self.name
19
- end
20
-
21
- def name
22
- return self.username rescue self.display_name.try(:titleize)
23
- end
24
-
25
- def user_key
26
- send(Devise.authentication_keys.first)
27
- end
28
-
29
-
30
- def ldap_groups
31
- #Hydra::LDAP.groups_for_user(username + ",dc=psu,dc=edu")
32
- #['archivist', 'admin_policy_object_editor']
33
-
34
- Hydra::LDAP.groups_for_user(Net::LDAP::Filter.eq('samaccountname', self.username), ['memberOf']) { |result| result.first[:memberOf].select{ |y| y.starts_with? 'CN=' }.map{ |x| x.sub(/^CN=/, '').sub(/,OU=Private Groups,DC=private,DC=bpl,DC=org/, '').sub(/,OU=Distribution Lists/, '').sub(/,OU=Security Groups/, '') } } rescue []
35
- end
36
-
37
- def populate_attributes
38
- end
39
-
40
- def default_user_groups
41
- # # everyone is automatically a member of the group 'public'
42
- #['public', 'test']
43
- end
44
-
45
- def get_uploads_collection
46
- query="rightsMetadata_edit_access_machine_person_t:#{uid} AND title_s:Uploads AND has_model_s:info\\:fedora/afmodel\\:DILCollection"
47
- ActiveFedora::SolrService.query(query, {:fl=>'id title_t'})
48
- end
49
-
50
- def get_details_collection
51
- query="rightsMetadata_edit_access_machine_person_t:#{uid} AND title_s:Details AND has_model_s:info\\:fedora/afmodel\\:DILCollection"
52
- ActiveFedora::SolrService.query(query, {:fl=>'id title_t'})
53
- end
54
-
55
- def collections
56
- query="rightsMetadata_edit_access_machine_person_t:#{uid} AND NOT title_t:Uploads AND NOT title_t:Details AND has_model_s:info\\:fedora/afmodel\\:DILCollection"
57
- ActiveFedora::SolrService.query(query, {:fl=>'id title_t'})
58
- end
59
-
60
- def existing_folder_item_for (document_id)
61
- self.get_folder_item(document_id)
62
- end
63
-
64
- def get_folder_item (document_id)
65
- self.folder_items.where(document_id: document_id).first if self.folder_items.where(document_id: document_id).exists?
66
- end
67
-
68
- def superuser?
69
- roles.where(name: 'superuser').exists?
70
- end
71
-
72
- def permanent_account?
73
- self.provider != 'digital_stacks_temporary'
74
- end
75
-
76
- def email_not_required?
77
- self.provider != 'digital_stacks_temporary' and self.provider != 'polaris'
78
- end
79
- #END INSTANCE METHODS
80
- end
81
-
82
-
83
-
84
-
85
- #BEGIN CLASS METHODS
86
- class_methods do
87
- def find_for_ldap_oauth(auth_response, signed_in_resource=nil)
88
-
89
- ldap_raw_details = auth_response[:extra][:raw_info]
90
- ldap_info_details = auth_response[:info]
91
-
92
- user = User.where(:provider => auth_response.provider, :uid => ldap_raw_details.samaccountname[0].downcase).first
93
-
94
- #first_name:ldap_info_details.first_name,
95
- #last_name:ldap_info_details.last_name,
96
- unless user
97
- user = User.create(provider:auth_response.provider,
98
- uid:ldap_raw_details.samaccountname[0].downcase,
99
- username:ldap_raw_details.samaccountname[0].downcase,
100
- email:ldap_raw_details.mail[0].to_s.downcase,
101
- password:Devise.friendly_token[0,20],
102
- display_name: ldap_info_details.first_name + " " + ldap_info_details.last_name,
103
- first_name: ldap_info_details.first_name,
104
- last_name: ldap_info_details.last_name
105
- )
106
- end
107
- groups = user.ldap_groups
108
- groups.each do |group|
109
- if(group == "Repository Administrators")
110
- superuser_role = Role.where(:name=>'superuser').first
111
- if(superuser_role == nil)
112
- superuser_role = Role.create(:name=>"superuser")
113
- end
114
- user.roles << superuser_role unless user.roles.include?(superuser_role)
115
- user.save!
116
-
117
- admin_role = Role.where(:name=>'admin').first
118
- if(admin_role == nil)
119
- admin_role = Role.create(:name=>"admin")
120
- end
121
- user.roles << admin_role unless user.roles.include?(admin_role)
122
- user.save!
123
- end
124
- end
125
- user
126
- end
127
-
128
- def find_for_polaris_oauth(auth_response, signed_in_resource=nil)
129
- polaris_raw_details = auth_response[:extra][:raw_info]
130
- polaris_info_details = auth_response[:info]
131
-
132
- user = User.where(:provider => auth_response.provider, :uid => auth_response[:uid]).first
133
-
134
- #first_name:ldap_info_details.first_name,
135
- #last_name:ldap_info_details.last_name,
136
- unless user
137
- email_value = polaris_info_details[:email].present? ? polaris_info_details[:email] : ''
138
- #For some reason, User.create has no id set despite that intending to be autocreated. Unsure what is up with that. So trying this.
139
- user = User.new(provider:auth_response.provider,
140
- uid:auth_response[:uid],
141
- username:polaris_info_details[:first_name],
142
- email:email_value,
143
- password:Devise.friendly_token[0,20],
144
- display_name:polaris_info_details[:first_name] + " " + polaris_info_details[:last_name],
145
- first_name: polaris_info_details[:first_name],
146
- last_name: polaris_info_details[:last_name]
147
-
148
- )
149
- user.save!
150
-
151
- end
152
- user
153
- end
154
-
155
- def find_for_facebook_oauth(auth, signed_in_resource=nil)
156
- user = User.where(:provider => auth.provider, :uid => auth.uid).first
157
- unless user
158
- user = User.create(display_name:auth.extra.raw_info.name,
159
- uid:auth.uid,
160
- provider:auth.provider,
161
- username:auth.info.nickname,
162
- email:auth.info.email,
163
- password:Devise.friendly_token[0,20] ,
164
- first_name:auth.extra.raw_info.first_name,
165
- last_name:auth.extra.raw_info.last_name
166
- )
167
- end
168
- user
169
- end
170
-
171
- def find_for_local_auth(auth, signed_in_resource=nil)
172
- user = User.where(:provider => auth.provider, :uid => auth.uid).first
173
- unless user
174
- user = User.create(display_name:auth.full_name,
175
- uid:auth.uid,
176
- provider:auth.provider,
177
- username:auth.uid,
178
- email:auth.email,
179
- password:auth.password,
180
- first_name:auth.first_name,
181
- last_name:auth.last_name
182
- )
183
- end
184
- user
185
- end
186
- end
187
- #END CLASS METHODS
188
- end
189
- end
190
- end
@@ -1,47 +0,0 @@
1
- module Bpluser
2
- module Concerns
3
- module Validatable
4
- extend ActiveSupport::Concern
5
- VALIDATIONS = %i(validates_presence_of validates_format_of validates_confirmation_of validates_length_of).freeze
6
- #BEGIN INCLUDED
7
- included do
8
- validates_presence_of :email, if: [:email_required?, :email_not_required?]
9
- #validates_uniqueness_of :email, allow_blank: true, if: :email_changed?
10
- validates_format_of :email, with: email_regexp, allow_blank: true, if: [:email_changed?, :email_not_required?]
11
-
12
- validates_presence_of :password, if: :password_required?
13
- validates_confirmation_of :password, if: :password_required?
14
- validates_length_of :password, within: password_length, allow_blank: true
15
-
16
- #INSTANCE METHODS
17
- protected
18
- def password_required?
19
- !persisted? || !password.nil? || !password_confirmation.nil?
20
- end
21
-
22
- def email_required?
23
- true
24
- end
25
- end
26
- #END INCLUDED
27
-
28
- #BEGIN CLASS METHODS
29
- class_methods do
30
- ::Devise::Models.config(self, :email_regexp, :password_length)
31
-
32
- def required_fields(klass)
33
- []
34
- end
35
-
36
- # def assert_validations_api!(base) #:nodoc:
37
- # unavailable_validations = VALIDATIONS.select { |v| !base.respond_to?(v) }
38
- #
39
- # unless unavailable_validations.empty?
40
- # raise "Could not use :validatable module since #{base} does not respond " <<
41
- # "to the following methods: #{unavailable_validations.to_sentence}."
42
- # end
43
- # end
44
- end
45
- end
46
- end
47
- end
@@ -1,213 +0,0 @@
1
- module Bpluser::User
2
-
3
- #DEPRECATED TO BE REMOVED UPON RELASE OF NEXT VERSION IN FAVOR OF CONCERNS
4
- def self.included(base)
5
- #, :validatable
6
- base.send :devise, :database_authenticatable, :registerable,
7
- :recoverable, :rememberable, :trackable, :omniauthable, :omniauth_providers => [:ldap, :polaris, :facebook]
8
- #base.send :attr_accessible, :provider, :username, :email, :password, :password_confirmation, :remember_me, :first_name, :last_name, :display_name, :uid
9
- base.send :has_many, :user_institutions, inverse_of: :user, dependent: :destroy, :class_name => "Bpluser::UserInstitution"
10
- base.send :has_many, :folders, :dependent => :destroy, :class_name => "Bpluser::Folder"
11
- base.extend(ClassMethods)
12
- base.send :include, InstanceMethods
13
-
14
- #Include custom validation that doesn't require email to be uniqe. Based on: https://github.com/plataformatec/devise/blob/master/lib/devise/models/validatable.rb
15
- base.send :include, Bpluser::Validatable
16
-
17
- end
18
-
19
- module ClassMethods
20
- def find_for_ldap_oauth(auth_response, signed_in_resource=nil)
21
-
22
-
23
- ldap_raw_details = auth_response[:extra][:raw_info]
24
- ldap_info_details = auth_response[:info]
25
-
26
- user = User.where(:provider => auth_response.provider, :uid => ldap_raw_details.samaccountname[0].downcase).first
27
-
28
- #first_name:ldap_info_details.first_name,
29
- #last_name:ldap_info_details.last_name,
30
- unless user
31
- user = User.create(provider:auth_response.provider,
32
- uid:ldap_raw_details.samaccountname[0].downcase,
33
- username:ldap_raw_details.samaccountname[0].downcase,
34
- email:ldap_raw_details.mail[0].to_s.downcase,
35
- password:Devise.friendly_token[0,20],
36
- display_name: ldap_info_details.first_name + " " + ldap_info_details.last_name,
37
- first_name: ldap_info_details.first_name,
38
- last_name: ldap_info_details.last_name
39
- )
40
- end
41
- groups = user.ldap_groups
42
- groups.each do |group|
43
- if(group == "Repository Administrators")
44
- superuser_role = Role.where(:name=>'superuser').first
45
- if(superuser_role == nil)
46
- superuser_role = Role.create(:name=>"superuser")
47
- end
48
- user.roles << superuser_role unless user.roles.include?(superuser_role)
49
- user.save!
50
-
51
- admin_role = Role.where(:name=>'admin').first
52
- if(admin_role == nil)
53
- admin_role = Role.create(:name=>"admin")
54
- end
55
- user.roles << admin_role unless user.roles.include?(admin_role)
56
- user.save!
57
- end
58
-
59
- end
60
-
61
- user
62
- end
63
-
64
- def find_for_polaris_oauth(auth_response, signed_in_resource=nil)
65
- polaris_raw_details = auth_response[:extra][:raw_info]
66
- polaris_info_details = auth_response[:info]
67
-
68
- user = User.where(:provider => auth_response.provider, :uid => auth_response[:uid]).first
69
-
70
- #first_name:ldap_info_details.first_name,
71
- #last_name:ldap_info_details.last_name,
72
- unless user
73
- email_value = polaris_info_details[:email].present? ? polaris_info_details[:email] : ''
74
- #For some reason, User.create has no id set despite that intending to be autocreated. Unsure what is up with that. So trying this.
75
- user = User.new(provider:auth_response.provider,
76
- uid:auth_response[:uid],
77
- username:polaris_info_details[:first_name],
78
- email:email_value,
79
- password:Devise.friendly_token[0,20],
80
- display_name:polaris_info_details[:first_name] + " " + polaris_info_details[:last_name],
81
- first_name: polaris_info_details[:first_name],
82
- last_name: polaris_info_details[:last_name]
83
-
84
- )
85
- user.save!
86
-
87
- end
88
- user
89
- end
90
-
91
- def find_for_facebook_oauth(auth, signed_in_resource=nil)
92
- user = User.where(:provider => auth.provider, :uid => auth.uid).first
93
- unless user
94
- user = User.create(display_name:auth.extra.raw_info.name,
95
- uid:auth.uid,
96
- provider:auth.provider,
97
- username:auth.info.nickname,
98
- email:auth.info.email,
99
- password:Devise.friendly_token[0,20] ,
100
- first_name:auth.extra.raw_info.first_name,
101
- last_name:auth.extra.raw_info.last_name
102
- )
103
- end
104
- user
105
- end
106
-
107
- def find_for_local_auth(auth, signed_in_resource=nil)
108
- user = User.where(:provider => auth.provider, :uid => auth.uid).first
109
- unless user
110
- user = User.create(display_name:auth.full_name,
111
- uid:auth.uid,
112
- provider:auth.provider,
113
- username:auth.uid,
114
- email:auth.email,
115
- password:auth.password,
116
- first_name:auth.first_name,
117
- last_name:auth.last_name
118
- )
119
- end
120
- user
121
- end
122
-
123
-
124
-
125
-
126
- # This method should find User objects using the user_key you've chosen.
127
- # By default, uses the unique identifier specified in by devise authentication_keys (ie. find_by_id, or find_by_email).
128
- # You must have that find method implemented on your user class, or must override find_by_user_key
129
- #def find_by_user_key(key)
130
- #self.send("find_by_#{Devise.authentication_keys.first}".to_sym, key)
131
- #end
132
- end
133
-
134
- #has_and_belongs_to_many :groups
135
-
136
- # Method added by Blacklight; Blacklight uses #to_s on your
137
- # user class to get a user-displayable login/identifier for
138
- # the account.
139
-
140
- # The following methods will be included in any active model object
141
- # that calls "is_blacklight_user"
142
- module InstanceMethods
143
-
144
-
145
- def to_s
146
- self.username
147
- end
148
-
149
- def name
150
- return self.username rescue self.display_name.titleize
151
- end
152
-
153
- def user_key
154
- send(Devise.authentication_keys.first)
155
- end
156
-
157
-
158
- def ldap_groups
159
- #Hydra::LDAP.groups_for_user(username + ",dc=psu,dc=edu")
160
- #['archivist', 'admin_policy_object_editor']
161
-
162
- Hydra::LDAP.groups_for_user(Net::LDAP::Filter.eq('samaccountname', self.username), ['memberOf']) { |result| result.first[:memberOf].select{ |y| y.starts_with? 'CN=' }.map{ |x| x.sub(/^CN=/, '').sub(/,OU=Private Groups,DC=private,DC=bpl,DC=org/, '').sub(/,OU=Distribution Lists/, '').sub(/,OU=Security Groups/, '') } } rescue []
163
- end
164
-
165
- def populate_attributes
166
-
167
- end
168
-
169
- def default_user_groups
170
- # # everyone is automatically a member of the group 'public'
171
- #['public', 'test']
172
- end
173
-
174
- def get_uploads_collection
175
- query="rightsMetadata_edit_access_machine_person_t:#{uid} AND title_s:Uploads AND has_model_s:info\\:fedora/afmodel\\:DILCollection"
176
- ActiveFedora::SolrService.query(query, {:fl=>'id title_t'})
177
- end
178
-
179
- def get_details_collection
180
- query="rightsMetadata_edit_access_machine_person_t:#{uid} AND title_s:Details AND has_model_s:info\\:fedora/afmodel\\:DILCollection"
181
- ActiveFedora::SolrService.query(query, {:fl=>'id title_t'})
182
- end
183
-
184
- def collections
185
- query="rightsMetadata_edit_access_machine_person_t:#{uid} AND NOT title_t:Uploads AND NOT title_t:Details AND has_model_s:info\\:fedora/afmodel\\:DILCollection"
186
- ActiveFedora::SolrService.query(query, {:fl=>'id title_t'})
187
- end
188
-
189
- def existing_folder_item_for (document_id)
190
- self.folders.find do |fldr|
191
- fldr.folder_items.find do |fldr_itm|
192
- return fldr_itm if fldr_itm.document_id == document_id
193
- end
194
- end
195
- end
196
-
197
- def superuser?
198
- roles.where(name: 'superuser').exists?
199
- end
200
-
201
- def permanent_account?
202
- return self.provider != 'digital_stacks_temporary'
203
- end
204
-
205
- def email_not_required?
206
- if self.provider != 'digital_stacks_temporary' and self.provider != 'polaris'
207
- return true
208
- end
209
- return false
210
- end
211
-
212
- end
213
- end
@@ -1,6 +0,0 @@
1
- module Bpluser
2
- class UserInstitution < ApplicationRecord
3
- self.table_name = "user_institutions"
4
- belongs_to :user, inverse_of: :user_institutions
5
- end
6
- end
@@ -1,65 +0,0 @@
1
- #By default, devise requires an email to be unique. I want the email checks but need to remove the uniqueness...
2
- module Bpluser::Validatable
3
- #DEPRECATED TO BE REMOVED UPON RELAESE OF NEXT VERSION IN FAVOR OF CONCERNS
4
- # Validatable creates all needed validations for a user email and password.
5
- # It's optional, given you may want to create the validations by yourself.
6
- # Automatically validate if the email is present, unique and its format is
7
- # valid. Also tests presence of password, confirmation and length.
8
- #
9
- # == Options
10
- #
11
- # Validatable adds the following options to devise_for:
12
- #
13
- # * +email_regexp+: the regular expression used to validate e-mails;
14
- # * +password_length+: a range expressing password length. Defaults to 8..72.
15
- #
16
- # All validations used by this module.
17
-
18
- VALIDATIONS = [:validates_presence_of, :validates_format_of,
19
- :validates_confirmation_of, :validates_length_of].freeze
20
-
21
- def self.required_fields(klass)
22
- []
23
- end
24
-
25
- def self.included(base)
26
- base.extend ClassMethods
27
- assert_validations_api!(base)
28
-
29
- base.class_eval do
30
- validates_presence_of :email, if: [:email_required?, :email_not_required?]
31
- #validates_uniqueness_of :email, allow_blank: true, if: :email_changed?
32
- validates_format_of :email, with: email_regexp, allow_blank: true, if: [:email_changed?, :email_not_required?]
33
-
34
- validates_presence_of :password, if: :password_required?
35
- validates_confirmation_of :password, if: :password_required?
36
- validates_length_of :password, within: password_length, allow_blank: true
37
- end
38
- end
39
-
40
- def self.assert_validations_api!(base) #:nodoc:
41
- unavailable_validations = VALIDATIONS.select { |v| !base.respond_to?(v) }
42
-
43
- unless unavailable_validations.empty?
44
- raise "Could not use :validatable module since #{base} does not respond " <<
45
- "to the following methods: #{unavailable_validations.to_sentence}."
46
- end
47
- end
48
-
49
- protected
50
-
51
- # Checks whether a password is needed or not. For validations only.
52
- # Passwords are always required if it's a new record, or if the password
53
- # or confirmation are being set somewhere.
54
- def password_required?
55
- !persisted? || !password.nil? || !password_confirmation.nil?
56
- end
57
-
58
- def email_required?
59
- true
60
- end
61
-
62
- module ClassMethods
63
- ::Devise::Models.config(self, :email_regexp, :password_length)
64
- end
65
- end
@@ -1,37 +0,0 @@
1
- module Bpluser
2
- class Routes
3
- def initialize(router, options)
4
- @router = router
5
- @options = options
6
- end
7
-
8
- def draw
9
- route_sets.each do |r|
10
- self.send(r)
11
- end
12
- end
13
-
14
- protected
15
-
16
- def add_routes &blk
17
- @router.instance_exec(@options, &blk)
18
- end
19
-
20
- def route_sets
21
- (@options[:only] || default_route_sets) - (@options[:except] || [])
22
- end
23
-
24
- def default_route_sets
25
- [:omniauth_callbacks]
26
- end
27
-
28
- module RouteSets
29
- def omniauth_callbacks
30
- add_routes do |options|
31
- resources :omniauth_callbacks
32
- end
33
- end
34
- end
35
- include RouteSets
36
- end
37
- end