bpluser 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/models/bpluser/user.rb +4 -1
- data/lib/bpluser/validatable.rb +65 -0
- data/lib/bpluser/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f4ab974f23262f36d86356fc2d1d05e2ee46abba
|
4
|
+
data.tar.gz: fda00536fcbafb091456ea510679609db31b3f27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0666213d531153a61e6bdde7d79921aec1cdf6001a0f669f1fc3e2c8ab00d90fa7e7d2925a0801a21ac538549b6e9b585f0833ebc4a152eca1901d2fb904d5c
|
7
|
+
data.tar.gz: b25788d108f7718c6aa0fdb79480452fe97b4f0a8f86ec5ba3ebbe195914f60c388ee131322c471e9423f7adb5d40e5600c82f0463f4cf8c2f42caa854e4b551
|
data/app/models/bpluser/user.rb
CHANGED
@@ -2,14 +2,17 @@ module Bpluser::User
|
|
2
2
|
|
3
3
|
|
4
4
|
def self.included(base)
|
5
|
+
#, :validatable
|
5
6
|
base.send :devise, :database_authenticatable, :registerable,
|
6
|
-
:recoverable, :rememberable, :trackable, :
|
7
|
+
:recoverable, :rememberable, :trackable, :omniauthable, :omniauth_providers => [:ldap, :polaris, :facebook]
|
7
8
|
#base.send :attr_accessible, :provider, :username, :email, :password, :password_confirmation, :remember_me, :first_name, :last_name, :display_name, :uid
|
8
9
|
base.send :has_many, :user_institutions, :class_name => "Bpluser::UserInstitution"
|
9
10
|
base.send :has_many, :folders, :dependent => :destroy, :class_name => "Bpluser::Folder"
|
10
11
|
base.extend(ClassMethods)
|
11
12
|
base.send :include, InstanceMethods
|
12
13
|
|
14
|
+
base.send :include, Bpluser::Validatable
|
15
|
+
|
13
16
|
end
|
14
17
|
|
15
18
|
module ClassMethods
|
@@ -0,0 +1,65 @@
|
|
1
|
+
#By default, devise requires an email to be unique. I want the email checks but need to remove the uniqueness...
|
2
|
+
module BplUser
|
3
|
+
# Validatable creates all needed validations for a user email and password.
|
4
|
+
# It's optional, given you may want to create the validations by yourself.
|
5
|
+
# Automatically validate if the email is present, unique and its format is
|
6
|
+
# valid. Also tests presence of password, confirmation and length.
|
7
|
+
#
|
8
|
+
# == Options
|
9
|
+
#
|
10
|
+
# Validatable adds the following options to devise_for:
|
11
|
+
#
|
12
|
+
# * +email_regexp+: the regular expression used to validate e-mails;
|
13
|
+
# * +password_length+: a range expressing password length. Defaults to 8..72.
|
14
|
+
#
|
15
|
+
module Validatable
|
16
|
+
# All validations used by this module.
|
17
|
+
VALIDATIONS = [:validates_presence_of, :validates_format_of,
|
18
|
+
:validates_confirmation_of, :validates_length_of].freeze
|
19
|
+
|
20
|
+
def self.required_fields(klass)
|
21
|
+
[]
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.included(base)
|
25
|
+
base.extend ClassMethods
|
26
|
+
assert_validations_api!(base)
|
27
|
+
|
28
|
+
base.class_eval do
|
29
|
+
validates_presence_of :email, if: :email_required?
|
30
|
+
#validates_uniqueness_of :email, allow_blank: true, if: :email_changed?
|
31
|
+
validates_format_of :email, with: email_regexp, allow_blank: true, if: :email_changed?
|
32
|
+
|
33
|
+
validates_presence_of :password, if: :password_required?
|
34
|
+
validates_confirmation_of :password, if: :password_required?
|
35
|
+
validates_length_of :password, within: password_length, allow_blank: true
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.assert_validations_api!(base) #:nodoc:
|
40
|
+
unavailable_validations = VALIDATIONS.select { |v| !base.respond_to?(v) }
|
41
|
+
|
42
|
+
unless unavailable_validations.empty?
|
43
|
+
raise "Could not use :validatable module since #{base} does not respond " <<
|
44
|
+
"to the following methods: #{unavailable_validations.to_sentence}."
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
protected
|
49
|
+
|
50
|
+
# Checks whether a password is needed or not. For validations only.
|
51
|
+
# Passwords are always required if it's a new record, or if the password
|
52
|
+
# or confirmation are being set somewhere.
|
53
|
+
def password_required?
|
54
|
+
!persisted? || !password.nil? || !password_confirmation.nil?
|
55
|
+
end
|
56
|
+
|
57
|
+
def email_required?
|
58
|
+
true
|
59
|
+
end
|
60
|
+
|
61
|
+
module ClassMethods
|
62
|
+
Devise::Models.config(self, :email_regexp, :password_length)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/lib/bpluser/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bpluser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Boston Public Library Web Services
|
@@ -137,6 +137,7 @@ files:
|
|
137
137
|
- lib/bpluser.rb
|
138
138
|
- lib/bpluser/engine.rb
|
139
139
|
- lib/bpluser/routes.rb
|
140
|
+
- lib/bpluser/validatable.rb
|
140
141
|
- lib/bpluser/version.rb
|
141
142
|
- lib/generators/bpluser/bpluser_generator.rb
|
142
143
|
- lib/generators/bpluser/templates/config/hydra-ldap.yml
|