bpluser 0.0.26 → 0.1.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +70 -0
- data/Gemfile +19 -0
- data/Rakefile +6 -7
- data/app/controllers/bpluser/api_controller.rb +2 -3
- data/app/controllers/bpluser/users/omniauth_callbacks_controller.rb +1 -5
- data/app/controllers/bpluser/users/registrations_controller.rb +3 -3
- data/app/models/bpluser/ability.rb +2 -2
- data/app/models/bpluser/application_record.rb +5 -0
- data/app/models/bpluser/concerns/users.rb +190 -0
- data/app/models/bpluser/concerns/validatable.rb +47 -0
- data/app/models/bpluser/folder.rb +4 -6
- data/app/models/bpluser/folder_item.rb +3 -3
- data/app/models/bpluser/user_institution.rb +3 -3
- data/bin/rails +13 -0
- data/bin/rspec +29 -0
- data/bpluser.gemspec +38 -0
- data/lib/bpluser/engine.rb +1 -0
- data/lib/bpluser/version.rb +1 -1
- data/lib/bpluser.rb +12 -2
- data/lib/generators/bpluser/templates/models/user.rb +2 -6
- data/lib/tasks/bpluser_tasks.rake +1 -1
- data/spec/dummy/.ruby-version +1 -0
- data/{test → spec}/dummy/Rakefile +2 -3
- data/spec/dummy/app/assets/config/manifest.js +4 -0
- data/{app/controllers/bpluser/registrations_controller.rb → spec/dummy/app/assets/images/.keep} +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/app/assets/javascripts/cable.js +13 -0
- data/{test/dummy/public/favicon.ico → spec/dummy/app/assets/javascripts/channels/.keep} +0 -0
- data/spec/dummy/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy/app/channels/application_cable/channel.rb +4 -0
- data/spec/dummy/app/channels/application_cable/connection.rb +4 -0
- data/{test → spec}/dummy/app/controllers/application_controller.rb +0 -1
- data/spec/dummy/app/controllers/concerns/.keep +0 -0
- data/{test → spec}/dummy/app/helpers/application_helper.rb +0 -0
- data/spec/dummy/app/jobs/application_job.rb +2 -0
- data/spec/dummy/app/mailers/application_mailer.rb +4 -0
- data/spec/dummy/app/models/application_record.rb +3 -0
- data/spec/dummy/app/models/concerns/.keep +0 -0
- data/spec/dummy/app/models/user.rb +3 -0
- data/spec/dummy/app/views/layouts/application.html.erb +15 -0
- data/spec/dummy/app/views/layouts/mailer.html.erb +13 -0
- data/spec/dummy/app/views/layouts/mailer.text.erb +1 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/bin/setup +36 -0
- data/spec/dummy/bin/update +31 -0
- data/spec/dummy/bin/yarn +11 -0
- data/spec/dummy/config/application.rb +29 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/cable.yml +10 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +61 -0
- data/spec/dummy/config/environments/production.rb +94 -0
- data/spec/dummy/config/environments/test.rb +46 -0
- data/spec/dummy/config/initializers/application_controller_renderer.rb +8 -0
- data/spec/dummy/config/initializers/assets.rb +14 -0
- data/{test → spec}/dummy/config/initializers/backtrace_silencers.rb +0 -0
- data/spec/dummy/config/initializers/content_security_policy.rb +25 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +5 -0
- data/spec/dummy/config/initializers/devise.rb +290 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/{test → spec}/dummy/config/initializers/inflections.rb +6 -5
- data/{test → spec}/dummy/config/initializers/mime_types.rb +0 -1
- data/{test → spec}/dummy/config/initializers/wrap_parameters.rb +5 -5
- data/spec/dummy/config/locales/devise.en.yml +64 -0
- data/spec/dummy/config/locales/en.yml +33 -0
- data/spec/dummy/config/puma.rb +34 -0
- data/{test → spec}/dummy/config/routes.rb +0 -1
- data/spec/dummy/config/spring.rb +6 -0
- data/spec/dummy/config/storage.yml +34 -0
- data/spec/dummy/config.ru +5 -0
- data/spec/dummy/db/migrate/20181231191301_create_users.rb +41 -0
- data/spec/dummy/db/schema.rb +39 -0
- data/spec/dummy/lib/assets/.keep +0 -0
- data/spec/dummy/log/.keep +0 -0
- data/spec/dummy/package.json +5 -0
- data/spec/dummy/public/404.html +67 -0
- data/spec/dummy/public/422.html +67 -0
- data/spec/dummy/public/500.html +66 -0
- data/spec/dummy/public/apple-touch-icon-precomposed.png +0 -0
- data/spec/dummy/public/apple-touch-icon.png +0 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/spec/models/user_spec.rb +5 -0
- data/spec/dummy/storage/.keep +0 -0
- data/spec/dummy/tmp/.keep +0 -0
- data/spec/dummy/tmp/storage/.keep +0 -0
- data/spec/rails_helper.rb +61 -0
- data/spec/spec_helper.rb +96 -0
- metadata +290 -95
- data/app/assets/javascripts/bpluser/application.js +0 -15
- data/app/assets/stylesheets/bpluser/application.css +0 -13
- data/app/controllers/bpluser/application_controller.rb +0 -4
- data/app/helpers/bpluser/application_helper.rb +0 -4
- data/app/models/bpluser/user.rb +0 -213
- data/app/models/bpluser/validatable.rb +0 -63
- data/app/views/layouts/bpluser/application.html.erb +0 -14
- data/test/bpluser_test.rb +0 -7
- data/test/dummy/README.rdoc +0 -261
- data/test/dummy/app/assets/javascripts/application.js +0 -15
- data/test/dummy/app/assets/stylesheets/application.css +0 -13
- data/test/dummy/app/views/layouts/application.html.erb +0 -14
- data/test/dummy/config/application.rb +0 -59
- data/test/dummy/config/boot.rb +0 -10
- data/test/dummy/config/environment.rb +0 -5
- data/test/dummy/config/environments/development.rb +0 -37
- data/test/dummy/config/environments/production.rb +0 -67
- data/test/dummy/config/environments/test.rb +0 -37
- data/test/dummy/config/initializers/secret_token.rb +0 -7
- data/test/dummy/config/initializers/session_store.rb +0 -8
- data/test/dummy/config/locales/en.yml +0 -5
- data/test/dummy/config.ru +0 -4
- data/test/dummy/public/404.html +0 -26
- data/test/dummy/public/422.html +0 -26
- data/test/dummy/public/500.html +0 -25
- data/test/dummy/script/rails +0 -6
- data/test/integration/navigation_test.rb +0 -10
- data/test/test_helper.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04206bee183f4ca5010dd71a07eab672510d0098
|
4
|
+
data.tar.gz: 4b8bce44344445856fdb59f1f594b2efeb4e209d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ec00eb6a9c8c925066994f37ebc76de27361d74e53db06cd959d4d95557fdfab40a149c7fe480a86138360b2e3fa4b205728ea61bdfe20821e5f2e4eb160592
|
7
|
+
data.tar.gz: 253907c67704b55ced0a3ae28060e5c1271e33f04850e3ce751b67bf68c333a9cb74e224a870fc71c847797c7dc7d4ce891098d51bbd359a3b1fba8a5a52f7ec
|
data/.gitignore
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
# Generated by default by Github #
|
2
|
+
##################################
|
3
|
+
*.rbc
|
4
|
+
*.sassc
|
5
|
+
.sass-cache
|
6
|
+
capybara-*.html
|
7
|
+
.rspec
|
8
|
+
/.bundle
|
9
|
+
/vendor/bundle
|
10
|
+
/log/*
|
11
|
+
/tmp/*
|
12
|
+
/db/*.sqlite3
|
13
|
+
/public/system/*
|
14
|
+
/coverage/
|
15
|
+
/spec/tmp/*
|
16
|
+
**.orig
|
17
|
+
rerun.txt
|
18
|
+
pickle-email-*.html
|
19
|
+
|
20
|
+
# Specific configuration files #
|
21
|
+
################################
|
22
|
+
database.yml
|
23
|
+
fedora.yml
|
24
|
+
solr.yml
|
25
|
+
role_map_cucumber.yml
|
26
|
+
role_map_development.yml
|
27
|
+
role_map_production.yml
|
28
|
+
role_map_test.yml
|
29
|
+
ark.yml
|
30
|
+
bpl_config.yml
|
31
|
+
|
32
|
+
# Files to ignore by default in Git #
|
33
|
+
#####################################
|
34
|
+
*.pdf
|
35
|
+
*.db
|
36
|
+
*.jar
|
37
|
+
*.gz
|
38
|
+
*.tar
|
39
|
+
*.zip
|
40
|
+
*.dll
|
41
|
+
*.sqlite
|
42
|
+
*.sql
|
43
|
+
*.sqlite3
|
44
|
+
*.log
|
45
|
+
# Specific Files to ignore #
|
46
|
+
############################
|
47
|
+
Thumbs.db
|
48
|
+
Icon?
|
49
|
+
.DS_Store?
|
50
|
+
.DS_Store
|
51
|
+
ehthumbs.db
|
52
|
+
.idea # Rubymine config files
|
53
|
+
/.idea/*
|
54
|
+
Gemfile.lock
|
55
|
+
|
56
|
+
# Directories to ignore #
|
57
|
+
#########################
|
58
|
+
/public/data/*
|
59
|
+
/public/batch_uploads/*
|
60
|
+
/jetty/*
|
61
|
+
/solr_conf/*
|
62
|
+
/fedora_conf/*
|
63
|
+
/hydra-jetty/*
|
64
|
+
/*jetty*
|
65
|
+
/pkg/*
|
66
|
+
|
67
|
+
# Ignore edited Linux files #
|
68
|
+
#############################
|
69
|
+
|
70
|
+
*~
|
data/Gemfile
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
# Declare your gem's dependencies in bpluser.gemspec.
|
4
|
+
# Bundler will treat runtime dependencies like base dependencies, and
|
5
|
+
# development dependencies will be added by default to the :development group.
|
6
|
+
gemspec
|
7
|
+
gem 'bootsnap', require: false
|
8
|
+
# jquery-rails is used by the dummy application
|
9
|
+
group :development, :test do
|
10
|
+
gem "jquery-rails"
|
11
|
+
end
|
12
|
+
|
13
|
+
# Declare any dependencies that are still in development here instead of in
|
14
|
+
# your gemspec. These might include edge Rails or gems from your path or
|
15
|
+
# Git. Remember to move these dependencies to your gemspec before releasing
|
16
|
+
# your gem to rubygems.org.
|
17
|
+
|
18
|
+
# To use debugger
|
19
|
+
# gem 'debugger'
|
data/Rakefile
CHANGED
@@ -1,16 +1,15 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
require 'rubygems'
|
3
1
|
begin
|
4
2
|
require 'bundler/setup'
|
5
3
|
rescue LoadError
|
6
4
|
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
7
5
|
end
|
8
6
|
|
9
|
-
|
10
|
-
Bundler::GemHelper.install_tasks
|
11
|
-
|
7
|
+
APP_RAKEFILE = File.expand_path("spec/dummy/Rakefile", __dir__)
|
12
8
|
# load rake tasks defined in lib/tasks that are not loaded in lib/active_fedora.rb
|
13
|
-
|
9
|
+
Dir['lib/tasks/*.rake'].each { |rake| load rake }
|
10
|
+
|
11
|
+
load 'rails/tasks/engine.rake'
|
14
12
|
|
13
|
+
load 'rails/tasks/statistics.rake'
|
15
14
|
|
16
|
-
task :default => :
|
15
|
+
task :default => [:spec]
|
@@ -32,10 +32,6 @@ module Bpluser::Users::OmniauthCallbacksController
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
def password
|
36
|
-
puts "here in local authentication!"
|
37
|
-
end
|
38
|
-
|
39
35
|
def facebook
|
40
36
|
# You need to implement the method below in your model (e.g. app/models/user.rb)
|
41
37
|
@user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)
|
@@ -49,4 +45,4 @@ module Bpluser::Users::OmniauthCallbacksController
|
|
49
45
|
end
|
50
46
|
end
|
51
47
|
end
|
52
|
-
end
|
48
|
+
end
|
@@ -1,7 +1,8 @@
|
|
1
1
|
module Bpluser::Users::RegistrationsController
|
2
|
+
#TODO Make this an actual controller
|
2
3
|
#< Devise::RegistrationsController
|
3
4
|
def self.included(base)
|
4
|
-
base.send :
|
5
|
+
base.send :before_action, :update_sanitized_params, :if => :devise_controller?
|
5
6
|
base.send :include, InstanceMethods
|
6
7
|
end
|
7
8
|
|
@@ -18,7 +19,7 @@ module Bpluser::Users::RegistrationsController
|
|
18
19
|
params[:user][:uid] = params[:user][:email]
|
19
20
|
params[:user][:username] = params[:user][:uid]
|
20
21
|
params[:user][:display_name] = params[:user][:first_name] + " " + params[:user][:last_name]
|
21
|
-
if User.where(:provider => params[:user][:provider], :uid => params[:user][:email]).
|
22
|
+
if User.where(:provider => params[:user][:provider], :uid => params[:user][:email]).exists?
|
22
23
|
flash[:error] = "An account with that email (#{params[:user][:email]}) already exists. Please sign in or click the \"Forgot your password?\" link below."
|
23
24
|
redirect_to new_user_session_path
|
24
25
|
else
|
@@ -30,6 +31,5 @@ module Bpluser::Users::RegistrationsController
|
|
30
31
|
def resource_params
|
31
32
|
params.require(:user).permit(:username, :email, :first_name, :last_name, :provider, :display_name, :password, :password_confirmation, :uid)
|
32
33
|
end
|
33
|
-
|
34
34
|
end
|
35
35
|
end
|
@@ -0,0 +1,190 @@
|
|
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, dependent: :destroy, :class_name => "Bpluser::UserInstitution"
|
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
|
@@ -0,0 +1,47 @@
|
|
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,8 +1,8 @@
|
|
1
1
|
module Bpluser
|
2
|
-
class Folder <
|
2
|
+
class Folder < ApplicationRecord
|
3
3
|
|
4
|
-
belongs_to :user,
|
5
|
-
has_many :folder_items, :dependent => :destroy, :class_name => "Bpluser::FolderItem"
|
4
|
+
belongs_to :user, inverse_of: :folders, class_name: "::User"
|
5
|
+
has_many :folder_items, inverse_of: :folder ,:dependent => :destroy, :class_name => "Bpluser::FolderItem"
|
6
6
|
|
7
7
|
validates :user_id, :presence => true
|
8
8
|
#validates :title, :presence => true, :length => {:maximum => 40}
|
@@ -13,9 +13,7 @@ module Bpluser
|
|
13
13
|
#attr_accessible :id, :title, :description, :visibility
|
14
14
|
|
15
15
|
def has_folder_item (document_id)
|
16
|
-
self.folder_items.
|
17
|
-
return fldr_itm if fldr_itm.document_id == document_id
|
18
|
-
end
|
16
|
+
self.folder_items.where(document_id: document_id) if self.folder_items.where(document_id: document_id).exists?
|
19
17
|
end
|
20
18
|
|
21
19
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module Bpluser
|
2
|
-
class FolderItem <
|
2
|
+
class FolderItem < ApplicationRecord
|
3
3
|
#attr_accessible :document_id
|
4
4
|
|
5
|
-
belongs_to :folder, :class_name => "Bpluser::Folder"
|
5
|
+
belongs_to :folder, inverse_of: :folder_items, :class_name => "Bpluser::Folder"
|
6
6
|
|
7
7
|
validates :folder_id, :presence => true
|
8
8
|
validates :document_id, :presence => true
|
@@ -12,4 +12,4 @@ module Bpluser
|
|
12
12
|
end
|
13
13
|
|
14
14
|
end
|
15
|
-
end
|
15
|
+
end
|
data/bin/rails
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# This command will automatically be run when you run "rails" with Rails gems
|
3
|
+
# installed from the root of your application.
|
4
|
+
|
5
|
+
ENGINE_ROOT = File.expand_path('..', __dir__)
|
6
|
+
ENGINE_PATH = File.expand_path('../lib/bpluser/engine', __dir__)
|
7
|
+
APP_PATH = File.expand_path('../spec/dummy/config/application', __dir__)
|
8
|
+
# Set up gems listed in the Gemfile.
|
9
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
|
10
|
+
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
11
|
+
|
12
|
+
require 'rails/all'
|
13
|
+
require 'rails/engine/commands'
|
data/bin/rspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rspec' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rspec-core", "rspec")
|
data/bpluser.gemspec
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
|
3
|
+
# Maintain your gem's version:
|
4
|
+
require "bpluser/version"
|
5
|
+
|
6
|
+
# Describe your gem and declare its dependencies:
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.name = "bpluser"
|
9
|
+
s.version = Bpluser::VERSION
|
10
|
+
s.authors = ["Boston Public Library Web Services"]
|
11
|
+
s.email = ['sanderson@bpl.org', 'bbarber@bpl.org' ]
|
12
|
+
s.homepage = "http://www.bpl.org"
|
13
|
+
s.summary = "Shared user access gem of BPL"
|
14
|
+
s.description = "Shared user access gem of BPL"
|
15
|
+
|
16
|
+
s.files = `git ls-files -z`.split("\x0")
|
17
|
+
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
19
|
+
|
20
|
+
s.required_ruby_version = '~> 2.4'
|
21
|
+
|
22
|
+
s.add_dependency "rails", '>= 5', '< 6'
|
23
|
+
s.add_dependency "omniauth", '~> 1.8.1', '< 1.9.0'
|
24
|
+
s.add_dependency "omniauth-ldap", '2.0.0'
|
25
|
+
s.add_dependency "omniauth-facebook", '5.0.0'
|
26
|
+
s.add_dependency "hydra-role-management", '1.0.0'
|
27
|
+
s.add_dependency 'devise', '4.5.0'
|
28
|
+
s.add_dependency 'devise-guests', '0.6.1'
|
29
|
+
s.add_dependency 'omniauth-polaris', '1.0.5'
|
30
|
+
|
31
|
+
s.add_development_dependency 'bundler', '>= 1.3.0'
|
32
|
+
s.add_development_dependency 'rake'
|
33
|
+
s.add_development_dependency 'active-fedora', '>= 8.0.1', '< 9'
|
34
|
+
s.add_development_dependency 'hydra-ldap', '0.1.0'
|
35
|
+
s.add_development_dependency 'rspec-rails', '~> 3.8'
|
36
|
+
s.add_development_dependency 'awesome_print'
|
37
|
+
s.add_development_dependency "sqlite3"
|
38
|
+
end
|
data/lib/bpluser/engine.rb
CHANGED
data/lib/bpluser/version.rb
CHANGED
data/lib/bpluser.rb
CHANGED
@@ -1,5 +1,15 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
begin
|
2
|
+
require 'base64'
|
3
|
+
require 'cgi'
|
4
|
+
require 'openssl'
|
5
|
+
require 'rest_client'
|
6
|
+
require 'active_support/concern' unless defined? ActiveSupport::Concern
|
7
|
+
require 'active_fedora' unless defined? ActiveFedora
|
8
|
+
require 'hydra-ldap' unless defined? Hydra::LDAP
|
9
|
+
rescue LoadError => e
|
10
|
+
raise "One more more depndencies have not been installed please install the gem referred to in this error #{e.message}"
|
11
|
+
end
|
12
|
+
require 'bpluser/engine'
|
3
13
|
module Bpluser
|
4
14
|
autoload :Routes, 'bpluser/routes'
|
5
15
|
|
@@ -1,14 +1,10 @@
|
|
1
|
-
class User <
|
2
|
-
require 'base64'
|
3
|
-
require 'cgi'
|
4
|
-
require 'openssl'
|
5
|
-
require 'rest_client'
|
1
|
+
class User < ApplicationRecord
|
6
2
|
# Connects this user object to Hydra behaviors.
|
7
3
|
include Hydra::User
|
8
4
|
# Connects this user object to Blacklights Bookmarks.
|
9
5
|
include Blacklight::User
|
10
6
|
# Connects this user object to the BPL omniauth service
|
11
|
-
include Bpluser::User
|
7
|
+
include Bpluser::Concerns::User
|
12
8
|
self.table_name = "users"
|
13
9
|
|
14
10
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
2.4.5
|
@@ -1,7 +1,6 @@
|
|
1
|
-
#!/usr/bin/env rake
|
2
1
|
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
3
2
|
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
4
3
|
|
5
|
-
|
4
|
+
require_relative 'config/application'
|
6
5
|
|
7
|
-
|
6
|
+
Rails.application.load_tasks
|
data/{app/controllers/bpluser/registrations_controller.rb → spec/dummy/app/assets/images/.keep}
RENAMED
File without changes
|