bpluser 0.1.19 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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 +132 -158
  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