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.
- checksums.yaml +5 -5
- data/README.md +33 -0
- data/Rakefile +34 -3
- data/app/assets/config/bpluser_manifest.js +1 -0
- data/app/assets/javascripts/bpluser/folder_tools.js +26 -0
- data/app/controllers/bookmarks_controller.rb +50 -0
- data/app/controllers/concerns/bpluser/folders_verify_user.rb +20 -0
- data/app/controllers/concerns/bpluser/omniauth_callbacks.rb +27 -0
- data/app/controllers/concerns/bpluser/registrations.rb +35 -0
- data/app/controllers/concerns/bpluser/saved_searches.rb +62 -0
- data/app/controllers/folder_items_actions_controller.rb +77 -0
- data/app/controllers/folder_items_controller.rb +97 -0
- data/app/controllers/folders_controller.rb +100 -0
- data/app/controllers/saved_searches_controller.rb +5 -0
- data/app/controllers/users/omniauth_callbacks_controller.rb +7 -0
- data/app/controllers/users/registrations_controller.rb +7 -0
- data/app/controllers/users/sessions_controller.rb +6 -0
- data/app/controllers/users_controller.rb +25 -0
- data/app/helpers/bpluser/folders_helper_behavior.rb +11 -0
- data/app/helpers/folders_helper.rb +5 -0
- data/app/models/bpluser/folder.rb +21 -10
- data/app/models/bpluser/folder_item.rb +5 -7
- data/app/models/concerns/bpluser/users.rb +71 -0
- data/app/models/concerns/bpluser/validatable.rb +34 -0
- data/app/views/bookmarks/index.html.erb +58 -0
- data/app/views/bookmarks/update.js.erb +1 -0
- data/app/views/bpluser/folders/_folder.html.erb +36 -0
- data/app/views/catalog/_constraints.html.erb +14 -0
- data/app/views/catalog/_folder_item_control.html.erb +52 -0
- data/app/views/catalog/_save_search.html.erb +8 -0
- data/app/views/devise/confirmations/new.html.erb +14 -0
- data/app/views/devise/mailer/reset_password_instructions.html.erb +13 -0
- data/app/views/devise/passwords/edit.html.erb +32 -0
- data/app/views/devise/passwords/new.html.erb +30 -0
- data/app/views/devise/registrations/edit.html.erb +82 -0
- data/app/views/devise/registrations/new.html.erb +45 -0
- data/app/views/devise/sessions/new.html.erb +72 -0
- data/app/views/devise/shared/_links.erb +29 -0
- data/app/views/folder_items/create.js.erb +1 -0
- data/app/views/folder_items/destroy.js.erb +1 -0
- data/app/views/folder_items/item_actions.js.erb +2 -0
- data/app/views/folder_items/update.js.erb +1 -0
- data/app/views/folders/_in_folder.html.erb +3 -0
- data/app/views/folders/_new_edit_form_fields.html.erb +36 -0
- data/app/views/folders/edit.html.erb +25 -0
- data/app/views/folders/index.html.erb +67 -0
- data/app/views/folders/new.html.erb +26 -0
- data/app/views/folders/public_list.html.erb +41 -0
- data/app/views/folders/show.html.erb +82 -0
- data/app/views/saved_searches/index.html.erb +55 -0
- data/app/views/search_history/index.html.erb +57 -0
- data/app/views/shared/_folder_item_actions.html.erb +54 -0
- data/app/views/shared/_folder_tools.html.erb +4 -0
- data/app/views/shared/_tools.html.erb +16 -0
- data/app/views/shared/_user_util_links.html.erb +42 -0
- data/app/views/users/show.html.erb +33 -0
- data/config/locales/bpluser.en.yml +129 -0
- data/config/routes.rb +23 -2
- data/lib/bpluser/controller.rb +61 -0
- data/lib/bpluser/devise_guests_override.rb +21 -0
- data/lib/bpluser/engine.rb +27 -1
- data/lib/bpluser/version.rb +3 -1
- data/lib/bpluser.rb +21 -15
- data/lib/generators/bpluser/controller_generator.rb +29 -0
- data/lib/generators/bpluser/devise_generator.rb +40 -0
- data/lib/generators/bpluser/install_generator.rb +62 -0
- data/lib/generators/bpluser/templates/config/initializers/{devise.rb → devise.rb.bak} +0 -0
- data/lib/generators/bpluser/templates/config/locales/devise.en.yml +53 -0
- data/lib/generators/bpluser/templates/config/omniauth-polaris.yml +10 -15
- data/lib/generators/bpluser/templates/models/user.rb +3 -4
- data/lib/generators/bpluser/user_generator.rb +23 -0
- data/lib/tasks/bpluser_tasks.rake +27 -0
- metadata +131 -163
- data/app/controllers/bpluser/api_controller.rb +0 -8
- data/app/controllers/bpluser/users/omniauth_callbacks_controller.rb +0 -48
- data/app/controllers/bpluser/users/registrations_controller.rb +0 -35
- data/app/controllers/bpluser/users/sessions_controller.rb +0 -23
- data/app/models/bpluser/ability.rb +0 -22
- data/app/models/bpluser/application_record.rb +0 -5
- data/app/models/bpluser/concerns/users.rb +0 -190
- data/app/models/bpluser/concerns/validatable.rb +0 -47
- data/app/models/bpluser/user.rb~ +0 -213
- data/app/models/bpluser/user_institution.rb +0 -6
- data/app/models/bpluser/validatable.rb~ +0 -65
- data/lib/bpluser/routes.rb +0 -37
- data/lib/generators/bpluser/bpluser_generator.rb +0 -183
- data/lib/generators/bpluser/templates/config/hydra-ldap.yml +0 -33
- data/lib/generators/bpluser/templates/config/omniauth-facebook.yml +0 -14
- data/lib/generators/bpluser/templates/controllers/users/omniauth_callbacks_controller.rb +0 -3
- data/lib/generators/bpluser/templates/controllers/users/registrations_controller.rb +0 -3
- data/lib/generators/bpluser/templates/controllers/users/sessions_controller.rb +0 -3
- data/lib/generators/bpluser/templates/migrations/add_fields_to_user.rb +0 -22
- data/lib/generators/bpluser/templates/migrations/add_folder_items_to_folder.rb +0 -18
- data/lib/generators/bpluser/templates/migrations/add_folders_to_user.rb +0 -14
- data/lib/generators/bpluser/templates/migrations/create_institutions_for_users.rb +0 -16
- data/lib/generators/bpluser/templates/models/ability.rb +0 -4
- data/lib/generators/bpluser/templates/views/devise/registrations/edit.html.erb +0 -0
- data/lib/generators/bpluser/templates/views/devise/registrations/new.html.erb +0 -24
- 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
|
data/app/models/bpluser/user.rb~
DELETED
|
@@ -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,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
|
data/lib/bpluser/routes.rb
DELETED
|
@@ -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
|